Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 01/06/2011, 10h56   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2011
Messages : 85
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 85
Points : 14
Points : 14
Par défaut récupérer les données d'un champ

Bonjour tout le monde

J'aimerais copier les données d'une table "prospects" dans une autre "T-clients", j'ai donc tout d'abord essayé de récupérer les données correspondant à un numero de prospect, mais lorsque je veux recupérer ce numero d'un champ de mon formulaire ça me pose problème... le code compile mais il y a une erreur à l'execution.

mon code VBA est :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
    Dim req As DAO.QueryDef
    Dim rst As DAO.Recordset
    Dim num As String
 
    Set req = CurrentDb.QueryDefs("requete essai")
    Set rst = req.OpenRecordset()
    With rst
 
        num = rst("[numero]")
       MsgBox "Le num est " & num
 
        .Close
    End With
ma requete "requete essai" est :
Code :
1
2
3
SELECT Prospects.N°_prospect AS numero
FROM (Prospects INNER JOIN [T-Devis] ON Prospects.N°_prospect=[T-Devis].N°_prospect) INNER JOIN [Conf-Cde] ON [T-Devis].N°_Devis=[Conf-Cde].N°_devis
WHERE ((([Conf-Cde].N°_Conf_Cde)=[Formulaires]![F-confirmation cde]![num_conf_cde]));
Si vous avez des propositions de codes faites moi signe svp
stagiaire88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 12h12   #2
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Salut,

Quel type de message d'erreur tu as ?

Ton code vba se trouve dans un module, dans un formulaire (lequel) ?

Mais à première vu, cela pourrait ressembler à cela :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim req As DAO.QueryDef
Dim rst As DAO.Recordset
Dim num As String
 
num = ""
 
Set req = CurrentDb.QueryDefs("requete essai")
Set rst = CurrentDb.OpenRecordset(req)
While Not rst.EOF
    num = num & chr(13) & rst.Fields(0) 'ligne à remplacer par ton code d'insertion dans la table T_CLIENT
    rst.MoveNext
Wend
rst.Close
Set rst = Nothing
MsgBox num
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h17   #3
Membre confirmé
 
Homme
Développeur amateur
Inscription : mars 2009
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur amateur

Informations forums :
Inscription : mars 2009
Messages : 176
Points : 255
Points : 255
Bonjour tout le monde,

--->zoom61 : je crois que tu as oublié d'ouvrir le recordset dans ton code

Cordialemenbt
reedy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h23   #4
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Correction faite.
Merci.

Citation:
Envoyé par reedy Voir le message
--->zoom61 : je crois que tu as oublié d'ouvrir le recordset dans ton code
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h54   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2011
Messages : 85
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 85
Points : 14
Points : 14
le message d'erreur est : "cette application a été arrêtée à cause d'une erreur d'exécution. Elle ne peut pas être continuée et va être fermée."

et ce code est dans un formulaire

Zoom61 pourrais-je avoir une petite explication du code ainsi que la ligne à modifier svp ? je comprend pas tout :/
et le message d'erreur ne change pas
stagiaire88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 14h20   #6
Membre éprouvé
 
Homme
Inscription : octobre 2007
Messages : 324
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 324
Points : 440
Points : 440
Citation:
Envoyé par zoom61 Voir le message
Heu je crois que c'est plutôt ça non dans le code?
Citation:
Envoyé par zoom61 Voir le message
Sinon pour le problème en soit, je vois pas trop pourquoi c'est si compliqué à faire...
Psychopathe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 18h23   #7
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Code :
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
Dim req As DAO.QueryDef
Dim rst As DAO.Recordset
Dim num As String
 
num = ""
 
'si le code est dans le même formulaire tu peux faire comme cela
SQL = "SELECT Prospects.N°_prospect AS numero
FROM (Prospects INNER JOIN [T-Devis] ON Prospects.N°_prospect=[T-Devis].N°_prospect) INNER JOIN [Conf-Cde] ON [T-Devis].N°_Devis=[Conf-Cde].N°_devis
WHERE ((([Conf-Cde].N°_Conf_Cde)=" & [num_conf_cde] & "));"
Set req = CurrentDb.QueryDefs(SQL) 
 
'si le code n'est pas dans le même formulaire 
Set req = CurrentDb.QueryDefs("requete essai")
 
Set rst = CurrentDb.OpenRecordset(req)
 
'je teste si la requête est finie ou pas
While Not rst.EOF
    'je mets la valeur du champ dans la variable num
    num = num & chr(13) & rst.Fields(0) 'ligne à remplacer par ton code d'insertion dans la table T_CLIENT
    'je passe à l'enregistrement suivant
    rst.MoveNext
Wend
'je ferme la requête
rst.Close
Set rst = Nothing
MsgBox num
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 08h32   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2011
Messages : 85
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 85
Points : 14
Points : 14
merci pour le code, mais ça ne marche toujours pas, cette fois j'ai une erreur de compilation à la ligne

Code :
Set rst = CurrentDb.OpenRecordset(req)
mais je ne comprend toujours pas par quoi dois-je remplacer :
Code :
num = num & chr(13) & rst.Fields(0)
expliquez moi svp
stagiaire88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 07h44   #9
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Petite correction dans le code :
Code :
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
Dim req As DAO.QueryDef
Dim rst As DAO.Recordset
Dim num As String
 
num = ""
 
'si le code est dans le même formulaire tu peux faire comme cela
SQL = "SELECT Prospects.N°_prospect AS numero
FROM (Prospects INNER JOIN [T-Devis] ON Prospects.N°_prospect=[T-Devis].N°_prospect) INNER JOIN [Conf-Cde] ON [T-Devis].N°_Devis=[Conf-Cde].N°_devis
WHERE ((([Conf-Cde].N°_Conf_Cde)=" & [num_conf_cde] & "));"
Set req = CurrentDb.QueryDefs(SQL) 
Set rst = CurrentDb.OpenRecordset(req)
 
'si le code n'est pas dans le même formulaire 
Set rst = CurrentDb.OpenRecordset("requete essai")
 
 
'je teste si la requête est finie ou pas
While Not rst.EOF
    'je mets la valeur du champ dans la variable num
    num = num & chr(13) & rst.Fields(0) 'ligne à remplacer par ton code d'insertion dans la table T_CLIENT
    'je passe à l'enregistrement suivant
    rst.MoveNext
Wend
'je ferme la requête
rst.Close
Set rst = Nothing
MsgBox num
Pour ce qui est de la ligne :
Code :
1
2
'je mets la valeur du champ dans la variable num
    num = num & chr(13) & rst.Fields(0) 'ligne à remplacer par ton code d'insertion dans la table T_CLIENT
je pense que tu as besoin de quelque chose comme cela :
Code :
docmd.runsql "INSERT INTO  T_CLIENT (CHAMP) VALUES '" & rst.Fields(0) & "'"
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 11h47   #10
Candidat au titre de Membre du Club
 
Inscription : mai 2011
Messages : 85
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 85
Points : 14
Points : 14
Bonjour, merci pour votre réponse

Il n'y a aucune erreur de compilation, mais à l'execution j'ai toujours le message "Cette application a été arrêtée à cause d'une erreur d'execution. Elle ne peut pas continuer et va être fermée."

Aillant fais plein de Msgbox et mis du code en commentaire pour trouver où est le problème, j'ai remarqué que l'erreur se produit à la ligne:

Code :
Set rst = CurrentDb.OpenRecordset("requete essai")
j'ai donc essayé la solution en mettant directement la requête SQL, mais ça ne marche pas non plus :/
stagiaire88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h56.


 
 
 
 
Partenaires

Hébergement Web