IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

[WD9] Enregistrer donnée d'une table dans base Access


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut [WD9] Enregistrer donnée d'une table dans base Access
    Bonjour tout le monde,

    Ma table(tableau de mon application) correspond aux actes ou Produits dont on a besoin lors d'une intervention.
    Cette Table se remplit de deux manière :
    * Lorsqu'on choisit le numéro d'intervention c'est à dire si des actes ou produit correspondent déja à l'intervention.
    * Lorsqu'on click sur un bouton (qui ouvre une autre fenêtre....) pour les actes et un autre pour les produits.

    J'aimerais que lorsque je clique sur un autre bouton "Valider" que cela enregistre les ajouts effectués par le clique des boutons.

    Je sait qu'il existe TableEnregistre mais il me dise que mon tableau n'est pas relié à un fichié mais je peux difficilement le relié à un fichier vu qu'il y en a deux. (LIGNE_MO_ATELIER et LIGNE_PRODUIT_ATELIER).
    Puis j'ai penssé utiliser la fonction Nouveau mais le problème c'est que lorsque mon tableau se remplit selon le numéro de l'intervention j'utilise la fonction TableAjouteLigne et pareil lorsque c'est par les boutons.

    Je sait pas comment faire pour dire qu'il faut enregistrer les Actes nouveau dans la table (de la base) LIGNE_MO_ATELIER et les Produits nouveau dans la table(base) LIGNE_PRODUIT_ATELIER ??

    Merci d'avance!!

  2. #2
    Membre expérimenté Avatar de Gilles_69
    Inscrit en
    Décembre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 209
    Par défaut
    Si j'ai bien compris ton problème, tu as une table mémoire qui se remplie avec des enregistrements provenant de différentes tables fichiers. Et tu voudrais pouvoir enregistrer le contenu de ta table mémoire dans les différentes tables fichiers.
    Le plus simple à mon avis est de mettre une colonne cachée dans ta table mémoire que tu initialise par "A" ou "P" selon les cas. Par la suite, il te sera facile de parcourir ta table mémoire et de faire les ajouts dans tes différentes tables fichiers par la lecture de cette colonne cachée.

    A+

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut réponse à Gilles_69
    Bonjour,

    merci pour ta réponse.

    Le plus simple à mon avis est de mettre une colonne cachée dans ta table mémoire que tu initialise par "A" ou "P" selon les cas
    Dans mon tableau j'ai une colonne qui s enomme "Acte_ou_Produit".

    Voici quelques explications en espérant être plus clairs :
    Ci joint dans le document word, le schéma de ma base Access et la fenêtre de mon application...
    Ma fenêtre correspond au suivi des interventions donc dans cette fenêtre, plusieurs étapes :
    * On choisi différente chose......
    * On choisi un numéro d'intervention déja existant car créé dans une autre fenêtre.
    * Grâce à ce numéro, dans mon tableau nommé "Table1" s'affiche les actes déja enregistré dans ma base(si yen a eu) correspondant à ce numéro d'intervention
    * Ensuite, on a un bouton "Choix_acte" qui me permet d'ouvrir une fenêtre dans lequel on peux choisir d'autres actes.
    * Donc lorsque je clique sur mon bouton "Valider" j'aimerai que ça m'enregistre les données du tableau non existant auparavant dans la base. C'est à dire ceux qu'on a rajouter grace au bouton "Choix_acte". En oubliant pas que certains actes peuvent avoir déja été enregistré auparavant dans la base(Ceux sont ce qui ont été inséré lors du choix du numéro d'intervention).

    Voici le code que j'ai effectué pour le moment. Il me permet d'enregistrer juste les "Actes" dans la table "LIGNE_MO_ATELIER".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LIGNE_MO_ATELIER.LMA_CODEINT = Combo_CodeIntervention 
    LIGNE_MO_ATELIER.LMA_NBHUTIL = Table1.NbreHeure 
    LIGNE_MO_ATELIER.LMA_REFACTE = Table1.Référence 
    HAjoute(LIGNE_MO_ATELIER)
    Mais je pense pas que c'est bon. Car faudrais plutot que je fasse selon ceux a ne pas enregistrer...

    Donc comment procéderais tu toi?? Moi j'avais l'idée de voir lesquel on été rajouté automatiquemen lors du choix du numIntervention et enregistré que les nouveaux et pourquoi pas pouvoir enregistrer des modifications des anciens plus précisément : Si nouveaux alors on enregistre sinon on enregistre mais je sait pas trop comment faire.

    Merci d'avance!!

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    Bonjour,

    Moi j'avais l'idée de voir lesquel on été rajouté automatiquemen lors du choix du numIntervention et enregistré que les nouveaux et pourquoi pas pouvoir enregistrer des modifications des anciens plus précisément : Si nouveaux alors on enregistre sinon on enregistre mais je sait pas trop comment faire.
    Après mainte reflexion, j'ai pensé à faire de la sorte : lorsqu'on choisit un "acte" où un "produit" cela l'enregistre directement dans la base et l'insert également dans le tableau de l'application.

    Mais mon problème c'est que je ne sait pas trop ou insérer le code pour l'enregistrement dans ma base. J'hésite entre :
    * dans la procédure de la page principale(suiviInter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    PROCEDURE P_RecupActe_ou_Produit(cpReference est une chaîne, cpDesignation est une chaîne,  clType est une chaîne, clQuantité est un entier)
    nlCherche est un entier
    
    nlCherche = TableCherche( Référence, cpReference)
    SI nlCherche <> -1 ALORS
    	SI clType = "Acte" ALORS
    		Erreur( "Cet acte a déjà été ajouté !")
    	SINON
    		Erreur( "Ce produit a déjà été ajouté !")
    	FIN
    SINON
    	TableAjouteLigne(Table1, cpReference, cpDesignation, clType, clQuantité)
    	LIGNE_PRODUIT_ATELIER.LPA_CODINT = SuiviInter.Combo_CodeINTERVENTION
    	LIGNE_PRODUIT_ATELIER.LPA_REFPDT = cpReference
    	LIGNE_PRODUIT_ATELIER.LPA_QTECONS = clQuantité
    	HAjoute(LIGNE_PRODUIT_ATELIER)
    FIN
    * Dans l'événement du bouton(click) se situant dans la fenêtr eou l'on choisi l'acte que l'on veu insérer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Clic sur le bouton 'chois' se situant dans la fenêtre ou l'on choisit l'acte.
    clLibelle est une chaîne = A_DESIGNACT[ Table_ACTE]
    clType est une chaîne = "Acte"
    clReference est une chaîne = A_REFACT[ Table_ACTE]
    clQuantité est un entier = ""
    
    ExécuteTraitement(SuiviInter.P_RecupActe_ou_Produit, trtProcédure, clReference, clLibelle, clType, clQuantité)
    LIGNE_PRODUIT_ATELIER.LPA_CODINT = SuiviInter.Combo_CodeINTERVENTION
    LIGNE_PRODUIT_ATELIER.LPA_REFPDT = clReference
    LIGNE_PRODUIT_ATELIER.LPA_QTECONS = clQuantité
    HAjoute(LIGNE_PRODUIT_ATELIER)
    Pour le moment, je m'occupe que des "Actes", je verrais par la suite pour les produits. En rouge, le code que j'insert pour l'enregistrement.

    Lorsque je fais cela, il me dit la chose suivante :
    Erreur à la ligne 10 du traitement Clic sur Choix.
    Vous avez appelé la fonction HAjoute.
    Erreur de l'accès OLE DB.
    Numéro d'erreur = 170147

    Echec de la mise à jour de l'enregistrement sur la base de données.

    Détail de l'erreur système :

    Description = Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table 'PRODUIT'.
    Merci d'avance pour votre aide!!

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    En ce qui concerne l'erreur, il semblerait (mais sans la structure de la BdD ce n'est qu'une supposition) qu'il soit nécessaire de créer le produit avant d'ajouter l'acte (probablement à cause d'une liaison ?)

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    Désolé, j'ai réussis à résoudre cette erreur, c'étais parce que je m'étais trompé dans le nom des table....

    Maintenat j'ai un problème : En faite j'aimerai qu'en cliquant sur un bouton de ma fenêtre "SuiviIntervention" on enregistre les modification effectuée dans le tableau. Voici le code du boutton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    HLitRecherche(INTERVENTION, I_CODEINT, Combo_CodeINTERVENTION)
    INTERVENTION.I_COMINT = ObservationInter..ValeurAffichée
    INTERVENTION.I_KMVEHINT = KmVeh..ValeurAffichée
    INTERVENTION.I_PRISCHARG = ChaîneVersDate(Combo_DateIntervention..ValeurAffichée)
    INTERVENTION.I_DATEXPERT = ChaîneVersDate(COMBO_DATE_EXPERTISE..ValeurAffichée)
    INTERVENTION.I_DATRES = ChaîneVersDate(COMBO_DATE_RESTITUTION..ValeurAffichée)
    INTERVENTION.I_NOMEXPER = NomExpert..ValeurAffichée
    SI PAS HModifie(INTERVENTION) ALORS
    	Erreur(HErreurInfo())
    FIN
    
    TableOccurrence(Table1)
    SI Table1.Acte_ou_Produit = "Produit" ALORS
    	HLitRecherche(LIGNE_PRODUIT_ATELIER,LPA_CODINT,Combo_CodeINTERVENTION)
    	SI HModifie(LIGNE_PRODUIT_ATELIER) ALORS
    		LIGNE_PRODUIT_ATELIER.LPA_CODINT = SuiviInter.Combo_CodeINTERVENTION
    		LIGNE_PRODUIT_ATELIER.LPA_REFPDT = Table1.Référence
    		LIGNE_PRODUIT_ATELIER.LPA_QTECONS = Table1.Quantité
    		HModifie(LIGNE_PRODUIT_ATELIER)
    	SINON
    		Erreur(HErreurInfo())
    	FIN		
    SINON
    	HLitRecherche(LIGNE_MO_ATELIER, LMA_CODEINT, Combo_CodeINTERVENTION)
    	SI HModifie(LIGNE_PRODUIT_ATELIER) ALORS
    		LIGNE_MO_ATELIER.LMA_CODEINT = SuiviInter.Combo_CodeINTERVENTION
    		LIGNE_MO_ATELIER.LMA_REFACTE = Table1.Référence
    		LIGNE_MO_ATELIER.LMA_NBHUTIL = Table1.NbreHeure
    		HModifie(LIGNE_MO_ATELIER)
    	SINON
    		Erreur(HErreurInfo())
    	FIN
    FIN
    En rouge, le code correspondant à l'enregistrement des modifications.

    Le problème c'est que parfois, il m'affiche une erreur à laquel qu'il y a problème avec le code de l'intervention...

    Donc je souhaiter savoir si pour vous mon code est bon ou s'il a besoin de modification?? S'il en a besoin, desquels??

    Merci d'avance!!

  7. #7
    Membre expérimenté Avatar de Gilles_69
    Inscrit en
    Décembre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 209
    Par défaut
    Salut,
    après tes 2 HLitRecherche il faut faire Htrouve et pas HModifie.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enregistrer les données d'une table dans une autre.
    Par STban94 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/04/2015, 11h35
  2. Enregistrer données d'une liste dans une table
    Par b.billet85 dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/04/2010, 22h18
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Enregistrer les données d'une table dans un fichier texte word ou excel
    Par maamar1979 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 14/06/2006, 13h41
  5. [VB.NET] Comment créer une table dans base de données ?
    Par ptitesouris dans le forum VB.NET
    Réponses: 3
    Dernier message: 03/05/2006, 08h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo