OVH Cloud OVH Cloud

odbc

2 réponses
Avatar
Fredo_du_69
Bonjour,
j'ai fait un programme pour extraires des infos d'une base sur vb6.
je travaillais avec un PC sous winXp.
en essayant d'executer ce prog sur un autre équipé de Win98, pas moyen.
il bloque sur cette ligne avec erreur 13.

Sql = "Select * from Eleves where CodeEleve='" & Code & "'"
Set RsClasse = AdoConnexion.Execute(Sql)

A quoi peut être du le problème ?
doit on ecrire d'une manière differente la requette ?

merci.

2 réponses

Avatar
Yves
Bonjour
Essai ca


Sql = "Select * from Eleves where CodeEleve='" & Replace(Code), "'", "''")
& "'"

--------
Public Function Replace$(ByVal Expression As String, _
ByVal Find As String, _
ByVal Replacer As String, _
Optional ByVal Start As Long = 1, _
Optional ByVal Count As Long = -1, _
Optional ByVal Compare As Integer = vbBinaryCompare)

Dim lPos
Dim lFind
Dim lCount

If StrComp(Find, Replace, Compare) = 0 Then
Replace$ = Expression
Else

lFind = Len(Find)
lPos = InStr(Start, Expression, Find, Compare)

Do Until lPos = 0 Or IIf(Count >= 0, lCount <= Count, False)

Expression = Left$(Expression, lPos - 1) + _
Replacer + _
Mid$(Expression, lPos + lFind)
lCount = lCount + 1

lPos = InStr(lPos + Len(Replacer), Expression, Find, Compare)

Loop

End If

Replace$ = Expression

End Function

"Fredo_du_69" a écrit dans le message de
news:wovSc.15595$
Bonjour,
j'ai fait un programme pour extraires des infos d'une base sur vb6.
je travaillais avec un PC sous winXp.
en essayant d'executer ce prog sur un autre équipé de Win98, pas moyen.
il bloque sur cette ligne avec erreur 13.

Sql = "Select * from Eleves where CodeEleve='" & Code & "'"
Set RsClasse = AdoConnexion.Execute(Sql)

A quoi peut être du le problème ?
doit on ecrire d'une manière differente la requette ?

merci.





Avatar
Zoury
Salut à vous deux ! :O)


pour Yves :
Essai ca
Public Function Replace$(ByVal Expression As String, _



l'erreur 13 désigne un type mismatch... l'idée était bonne, mais je doute
que l'erreur soit relier à la non-duplication de l'apostrophe au sein de la
chaine SQL. Si c'était le cas, c'est ADO qui aurait renvoyé l'erreur.. ;O)

aussi (juste pour vérifier) sous VB 6 la fonction Replace() existe déjà...
j'imagine que tu travailles sur VB5 ou moins ? si la réponse est non alors
je te conseilles d'utiliser la version venant avec VB qui est beaucoup plus
optimisée.


pour Fredo :

sans voir tes déclarations c'est dur à dire... quel est le type de tes
variables ?

tu travailles peut-être avec du late-binding ? (voir la faq :
http://faq.vb.free.fr/index.php?question4)
si c'est le cas, je suspectes que la version de ta MDAC ne soit pas
identique sur les 2 postes... étant donnée que ADO 2.1 commence à se faire
vieux ses types ne correspondent peut-être pas exactement au type offert par
la MDAC installée sur le poste Win98..

peut-être utilises-tu des membres par défaut ? si c'est le cas, ça peut
engendrer ce genre de problèmes. Par exemple, tu crois passer un TextBox en
paramètre, mais sans trop savoir pourquoi VB passe la propriété Text du
TextBox à la place du contrôle entier et PAF! tu te retrouves avec un "type
mismatch"... :O)


--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic