Message d'erreur <- = -> ....

galldup Messages postés 90 Date d'inscription vendredi 18 octobre 2002 Statut Membre Dernière intervention 27 décembre 2004 - 13 nov. 2002 à 04:35
cs_PrX Messages postés 91 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 2 novembre 2005 - 14 nov. 2002 à 11:44
J'ai cree un code vba qui ouvre un recordset d'une querie. la querie en la lancant manuellement fonctionne mais par code bugg avec ce message suivant : too few parameter : 1 ???????

je conclue donc que mon probleme se trouve dans le requete SQL de ce querie mais quoi ??
Merci de m'expliquer.

Dim dbs As Database
Dim rst As DAO.Recordset

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("querie")

1 réponse

cs_PrX Messages postés 91 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 2 novembre 2005
14 nov. 2002 à 11:44
Si ta requête nécessite des paramètres d'entrée, il s'agit de les lui fournir.

Exemple :
Supposons une base de données regroupant les acteurs dans une table et leurs films dans une autre.

Acteur = {ACT_key, Nom, Prénom, Nationalité, ...}
Films = { FLM_key,Titre, Genre, Résumé,ACT_key}

Tu cherches tous les films joués par un acteur particulier.
La requête est du type :
SELECT * FROM table WHERE table.[champ] = paramètre

Ici, requête en VB :
SELECT "liste des champs que tu veux" FROM Acteur, Films WHERE [Films]![ACT_key] = [Acteur]![ACT_key]

Plutôt que d'utiliser le vieux système DAO, préfère lui ADO. (en ajoutant la biblio appropriée : ADODB)
Le code devient:
Private Sub FilmParActeur()

Dim cnx As New ADODB.Connection
Dim rc As New ADODB.Recordset
Dim query As String 'Pour ta requête
Dim ActStr As String 'Pour l'acteur
Dim Nom(2) As String
Dim ActKey As Long

ActStr = InputBox "Nom de l'acteur : ", "Acteur"
Nom = Split(ActStr," ")

'La connexion
cnx.ConectionSting = App.Path & "\mabase.mdb"
cnx.Provider = "Microsoft.Jet.Oledb.4.0"
cnx.Open

'Search for ACT_keyquerie "SELECT * FROM Acteur WHERE [Acteur]![Nom] """ & Nom(1) & """"If Nom(2) <> "" Or Nom(2) <> " " Then querie querie & " AND [Acteur]![Prénom] """ & Nom(2) & """"

'Open Recordset for Acteur
rc.Open querie, cnx, AdOpenDynamic, AdLockReadOnly
If rc.EOF = True Then Exit Sub
ActKey = rc.Fields("ACT_Key")
rc.Close

'Open Recordset for Films
querie = "SELECT * FROM Films WHERE [Films]![ACT_Key] LIKE " & ActKey
rc.Open querie, cnx, AdOPenDynamic, AdLockOptimistic
If rc.EOF =  True Then Exit Sub

For i = 0 To rc.Fields.Count - 1
Debug.Print rc.Fields(i)
Next i

rc.Close
cnx.Close
End Sub


Cette procédure permet de trouver les films d'un acteur par rapport à son nom et à son prénom, en ayant repérer la clef primaire de cette acteur.

La méthode est du même style pour DAO.
Essaie les deux méthodes, DAO et ADO.

J'espère que ça va t'aider,

A plus,

PrX, :) Beginner (to Initiate) but not Out of Order
0
Rejoignez-nous