Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/06/2011, 13h26   #1
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2011
Messages : 22
Points : 4
Points : 4
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 !
xaltar92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 15h35   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Bonjour,

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

Là, ton message est peu explicite...

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 19h56   #3
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2011
Messages : 22
Points : 4
Points : 4
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 :-)
xaltar92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 05h44   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 616
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 616
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
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
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h16   #5
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2011
Messages : 22
Points : 4
Points : 4
Bon je suis un peu perdu avec tout ça.

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

Code :
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 ?
xaltar92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h56   #6
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
La table "test" contient-elle bien un champ "blabla" de type texte ? Si oui, alors...
Humm, modifie ton code comme suit...
Debut:
Code :
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 18h25   #7
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2011
Messages : 22
Points : 4
Points : 4
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 ...
xaltar92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 09h34   #8
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Si tu travailles à l'extérieur de ta base, il fait créer un espace de travail Jet :
Code :
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 12h32   #9
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2011
Messages : 22
Points : 4
Points : 4
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 ...
xaltar92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 16h29   #10
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 19h38   #11
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2011
Messages : 22
Points : 4
Points : 4
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
xaltar92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 09h43   #12
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Code :
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.

Citation:
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 12h27   #13
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2011
Messages : 22
Points : 4
Points : 4
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 :
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 ?
xaltar92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 12h54   #14
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
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 :
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
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 22h13   #15
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2011
Messages : 22
Points : 4
Points : 4
Merci :-)
xaltar92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h06.


 
 
 
 
Partenaires

Hébergement Web