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

IHM Discussion :

[VBA - DAO]Modification de table via formulaire


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut [VBA - DAO]Modification de table via formulaire
    Bonjour,

    Je réalise une base de données dans laquelle, dans un premier temps les utilisateurs remplissent des formulaires, les données étant enregistrées dans différentes tables.
    Ensuite, je souhaite pouvoir modifier éventuellement ces tables, j'utiliser donc un formulaire (ReportSearch) qui me permet d'identifier l'ID du rapport (ReportID) avec différents critères.
    Une fois identifié, j'ouvre un formulaire dans lequel j'insère les données du rapport à l'aide d'un recordset.
    Le problème est que si je modifie les données dans le formulaire, ces modifications ne sont pas pris en compte dans les tables. (tables liées)
    J'aimerais savoir comment faire pour que les modifications soient prises en compte.

    Pour info, voici respectivement, mon code d'ouverture du formulaire me permettant les éventuelles modifications (Reportinfo), et le code qui rempli les données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "ReportInfo", acNormal, , , acFormEdit, acWindowNormal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim list As String
    Set db = CurrentDb
     
        list = "SELECT ReportID, MC_Serial FROM REPORT WHERE ReportID = " & Form_ReportSearch.Report.Column(0) & ";"
        Debug.Print list
        Set listrep = db.OpenRecordset(list, DB_OPEN_SNAPSHOT)
     
     
        ReportID = listrep(0).Value
        MC_Serial = listrep(4).Value
    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    CurrentDB, c'est pour la DB en cours, or tu nous dit que ce sont des tables liées.

    Tu ne dois plus utiliser CurrentDB, mais la db qui contient tes tables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set DB = "le chemin de ma DB"

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Le recordset fonctionne correctement, à l'ouverture du formulaire ReportInfo, les champs sont correctement renseignés.
    Le problème arrive quand je commence à modifier les valeurs manuellement dans les différentes Textbox. Car après fermeture du formulaire, je vais voir mes tables, et elles n'ont pas été modifiées.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    J'ai essayé ce code donné par Arkham 46 dans le FAQ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunCommand acCmdSaveRecord
    Mais sans succès.

  5. #5
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Citation Envoyé par Heureux-oli
    CurrentDB, c'est pour la DB en cours, or tu nous dit que ce sont des tables liées.

    Tu ne dois plus utiliser CurrentDB, mais la db qui contient tes tables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set DB = "le chemin de ma DB"
    Excuses moi Heureux-Oli, tu es sur de ce que tu avances ?
    Pour moi, les tables liées font partie intégrante de CurrentDb

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Je vais faire le test, j'ai un doute, je sais que pour les objets c'est le cas, mais pour DAO.
    Je reviens.

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Sur des tables liées, il faut utiliser le chemin de la DB et pas Currentdb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set db = OpenDatabase("C:\Local Data\Access\Forum\Testforum.mdb")

  8. #8
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Je ne voudrais pas te contredire mais j'ai des tables liées et pour l'instant je n'ai pas eu de problème avec mes recordsets, les champs sont renseignés correctement.
    Par contre c'est pour modifier mes tables que j'ai toujours le problème.
    Il me semble que d'après le FAQ le code d'Arkham était fait pour ça non ?

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Je n'affirme rien, je viens de faire quelques tests sur une table liée, et si je ne déclare pas ma db distante, rien ne se passe lorsque j'essaie d'ajouter un enregistrement.

    Ça te coûte quoi d'essayer ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Tu as raison, si tu passe par un SQL c'est bon au niveau de currentDB.

  11. #11
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Désolé je ne pensais pas que tu me disais cela dans l'optique de résoudre le pb, mais je viens d'essayer et malheuresement, pas de modifications.

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    C'est bien fait pour moi, je n'avais qu'à tout lire.

    C'est à cause de Snapshot que tu ne peux pas mettre les données à jour.

  13. #13
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Oui mais j'ai bien l'impression que c'est le seul qu'il accepte, Dynaset il n'en veut pas.

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Et si tu ne mets rien !!
    Je n'avais rien mis et c'est passé.

  15. #15
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Et non, malheureusement ça ne marche pas, dans le message d'erreur il est question de la propriété identity de ma table. Ce message apparait d'ailleurs à l'ouverture du formulaire, car le code est sur l'évènement OnLoad.

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Essaie avec ça

  17. #17
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Personne ne voit d'autres solutions, ça doit quand même être faisable, quelle est la technique habituelle pour modifier une table ?

  18. #18
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    J'avais déjà essayer mais il refuse même de m'ouvrir le formulaire.
    Quelle est la différence entre DB_OPEN_DYNASET et dbopendynaset (pareil pour dynashot)

  19. #19
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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
    Sub testdao()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim sql As String
     
     
    sql = "select * from donneepers"
     
    Set db = CurrentDb 'OpenDatabase("C:\Local Data\Access\Forum\Testforum.mdb")
    Set rs = db.OpenRecordset(sql, dbOpenDynaset)
     
    rs.AddNew
    rs.Fields(1) = "OLI01"
    rs.Fields(2) = "Oli02"
    rs.Update
     
     
    Debug.Print rs(0)
    End Sub
    C'est le code que je viens d'utiliser pour faire mes essais.

  20. #20
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Je ne suis pas un expert et j'ai du mal à comprendre l'objectif des lignes :
    rs.AddNew
    rs.Fields(1) = "OLI01"
    rs.Fields(2) = "Oli02"
    rs.Update

    Si c'est pour modifier les données, moi je voudrais pouvoir le faire manuellement via le formulaire (en tapant direct dans les textBox) et pas avec du code.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2007] Modification du table via un formulaire
    Par ataahualpa dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/10/2014, 11h04
  2. Problème de modification de tables via un formulaire
    Par maxmusix dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/05/2013, 16h08
  3. [AC-2003] Modification table via formulaire
    Par munity dans le forum VBA Access
    Réponses: 14
    Dernier message: 10/04/2009, 12h59
  4. Tri des lignes d'une Table via Formulaire
    Par kato dans le forum Access
    Réponses: 3
    Dernier message: 19/04/2006, 12h53
  5. Modification critére requête via formulaire
    Par frevale dans le forum Access
    Réponses: 1
    Dernier message: 02/11/2005, 21h30

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