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

Access Discussion :

Requête sur .accdb


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut Requête sur .accdb
    Bonjour,

    Je travaille sur un module VB pour un fichier Access. Et toutes les aides que j'ai vu mentionnent un fichier .mdb.
    Alors pour faire une requête, type insertion d'une donnée dans une table Access je suis légèrement perdu.
    Quelqu'un saurait me guider vers l'endroit du cours ou c'est indiqué ? J'ai pas trouvé :S

    Merci !

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Quel est le problème rencontré ?
    Quel code est employé ?

    Là, ton message est peu explicite...

    Argy

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Je n'ai pas de problème en fait je souhaite juste savoir comment, disposant d'un tableau rempli sous un module programmé en VB sous Access, je peux transférer ces données dans une table du même fichier Access

    Donc passer d'un tableau VB à deux dimensions à une table Access.

    Voila. Je n'ai pas encore trouvé de solution donc je n'ai pas d'erreur, je cherche juste une piste pour apprendre comment faire :-)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par xaltar92 Voir le message
    B
    Et toutes les aides que j'ai vu mentionnent un fichier .mdb.
    Et alors, les codes que tu trouveras fonctionneront avec un fichier accdb.

    Philippe

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Bon je suis un peu perdu avec tout ça.

    J'ai ceçi (j'ai essayé avec un truc très simple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim db As DAO.Database
        Set db = DBEngine.OpenDatabase("C:\monfichier.accdb")
        ' Exécution de la requête
        db.Execute "Update test Set blabla = \'ouf\' "
        Debug.Print "Records Affected = " & db.RecordsAffected
        db.Close
    Et, heu, rien ne se passe. Enfin ma table n'est pas mise à jour ...
    Auriez vous une idée déja ?

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    La table "test" contient-elle bien un champ "blabla" de type texte ? Si oui, alors...
    Humm, modifie ton code comme suit...
    Debut:
    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
     
    Option Explicit
    Sub Test()
    Dim db As DAO.Database
      On Error Goto Erreur
        Set db = DBEngine.OpenDatabase("C:\monfichier.accdb")
        db.Execute "Update test Set blabla = 'ouf'", dbFailOnError
        Debug.Print "Records Affected = " & db.RecordsAffected
        db.Close
    Sortie:
        Set db=Nothing
        Exit Sub
    Erreur:
        MsgBox Err.description, vbExclamation, Err.Number
        Resume Sortie
    End Sub
    et recommence...
    Si non, eh adapte cette table et GoTo Debut

    Argy

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Hum, alors j'ai appelé Test() mais la base ne s'actualise pas :-S
    Il n'y a pas de message d'erreur
    Et les noms des tables et des champs et du fichier .accdb sont bons ...

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Si tu travailles à l'extérieur de ta base, il fait créer un espace de travail Jet :
    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 Test()
    Dim ws                                                      As Workspace
    Dim db                                                      As DAO.Database
        On Error GoTo Erreur
        Set ws = DBEngine.CreateWorkspace("myWS", "admin", "", dbUseJet)
        Set db = ws.OpenDatabase("C:\monfichier.accdb", , False)
        db.Execute "UPDATE test SET blabla = 'ouft'", dbFailOnError
        Debug.Print "Records Affected = " & db.RecordsAffected
        db.Close
        ws.Close
    Sortie:
        Set db = Nothing
        Set ws = Nothing
        Exit Sub
    Erreur:
        MsgBox Err.Description, vbExclamation, Err.Number
        Resume Sortie
    End Sub
    Argy

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Je ne comprends pas. Pourtant j'ai bien une table test avec le champ blabla et il ne se passe toujours rien.
    J'ai l'impression que j'ai du zappé de vous dire un truc mais je ne vois pas quoi ...

    Et l'"Exterieur de la base" c'est quoi au juste ?

    J'ai créé un module Importation dans lequel j'ai le code VB. Il y'a une table "normale" si j'ose dire qui est la table "test". Le reste, je vous avoue je vois pas ......

    Je suis désolé que ca traine ...

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Ce que je veux dire c'est que si tu cherches à effectuer un UPDATE au sein de la base de données elle-même, utilise la propriété Database instanciée dans une variable ad hoc à laquelles tu affectes CurrentDB().

    En d'autres termes, il est inutile d'ouvrir la BDD "monfichier.accdb" si le code exécuté est créé dans ce même fichier.
    "A l'extérieur" signifie que tu as stocké quelque par une base "monfichier.accdb" et que tu exécutes des opérations SQL depuis un autre programme (Excel, Access, Word, VB etc...).

    Cette procédure exemple est opérationelle. Pose un "Option Explicit" en en-tête de module... si ce n'est déjà fait.

    Argy

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Okay, alors le code est effectivement au sein d'un module du fichier Access ou j'ai ma table de données ...

    Donc la première solution semble être la bonne, j'y retourne tester ....
    C'est un INSERT INTO qu'il me faut

  12. #12
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Donc la première solution semble être la bonne
    Oui, enfin le DBEngine peut rester facultatif ; il est plus propre d'user directement d'une variable objet Database.

    C'est un INSERT INTO qu'il me faut
    OUi c'est sûr que s'il n'y a pas d'enregistrement, le RecordAffected reste à 0 et sans erreur !

    Argy

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Ca marche, j'avais une coquille dans le code.
    J'ose même pas dire ou je vais me faire insulter ^^

    Donc ceci marche :

    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 Test()
    Dim ws                                                      As Workspace
    Dim db                                                      As DAO.Database
        On Error GoTo Erreur
        Set ws = DBEngine.CreateWorkspace("myWS", "admin", "", dbUseJet)
        Set db = ws.OpenDatabase("C:\Database.accdb", , False)
        db.Execute "INSERT INTO test (blabla) VALUES ('dqsdsqd')", dbFailOnError
        Debug.Print "Records Affected = " & db.RecordsAffected
        db.Close
        ws.Close
    Sortie:
        Set db = Nothing
        Set ws = Nothing
        Exit Sub
    Erreur:
        MsgBox Err.Description, vbExclamation, Err.Number
        Resume Sortie
    End Sub
    Alors plein de merci :-)

    Juste une dernière chose : la Database n'est pas actualisée tout de suite, il me faut fermer et rouvrir Access pour cela. C'est normal ?

  14. #14
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Eh oui...
    Citation Envoyé par xaltar92 Voir le message
    Juste une dernière chose : la Database n'est pas actualisée tout de suite, il me faut fermer et rouvrir Access pour cela. C'est normal ?
    Comme je te disais (te l'écrivais), si le code est exécuté au sein de la BDD elle-même, il ne faut pas réouvrir une instance de cette même base pour y faire des INSERT. C'est donc normal que tu aies à réouvrir la base pour y voir les changements mais un simple tri ferait aussi l'affaire.

    Donc ton code doit se résumer à :
    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
    Sub Test()
    Dim ws                                                 As DAO.Workspace
    Dim db                                                 As DAO.Database
        On Error GoTo Erreur
        Set db = CurrentDb()
        With db
            .Execute "INSERT INTO test (blabla) VALUES ('dqsdsqd')", dbFailOnError
            Debug.Print "Records Affected = " & .RecordsAffected
        End With
        db.Close
    Sortie:
        Set db = Nothing
        Exit Sub
    Erreur:
        MsgBox Err.Description, vbExclamation, Err.Number
        Resume Sortie
    End Sub
    Argy

  15. #15
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Merci :-)

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

Discussions similaires

  1. [ADO] Requète sur dates
    Par cdlr27 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/01/2005, 22h39
  2. Requête sur un MemData
    Par claude dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/12/2004, 10h11
  3. Requête sur date
    Par guenfood dans le forum Access
    Réponses: 11
    Dernier message: 08/12/2004, 16h11
  4. Requête sur un serveur lié
    Par Guizz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/08/2003, 11h35
  5. requête sur l'année d'une date
    Par jo77 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/07/2003, 09h28

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