Syntaxe d'une requete SQL sur un Recordset

Signaler
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009
-
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009
-
Salut à tous,
à l'execution de cette requete , je recois l'erreur suivante:
un objet est requis! qui arrive sur la requete meme.
Set rslin_bn_benif = New ADODB.Recordset
Call rslin_bn_benif.Open(" select * from ligne_bncmmde_bnif where ligne_bncmmde_bnif.numeroBC=" & rsbn_benif("numeroBC") And (ligne_bncmmde_bnif.code_article = " & Combo1.Text & "", cn, 1, 2"))
Je sollicite votre aide pour savoir la cause de l'erreur.
Merci d'avance.

31 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Essaye comme çà déjà :

dim rslin_bn_benif as ADODB.RecordSet
Set rslin_bn_benif = New ADODB.Recordset 

       <strike>Call</strike> rslin_bn_benif.Open(" select * from ligne_bncmmde_bnif where ligne_bncmmde_bnif.numeroBC =" & rsbn_benif("numeroBC") And (ligne_bncmmde_bnif.code_article = " & Combo1.Text & "", cn, 1, 2"))

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

reprenons la requête:

" select * from ligne_bncmmde_bnif where ligne_bncmmde_bnif.numeroBC= "
& rsbn_benif("numeroBC") And (ligne_bncmmde_bnif.code_article = "
& Combo1.Text & "", cn, 1, 2"

çà donne en aéré :
" select * from ligne_bncmmde_bnif where ligne_bncmmde_bnif.numeroBC="
 &
rsbn_benif("numeroBC") And (ligne_bncmmde_bnif.code_article = "
 &
Combo1.Text
 &
"", cn, 1, 2"

donc déjà il y a 2 " en trop

ton And au milieu de nulle part est sensé faire quoi? il n'est pas dans ta requête

ensuite cn est déclarée?

enfin CALL se supprime tout seul en VB.NET, tu ne serais pas plutôt en VB6 ?

<li> Vous êtes ici : [infomsg.aspx Thèmes] / [infomsgf_VB-NET-VB-2005_40.aspx VB.NET et VB 2005] / [infomsgt_BASE-DONNEES_235.aspx Base de données] / [infomsgt_SQL_239.aspx SQL] / Syntaxe d'une requete SQL sur un Recordset </li>

rslin_bn_benif.Open "SELECT * FROM
ligne_bncmmde_bnif " & _
"WHERE ligne_bncmmde_bnif.numeroBC = " &  rsbn_benif!numeroBC & "
" & _
"AND
ligne_bncmmde_bnif.code_article = " & Combo1.Text & ";", cn, 1, 2

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

Salut,
Je suis en VB6 et cn est déja declarée.
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

Salut PCPT,
j'ai essayé ton code et je recois l'ereur :
type de donnees incompatible dans l'expression du critére!!
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
j'peux pas inventer tes types ^^
on a pas la base sous les yeux et on ne sait pas ce que tes contrôles contiennent
ni la raison de tes choix d'arguments "1, 2"

rslin_bn_benif.Open "SELECT * FROM ligne_bncmmde_bnif " & _
"WHERE ligne_bncmmde_bnif.numeroBC = '" &  rsbn_benif!numeroBC & "' " & _
"AND ligne_bncmmde_bnif.code_article = '" & Combo1.Text & "';", cn, 1, 2

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

Voila le code complet que j'ai utilisé, mais malheureusement ca marche encore pas!!
Code:

Dim rsbn_benif As ADODB.Recordset
Dim rslin_bn_benif As ADODB.Recordset
Dim cn As ADODB.Connection
Dim i As Integer

g.FixedRows = 1
g.Rows = 2

Set cn = New ADODB.Connection
cn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\Documents and Settings\Administrateur.INTERNET\Bureau\AL OMRANE\Omrane.MDB;"
cn.Open

Set rsbn_benif = New ADODB.Recordset

rsbn_benif.Open "Select * from Bon_commde_benif where date >=#" & DTPicker3.Value & " #AND " & _
"date <=#" & DTPicker2(0).Value & "#", cn, 1, 2
If rsbn_benif.RecordCount = 0 Then
MsgBox "pas de commande saisie entre ces dates"
Exit Sub
Else

rsbn_benif.MoveFirst

While rsbn_benif.EOF = False
Set rslin_bn_benif = New ADODB.Recordset
'Call rslin_bn_benif.Open(" select * from ligne_bncmmde_bnif where ligne_bncmmde_bnif.numeroBC=" & rsbn_benif("numeroBC") And (ligne_bncmmde_bnif.code_article = " & Combo1.Text & "", cn, 1, 2"))
rslin_bn_benif.Open "SELECT * FROM ligne_bncmmde_bnif " & _
"WHERE ligne_bncmmde_bnif.numeroBC = '" & rsbn_benif!numeroBC & "' " & _
"AND ligne_bncmmde_bnif.code_article = '" & Combo1.Text & "';", cn, 1, 2




rslin_bn_benif.MoveFirst

While rslin_bn_benif.EOF = False
With g
i = .Rows - 1
.Rows = .Rows + 1

.TextMatrix(i, 0) = rsbn_benif.Fields(1)
.TextMatrix(i, 1) = rsbn_benif.Fields(0)
.TextMatrix(i, 2) = rsbn_benif.Fields(2)
.TextMatrix(i, 3) = rslin_bn_benif.Fields(1)
.TextMatrix(i, 4) = rslin_bn_benif.Fields(2)
.TextMatrix(i, 5) = rslin_bn_benif.Fields(3)
End With
rslin_bn_benif.MoveNext
Wend
rsbn_benif.MoveNext
Wend
g.Refresh

cn.Close
End If
End Sub
Messages postés
96
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
10 mars 2011
2
Salut,
ton erreur de type vient peut-etre du fait que
ligne_bncmmde_bnif.numeroBC et 
ligne_bncmmde_bnif.code_article =
sont de type numérique vu les noms des champs. Si c'est le cas il ne faut pas mettre les apostrophes
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

ouise sont de type numérique!
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

mais quelles apostrohpes je doit pas mettre!!
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
celles que j'ai ajouté dans le 2e message, donc pile poil mon premier message....
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

ah desolé j'ai fait une gaffe!!
le numeroBC est "numérique" tandis que le code_article est "Text"
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
donc des ' juste au 2e...

désolé mais on va faire 5 pages comme çà ou tu essayes quand même de ton côté?
on va pas s'en sortir sinon
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

Desolé aussi mais j'ai pas compris ce que tu designe par le 2eme message!!
Merci
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
(...) FIELD_NUM = " & VALEUR_NUM & "...
(...) FIELD_TEXT= '" & VALEUR_STR & "'...



et si ta valeur chaîne contient déjà une apostrophe (d'où la question(?) disant que ne connait pas la nature de tes champs ni valeurs) :
(...) FIELD_TEXT= '" & replace(VALEUR_STR, "'", "''") & "'...

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

j'ai modifié mais cette fois ci je recois le MsgBox "pas de commande saisie entre ces dates" meme si il y en a des factures!! c-à-d il trouve toujours
rsbn_benif.RecordCount = 0 Then et ainsi le reste du code ne s'applique pas.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
tu modifies la première requête alors que c'est la 2e qui n'allait pas?

bon je cherche plus à comprendre, cherche un peu de différentes manières, fait différents tests et revient après en détaillant ce que tu as fait. un message toutes les 5 minutes pour dire que tu as mal lu le message d'avant ne fait avancer personne

bon courage
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

Désolé PCPT j'espére que je derange pas avec mes questions,mais je suis débutant en VB et j'ai jamais utilisé (...) FIELD_NUM = " & VALEUR_NUM & "...
et par conséquent je ne sais pas ou le mettre!!!
Desolé
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

OK OK Merci mais ce n'est pas la peine de s'énerver je pense!!!
Messages postés
96
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
10 mars 2011
2
pour faire court

le numeroBC est "numérique":
alors tu utilise numeroBC=" & tavaleur

tandis que le code_article est "Text"
alors tu rajoute des apostrophes (je les met en rouge pour les différencier de ") pour encadrer la valeur recherchée:
code_article='" & tontexte & "'"
Messages postés
74
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
31 décembre 2009

J'ai fait mais ca marche toujours pas.
Message d'erreur:Type de donnees incompatible dans l'expression du critére.