Aide pour VBA
flavien
-
favien Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
favien Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour, novice en informatique je dois écrire un module sous visual basic pour l'utiliser dans access.
Le but de ce module et de concatener plusieurs valeurs de "nom commercial" de produit chimique séparées de ";" afin de me retrouver avec une liste texte de tous les produits qui peuvent passer dans un équipement de clé primaire "numéro index".
Aidé d'un peu de tout, j'ai fait ce module :
Function essai(index As Single) As String
Dim criticité As DAO.Database, rsMyRS As Recordset
Dim Inginitial As Long, valeur As String
Dim requete As String
valeur = ""
requete = "SELECT [nom commercial] FROM [transfert4 Requête] WHERE [numéro index]=" & index & ";"
Set criticité = CurrentDb
Set rsMyRS = dbMyDB.OpenRecordset(requete)
IngRecCount = rsMyRS.RecordCount
rsMyRS.MoveFirst
For Inginitial = 1 To IngRecCount
valeur = valeur & rsMyRS(Inginitial).Value & ", "
Next Inginitial
End Function
Cependant, je ne sais pas s'il est correct et ne sais pas comment l'utiliser dans ma base de données (une requête générale trié par numéro d'index).
Quelqu'un pourrait-il m'aiguiller ?
Merci d'avance
Le but de ce module et de concatener plusieurs valeurs de "nom commercial" de produit chimique séparées de ";" afin de me retrouver avec une liste texte de tous les produits qui peuvent passer dans un équipement de clé primaire "numéro index".
Aidé d'un peu de tout, j'ai fait ce module :
Function essai(index As Single) As String
Dim criticité As DAO.Database, rsMyRS As Recordset
Dim Inginitial As Long, valeur As String
Dim requete As String
valeur = ""
requete = "SELECT [nom commercial] FROM [transfert4 Requête] WHERE [numéro index]=" & index & ";"
Set criticité = CurrentDb
Set rsMyRS = dbMyDB.OpenRecordset(requete)
IngRecCount = rsMyRS.RecordCount
rsMyRS.MoveFirst
For Inginitial = 1 To IngRecCount
valeur = valeur & rsMyRS(Inginitial).Value & ", "
Next Inginitial
End Function
Cependant, je ne sais pas s'il est correct et ne sais pas comment l'utiliser dans ma base de données (une requête générale trié par numéro d'index).
Quelqu'un pourrait-il m'aiguiller ?
Merci d'avance
2 réponses
salut Flavian,
Avant " IngRecCount = rsMyRS.RecordCount ", il faut parcourir le recordset avec rsMyRS.MoveLast. Ensuite revenir au début du RS avec rsMyRS.MoveFirst. Sinon ingRegCount contiendra 0 si le RS est vide ou 1 s'il y a des enreg.
D'autre part, dans la boucle " For Inginitial = 1 To IngRecCount ", j epense qu'il faut spécifier de quel champ de ta table tu veux récupérer la valeur.
Avant " IngRecCount = rsMyRS.RecordCount ", il faut parcourir le recordset avec rsMyRS.MoveLast. Ensuite revenir au début du RS avec rsMyRS.MoveFirst. Sinon ingRegCount contiendra 0 si le RS est vide ou 1 s'il y a des enreg.
D'autre part, dans la boucle " For Inginitial = 1 To IngRecCount ", j epense qu'il faut spécifier de quel champ de ta table tu veux récupérer la valeur.
Moi perso je passerais par une boucle Do Until :
Do Until rst.EOF
valeur = valeur & rst![nom commercial] & ";"
Loop
et j'utiliserais plutot ADO plutot que DAO...
Do Until rst.EOF
valeur = valeur & rst![nom commercial] & ";"
Loop
et j'utiliserais plutot ADO plutot que DAO...
J'ai fait les modifications de move Last et MoveFirst, mais à propos de la sélection du champ de table, ne le fais-je pas dans "requete"?
De plus sais-tu comment faire un exemple, j'aimerais voir si le module fonctionne, mais je ne sais pas comment!!