Aide pour VBA

Fermé
flavien - 5 nov. 2005 à 12:40
favien Messages postés 5 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 13 novembre 2005 - 5 nov. 2005 à 13:28
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

2 réponses

Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
5 nov. 2005 à 13:16
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.

0
favien Messages postés 5 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 13 novembre 2005
5 nov. 2005 à 13:25
Merci beaucoup de t'intéresser à mon cas.

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!!
0
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...
0
favien Messages postés 5 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 13 novembre 2005
5 nov. 2005 à 13:28
Oui j'ai demandé la différence entre ADO et DAO et on m'a dit qu'il y avait des différence dans les fonctions et comme j'ai un bouquin ancien il utilise DAO plutot. Est-ce que ca changera quelque chose de mon module?

Sinon pour ta proposition, que signifie rst?
0