[VB Access] Requête et exploitation de requêtes

Bensor Messages postés 19 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 décembre 2004 - 10 déc. 2004 à 16:12
Bensor Messages postés 19 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 décembre 2004 - 13 déc. 2004 à 11:41
Bonsoir,

Voilà, je suis en train de faire un formulaire Access et j'exécute une requête SQL en VB. Cette requête fonctionne parfaitement sous l'interpreteur Access, mais sous vb access j'obtiens le message "Argument invalide" lors du clic sur le bouton qui exécute la requête. Ensuite, j'avais l'intention d'ouvrir un 2° formulaire lors de l'appui du bouton où les champs prennent les valeurs de la requête

Voici mon code

-------------------------------------

Private Sub bt1_Click()
On Error GoTo Err_bt1_Click

If IsNull(Texte0) = False Then
Dim stLinkCriteria As String
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT Count([ETAT].[code_etat]) AS code_et, Sum([TOURNEE].[SNCF_tournee]) AS SNCFT_et, Sum([TOURNEE].[voiturevp_tournee]) AS kmT_et, Sum([TOURNEE].[avion_tournee]) AS avionT_et, Sum([TOURNEE].[location_tournee]) AS vlocT_et, Sum([TOURNEE].[taxi_tournee]) AS taxiT_et, Sum([TOURNEE].[autre_tournee]) AS autreT_etat, Sum([TOURNEE].[parking_tournee]) AS parkingT_etat, Sum([TOURNEE].[repas_tournee]) AS repas_et, Sum([TOURNEE].[repascantine_tournee]) AS repascantine_et FROM TOURNEE, ETAT WHERE [TOURNEE].[code_etat]=[ETAT].[code_etat] And [TOURNEE].[ref_om]= " + Texte0 + " ;", dbOpenDynaset)
Dim essai As String
essai = rst.Fields(0)
MsgBox essai

DoCmd.OpenForm "Formulaire2", , , stLinkCriteria



Else
MsgBox "Votre saisie est incorrecte "
End If

End Sub

-----------------------------

A savoir que même en n'executant que la requête sous vb, même en remplacant " "+Texte0+" " par l'argument d'origine, qui était 3, ça plante, et que j'ai parcouru différents forums, dont celui-ci, et que sans inclure le code relatif à la requête, le code s'execute correctement

Etant newbie en vb, je suis sûr que vous pourrez m'aider, mais ne pourrai répondre que lundi.

Merci d'avance,
Bensor.

5 réponses

cs_caspal Messages postés 14 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 22 février 2006 1
10 déc. 2004 à 22:31
Salut,

Désolé, ton code est correct, pas de plantage

pour ton 2è formulaire avec le résultat de la requête,
définir la source du formulaire sur la table "TOURNEE"
+
DoCmd.OpenForm "2èFORM", , , "requeteSQL"
sur le bouton

Bonne continuation,

CASPAL
0
Bensor Messages postés 19 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 décembre 2004
13 déc. 2004 à 10:26
Merci, mais ça ne résoud pas ce problème "d'Argument Invalide" :(
0
Bensor Messages postés 19 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 décembre 2004
13 déc. 2004 à 10:30
Le problème semble se situer à la ligne "Set rst = CurrentDb.OpenRecordset("SELECT Count([ETAT].[code_etat]) AS code_et, Sum([TOURNEE].[SNCF_tournee]) AS SNCFT_et, Sum([TOURNEE].[voiturevp_tournee]) AS kmT_et, Sum([TOURNEE].[avion_tournee]) AS avionT_et, Sum([TOURNEE].[location_tournee]) AS vlocT_et, Sum([TOURNEE].[taxi_tournee]) AS taxiT_et, Sum([TOURNEE].[autre_tournee]) AS autreT_etat, Sum([TOURNEE].[parking_tournee]) AS parkingT_etat, Sum([TOURNEE].[repas_tournee]) AS repas_et, Sum([TOURNEE].[repascantine_tournee]) AS repascantine_et FROM TOURNEE, ETAT WHERE [TOURNEE].[code_etat]=[ETAT].[code_etat] And [TOURNEE].[ref_om]= " + Texte0 + " ;", dbOpenDynaset)
"
0
Bensor Messages postés 19 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 décembre 2004
13 déc. 2004 à 10:36
Bon, j'ai essayé un nouveau truc sur un site, qui me semble plus logique vu mon expérience en java. Voici le code modifié (l'ouverture du 2° formulaire est mis en commentaires)

Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Requete_etat_total")
rst.MoveFirst
Dim essai As String

essai = rst("code_et")
MsgBox essai

or, j'obtiens le message d'erreur "Trop peu de paramètres. 1 attendu"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bensor Messages postés 19 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 13 décembre 2004
13 déc. 2004 à 11:41
Bon, à force de ne pas reussir, j'ai réduit le code au plus simple et au minimum en créant un code qui naura aucun rapport avc le programme final :

Option Compare Database

Private Sub bt1_Click()
On Error GoTo Err_bt1_Click

If IsNull(Texte0) = False Then
Dim Rst As Recordset
Set Rst = CurrentDb.OpenRecordset("AGENT")

Else
MsgBox "Votre saisie est incorrecte "
End If



Exit_bt1_Click:
Exit Sub

Err_bt1_Click:
MsgBox Err.Description
Resume Exit_bt1_Click

End Sub

J'obtiens à présent le message "Incompatibilité de type". Si je met "DAO.Recordset" à la place de "Recordset", j'obtiens le message étrange "Erreur de compilation : Type défini par l'utilisateur non défini"

A votre avis, à quoi ces erreurs sur un code fonctionnant à coup sûr sont dûes? Et comment faire fonctionner le code?

Merci,
Bensor.
0
Rejoignez-nous