| |
Membro registado 62 mensagems |
|
Publicado em abril, 06 2020 - 10:17 PM |
Re bonjour à ceux qui m'ont déjà aidé, mais la je coince
Je voudrai récupérer le contenu d'un fichier HFSQL dans une table Le fichier contient une 20aine de colonnes mais je fais une requête qui ne sélectionne que le nom, prénom, Grade et Equipe.
Mon objectif changer l'équipe et sauvegarder le changement
J'ai essayé : 1/ Directement de la table grâce à la fonction cochée "Enregistrer en sortie de ligne" dans la description, rubrique Détail. rien ne change
2/ J'ai donc essayé de tricher en créant 4 champs de saisies qui se remplissent quand clique sur une ligne de la table et avec un bouton qui fait EcranversFichier (Fen_Accueil,BaseSP) Hmodifie() TableAffiche(TableSPP) la j'ai comme erreur "Aucun enregistrement en cours n'est défini pour le fichier"
Du coup, je coince sur ce truc super simple...
Merci de votre aide |
| |
| |
| | | |
|
| | |
| |
Membro registado 160 mensagems Popularité : +18 (22 votes) |
|
Publicado em abril, 06 2020 - 11:16 PM |
Salut Jérôme,
à ta place je passerai directement par une requête SQL Update au lieux de la fonction "ecranversFichier " |
| |
| |
| | | |
|
| | |
| |
Membro registado 213 mensagems Popularité : +12 (12 votes) |
|
Publicado em abril, 06 2020 - 11:38 PM |
Jerome,
Tu utilises le mot "table" et je suppose un "champ table". Si je suis en erreur ignore ma réponse.
ÉcranVersFichier - FichierVersÉcran Champ de saisie Combo. etc.
TableEnregistre - TableSupprime Pour un "champ table".
Tu peux relier ta table à ta base de données. Voir onglet "Contenu"
Puis tu relies tes colonnes à la base de données. Au besoin, tu peux masquer des colonnes (Visible non coché). Voir onglet "Liaison".
Mises à jour automatique ? Voir onglet "Détail", "Paramètres de saisie". Enregistrer en sortie de ligne (Modif.) doit être coché.
---------- En passant j'ai pris une approche différente... https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/238226-conseils-experience-238429/read.awp
Bon dev.
Serge |
| |
| |
| | | |
|
| | |
| |
Membro registado 1.144 mensagems Popularité : +50 (142 votes) |
|
Publicado em abril, 07 2020 - 12:47 AM |
Bonsoir
La proposition de Serge risque d'allonger le temps de chargement si la base de données est de type serveur, mais facile à mettre en place. La proposition de freak per est bien si on ne cherche pas séparer le code métier de l'IHM. On peut aussi utiliser des classes et des tableaux de classe...
Plusieurs pistes donc... |
| |
| |
| | | |
|
| | |
| |
Membro registado 213 mensagems Popularité : +12 (12 votes) |
|
Publicado em abril, 07 2020 - 2:46 AM |
Thierry,
Étant encore à découvrir Windev ta réponse titille ma curiosité. Le champ table n'est-il pas optimisé pour charger de lui-même depuis une base de données ? Locale ou serveur...
Si tel est le cas, quelle approche préconises-tu ?
Merci
Désolé Jérôme, je détourne légèrement sur ton sujet...
Serge |
| |
| |
| | | |
|
| | |
| |
Membro registado 62 mensagems |
|
Publicado em abril, 07 2020 - 9:54 AM |
Merci a tous Serge oui. Je parle de champs table. Mais je pensais en laissant une colonne en Saisie pouvoir la modifier Mais je comprends que ma table doit contenir toutes les colle de ma base. Et que je dois masquer celle que jebnnutilise pas. C'est ca ? Je ne colprends pas alors pourquoi il est propose de n afficher que certains champs. Mais je vais tester de suite. Encore merci. |
| |
| |
| | | |
|
| | |
| |
Membro registado 1.144 mensagems Popularité : +50 (142 votes) |
|
Publicado em abril, 07 2020 - 11:17 AM |
@Serge Lorsqu'on crée une liaison d'un fichier vers un champ table, toutes les données sont ramenés par lot. Si la table contient quelques centaines ou milliers de lignes, l'affichage dans la table sera long voire très long. Si le fichier ne contient que peu de ligne, cela peut convenir quand même. Si la base des HFSQL classic, le problème ne devrait pas se poser. Il vaut mieux créer une requête pour l'affichage (c'est immédiat) et faire le traitement de modification dans un second temps.
Quoiqu'il en soit, je précaunise toujours la séparation du code IHM et du code métier |
| |
| |
| | | |
|
| | |
| |
Membro registado 62 mensagems |
|
Publicado em abril, 07 2020 - 1:04 PM |
Un grand merci Serge. Je vais essayer cela ce soir
Je ne comprends pas toujours tous les mots que tu utilises, mais j'ai compris le sens. C'est très bien et très sympa
Je sens que mon projet est un peu trop ambitieux pour mon niveau de dev...
Je vais essayer d'avancer doucement
Merci encore |
| |
| |
| | | |
|
| | |
| |
Membro registado 62 mensagems |
|
Publicado em abril, 07 2020 - 2:21 PM |
Pardon merci Thierry Desole pour la boulette. J ai mal lu. Cest ta methode que je vais appliquer thierry |
| |
| |
| | | |
|
| | |
| |
Membro registado 213 mensagems Popularité : +12 (12 votes) |
|
Publicado em abril, 07 2020 - 2:44 PM |
Jerome,
Mais je pensais en laissant une colonne en Saisie pouvoir la modifier Et tu as raison, mais la sauvegarde ne se fait PAS par ÉcranVers fichier. De l'une ou l'autre: - Sauvegarde automatique = Onglet détail, Enregistrer en sortie de ligne (Modif.) - Traitement spécifique dans ton code = TableEnregistre.
Mais je comprends que ma table doit contenir toutes les colle de ma base. Tu n'as PAS à charger tous les détails de ta base de données dans ton champ table. Mais au besoin tu peux masquer des colonnes utiles à ton traitement / code. Par exemple une clé de parcours.
Je vais essayer d'avancer doucement Ne sois pas surpris de reculer fréquemment pour mieux avancer.
Pour mes mots, c'est probablement mon accent Québécois.
Serge |
| |
| |
| | | |
|
| | |
| |
Membro registado 213 mensagems Popularité : +12 (12 votes) |
|
Publicado em abril, 07 2020 - 2:56 PM |
Thierry,
Il vaut mieux créer une requête pour l'affichage (c'est immédiat) et faire le traitement de modification dans un second temps. J'avais pris cette approche... avant de faire sauter la requête pour un chargement automatique. Avec "l'impression" que Windev optimiserait comme pour une requête...
je préconise toujours la séparation du code IHM et du code métier Que par des requêtes ? Même pour la fenêtre propre à la gestion d'une table ciblée ?
Et donc, aucun HLit, HAjoute, HModifie et HSupprime dans ton code ?
Merci pour les précisions.
Encore une fois, désolé de polluer ton sujet Jérôme.
Serge |
| |
| |
| | | |
|
| | |
| |
Membro registado 62 mensagems |
|
Publicado em abril, 07 2020 - 5:51 PM |
Merci pour tes reponses detaillees.
Je suis surtiut en marvhe arriere la Jaimerai enfin avancer.
J ai pleiln de blocage a pleins d endroit.
Je poserai d autres post ici en fonction |
| |
| |
| | | |
|
| | |
| |
Membro registado 1.144 mensagems Popularité : +50 (142 votes) |
|
Publicado em abril, 07 2020 - 6:16 PM |
@Serge
Tout ce qui est de l'affichage je le fais avec des requêtes ou des classes. Pour les modifications / ajouts je le fais avec des classes... où avec des structures et des collections de procédures. J'évite tous les Hxx dans mes fenêtres, je déporte ce code dans des classes ou des procédures. 1/ ça sécurise mon code 2/ ça me permet de réutiliser le code (sans m'occuper de l'IHM)
Je ne fais donc pas de saisie/modification dans un champ table... mais c'est un choix personnel, cela fonctionne très bien. |
| |
| |
| | | |
|
| | |
| |
Membro registado 62 mensagems |
|
Publicado em abril, 08 2020 - 10:55 AM |
Salut Thierry
Hélas, je ne parle pas encore très bien le WLangage Je maîtrise le VB, mais on en est loin Donc le système assisté m'aide beaucoup à avancer... en marche arrière parfois |
| |
| |
| | | |
|
| | |
| |
Membro registado 62 mensagems |
|
Publicado em abril, 08 2020 - 4:09 PM |
Bon voila le résultat
J'ai créé un champs table J'ai utilisé Définir une requête maintenant J ai sélectionné toute ma base (BaseSP) J'ai fait une condition disant d'afficher que ceux dont le critère Statut est = à SPP Je choisis d'afficher que les colonnes Nom, Prénom, Grade et Equipe
Tout cela s'affiche juste dans mon champs table
Mais quand je tape quelque chose dans le champs Equipe (une lettre), que je sors de ma ligne, rien ne s'enregistre Pourtant j'ai coché saisie en cascade et Enregistrement en Sortie de ligne
Dois je ajouter un tableenregistre ??? |
| |
| |
| | | |
|
| | |
| |
Membro registado 1.144 mensagems Popularité : +50 (142 votes) |
|
Publicado em abril, 08 2020 - 4:41 PM |
Si le contenu du champ table vient du résultat d'une requête, alors le champ table n'est pas relié à un fichier de données. Donc aucune mise à jour ne peut se faire vers la base de données de manière automatique. Pour faire une mise à jour, il faut le faire par code dans l'événement de modification ou sortie de ligne du champ table, avec une requête de mise à jour.
1/ soit le champ table est relié directement à un fichier de données -> la mise à jour dans la BD est immédiate ou 2/ soit le champ table est relié à une requête --> il faut écrire le code pour faire la mise à jour dans la BD |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.886 mensagems Popularité : +227 (347 votes) |
|
Publicado em abril, 08 2020 - 5:23 PM |
Tu peux aussi exécuter ta requête avec l'option hModifieFichier
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membro registado 62 mensagems |
|
Publicado em abril, 08 2020 - 5:30 PM |
Je suis desole de vous sembler si con En fait je remplis mon champs table avec une requete pour ne pas prendre tout le monde. Donc je vais devoir faire hmodifiefichier
Merci. Je vous tiens au courant |
| |
| |
| | | |
|
| | |
| |
Membro registado 62 mensagems |
|
Publicado em abril, 08 2020 - 6:18 PM |
Je rempli mon tableau avec un filtre sur le statut des pompiers
FEN_Accueil..Plan=1 sTatut est une chaîne sTatut = "SPP" HExécuteRequête(REQ_Charge_SP,hRequêteDéfaut,sTatut) ConstruitTableFichier(TABLE_SPP,REQ_Charge_SP,hModifieFichier)
Ma requete
Je charge toute mon fichier BaseSP, je n'affiche que les colonnes Grade, Nom, Prénom et Equipe
Alors je voudrai pouvoir taper mon code dans la rubrique sortie de ligne de mon champs table, mais je ne vois pas quoi taper |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.886 mensagems Popularité : +227 (347 votes) |
|
Publicado em abril, 08 2020 - 6:32 PM |
Je commence à comprendre d'où vient le problème. Pourquoi utiliser ConstruitTableFichier ? Par ailleurs si on avait un extrait de ton MLD et le code SQL de la requête, ce serait certainement plus simple pour la suite
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |