VB requete SQL avec plusieurs paramètres

Résolu
cs_LEXANE Messages postés 9 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 janvier 2008 - 21 juin 2007 à 11:45
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 25 juin 2007 à 09:46
bonjour,
j'ai créé une base de donnée access et  je récupère les données de la base pour  les afficher  sur une feuille excel. Pour cela, j'écris des requêtes SQL dans Access comme celle-ci qui se nomme "parent"

    SELECT Génotype.*
    FROM Génotype
    WHERE Génotype.père=nom_père;

Puis je l'appelle avec un recordset comme ce-ci:

    Set dsM = New ADODB.Recordset
    dsM.Open "parent " & nom_père, dbI, adOpenStatic, adLockReadOnly

Et cela fonctionne très bien , mais je voudrais introduire un second paramètre comme cela:

    SELECT Génotype.*

    FROM Génotype

    WHERE Génotype.père=nom_père AND Génotype.mère=nom_mère;

Donc de la même façon, j'ai essayé de l'appeller comme ça:

    Set dsM = New ADODB.Recordset

    dsM.Open "parent " & nom_père & nom_mère, dbI, adOpenStatic, adLockReadOnly

mais ça fonctionne pas , et je me retrouve avec cette erreur: 
    erreur d'exécution '-2147217900 (80040e14)'

et malheureusement je ne parviens pas à trouver le moyen de procéder, donc merci à ceux qui pourront m'aider et soyez indulgent car je suis une débutante avec visual basic

9 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
21 juin 2007 à 12:24
Sinon, tu peux toujours l'écrire comme ça :

Dim SQL as string

SQL = "SELECT Génotype.* FROM Génotype WHERE Génotype.père=" & """" & nom_père & """" & " AND Génotype.mère=" & """" & nom_mère & """"
Set dsM = New ADODB.Recordset
dsM.Open SQL, dbI, adOpenStatic, adLockReadOnly

Molenn
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 juin 2007 à 09:31
Salut,
Est ce que tout les champs sont bien de type text (ou string)
Car il est inutile (sauf erreur de ma part) d'entourer avec " " (ou ' ' ) les type  Numerique (long , int, etc..)

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 juin 2007 à 11:50
Salut,
Peu etre faut il un espace entre les deux parametres.
NOTE: Evitre les accents dans les nom de varaibles (dans le code non commenté en général)
dsM.Open "parent " & nom_pere & " " & nom_mere, dbI, adOpenStatic, adLockReadOnly

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
21 juin 2007 à 12:27
Re,
Ou plus simplement
SQL = "SELECT Génotype.* FROM Génotype WHERE Génotype.père=""" & nom_père & """ AND Génotype.mère =""" & nom_mère & """"

@+: Ju£i?n
Pensez: Réponse acceptée
0

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

Posez votre question
cs_LEXANE Messages postés 9 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 janvier 2008
21 juin 2007 à 13:15
merci beaucoup pour vos réponses, ça va énormément me servir dans mon projet
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
21 juin 2007 à 13:24
jrivet : Je me perds toujours avec les "", les """, les """" ... Ca vient sans doute du fait que la rigueur et moi ...

Donc, je sépare toujours mes """" du reste parce que, lorsque je me relis au moins, je suis sûr d'y avoir pensé. C'est pas propre, je sais, et j'en ai honte  ...

Molenn
0
cs_LEXANE Messages postés 9 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 janvier 2008
25 juin 2007 à 09:26
salut,
c'est encore moi
j'ai encore un petit problème parce que dans l'exemple que je vous ai expliqué votre solution fonctionne mais lorsque j'ai voulu l'utiliser avec une autre requête un peu plus complexe ça ne fonctionne pas et je ne comprend pas pourquoi
donc si vous comprenez d'où viens le problème merci de me prévenir parce que moi je suis perdue !!!

voici le code :
Dim Sql As String

Sql = "SELECT Parcelles.nom_parcelle, Parcelles.ligne, Parcelles.ordonnée, Parcelles.id, dernier_année_inventaire.dernière_année, Inventaire.état
FROM (([SELECT id_lieu, max(année) AS dernière_année FROM Inventaire GROUP BY Inventaire.id_lieu]. AS dernier_année_inventaire)
    INNER JOIN Inventaire ON (Inventaire.id_lieu=dernier_année_inventaire.id_lieu) AND (Inventaire.année=dernier_année_inventaire.dernière_année))
    INNER JOIN Parcelles ON Parcelles.id_lieu=Inventaire.id_lieu
WHERE Parcelles.[archive]=0 AND Parcelles.nom_parcelle=" & """" & parcelle & """" & " AND ligne=" & """" & nligne & """"   

Set dsM = New ADODB.Recordset                   
dsM.Open Sql, dbI, adOpenStatic, adLockReadOnly

et lorsque je l'exécute cela m'affiche le message d'erreur suivant :
    erreur d'exécution '-2147217913 (80040e07)'
    Type de données incompatible dans l'expression du critère
0
cs_LEXANE Messages postés 9 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 12 janvier 2008
25 juin 2007 à 09:37
c'est dans ces moments là que je me sens vraiment bête
merci de m'avoir ouvert les yeux
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 juin 2007 à 09:46
Re,
Mais y a pas de quoi, en plus c'est Lundi matin alors on n'est pas obligé d'avoir les yeux ouvert dès le lundi matin (il y a le reste de la semaine pour ca )

@+: Ju£i?n
Pensez: Réponse acceptée
0