Pb dans acces 2003

Pb dans acces 2003 - VB/VBA/VBS - Programmation

Marsh Posté le 09-09-2007 à 20:25:10    

bonjour,
 
je ne sais pas comment utiliser une variable qui contient le nom d'une requête pour dire en VBA de prendre un champ dans cette requête!
 
je m'explique normalement en VBA (sauf erreur de ma part) on fait [nom de la requête].[Nom du champ]
moi mon problème c'est que "nom de la requête" est une variable public et si je mets ma variable comme ca :
[variable pub].[Nom du champ] il me dit qu'il ne connait pas la requête!
hors le nom de ma requête est bine le bon ,j'ai vérifié.
 
"Variable pub" = string
 
j'ai essayé avec crochets, des doubles coches, des coches, des virgules, des points virgule! je me doute qu'il doit y avoir une combine, mais je ne connais pas!
 
merci d'avance pour ceux qui pourront m'aider!

Reply

Marsh Posté le 09-09-2007 à 20:25:10   

Reply

Marsh Posté le 09-09-2007 à 23:51:15    

Il y a plusieurs moyens pour faire des requêtes en VBA Access.
 
Par exemple, j'utilise ceci :

SQL_ligne = "SELECT mon_champ1 FROM ma_table" & _
            " WHERE mon_champ2 = " & "'" & mon_critere1 & "';"
Set bds = CurrentDb
Set rst = bds.OpenRecordset(SQL_ligne)
If (rst.EOF) Then
   rst.Close
   MsgBox ("Enregistement non trouvé." & Chr$(13) & "Requete: " & SQL_ligne)
   Exit Sub
End If
If Not IsNull(rst![mon_champ1]) Then MsgBox (rst.mon_champ1)
rst.Close

N.B. rst![mon_champ1] est équivalent à rst.mon_champ1
 
Cette requête est sensé ne retrouner qu'une seule ligne.
Si je souhaite récupérer plusieurs lignes, j'utilise

...
   Set rst = bds.OpenRecordset(SQL_ligne)
   Do While (Not rst.EOF)
      MsgBox (rst.mon_champ1)
   Loop

Reply

Marsh Posté le 12-09-2007 à 18:10:43    

ok merci de l'info je vais essayer cela.
si je comprend bien :
SQL_ligne est ta variable ou tu mets le nom de ta requete
 
tu ouvre ta requete  avec openrecorset et tu la met dans RST
 
et tu l'utilise comme ca :(rst![nom du champ])!
 
corrige moi si je n'ai pas compris (je un débutant en VBA)
 
merci encore

Reply

Marsh Posté le 13-09-2007 à 09:32:29    

Oui tu as compris. rst est un objet Recordset.  
C'est la méthode courante d'accès aux données et tu peux trouver beaucoup d'exemples sur le net et ce forum.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed