Gestion recordset ... deux problèmes en un!

Poolky Messages postés 20 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 2 août 2006 - 22 févr. 2006 à 15:07
Poolky Messages postés 20 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 2 août 2006 - 22 févr. 2006 à 15:54
Bonjour à tous,
Mon problème, qui viens certaiement d'un manque de culture VB, est le suivant:
J'execute une requete Update via un recordset sur une table de ma base selon la syntaxe suivante :
Rec.Open "UPDATE Fournisseur SET Société '" & strSociete & "', Ville '" & strVille & "',Pays = '" & strPays & "', Adresse1 = '" & strAdresse1 & "',Adresse2 = '" & strAdresse2 & "', Adresse3 = '" & strAdresse3 & "',Adresse4 = '" & strAdresse4 & "', Code = '" & strCode & "',Tél1 = '" & strTel1 & "', Tél2 = '" & strTel2 & "',Fax1 = '" & strFax1 & "', Fax2 = '" & strFax2 & "',Sexe = '" & strSexe & "', Nom = '" & strNom & "',Prénom = '" & strPrenom & "', Commentaire = '" & strCommentaire & "',Email = '" & strEmail & "' WHERE Société = '" & SocieteCourante & "' ", con, adOpenDynamic, adLockOptimistic 'execution de la requete

La requete s'execute correctement ... encore que ... Je m'explique:
Quand je fais un update sur la majorité des tables, ils n'y a pas de soucis. Mais sur certaines d'entre elles il y a des caracteres qui lorsque je les inserts dans ma requete, font tout planter (a cause de ces caracteres, il interprete mes parametres comme du code SQL et ca ne lui plait pas des masses)
D'ou ma premiere question, existe-t-il une fonction qui permet de controler le contenu des variables que je passe en parametre dans ma requete? (à la maniere d'un addSlashes en php)
Mon deuxieme problème viens certainement du fait que j'ai mal configuré mon recordset, mais je ne trouve pas de solution.
Je voudrais tout simplement mettre une condition apres ma requete du type :

If rec.BOF = False Then
MsgBox "Requete NOK"
Else
MsgBox "Requete OK"
End If

Le hic c'est que je n'ai rien dans le BOF de mon Recordset
Je l'ai deja utilisé dans une autre classe mais avec une requete update, d'où ma deuxieme question ...
Mon Recordset est il correctement initialisé?
Merci par avance!

Voici le Code Complet :

Private Sub ModifierEnregistrement()
Set con = New Connection
Set Rec = New Recordset


con.Provider = "Microsoft.Jet.Oledb.4.0" 'definition du pilote de connexion
con.ConnectionString = "D:\DataBase.mdb" 'renseignement de la base à laquelle on va se connecter
con.Open 'Ouverture de la connexion

SocieteCourante = Main.GetNomSociete1

strSociete = txtSociete.Text
strAdresse1 = txtAdresse1.Text
strAdresse2 = txtAdresse2.Text
strAdresse3 = txtAdresse3.Text
strAdresse4 = txtAdresse4.Text
strCode = txtCode.Text
strVille = txtVille.Text
strPays = txtPays.Text
strCommentaire = txtDescription.Text
strNom = txtNom.Text
strPrenom = txtPrenom.Text
strTel1 = txtTel1.Text
strTel2 = txtTel2.Text
strFax1 = txtFax1.Text
strFax2 = txtFax2.Text
strEmail = txtEmail.Text
Dim i As Integer
Select Case radSexe(i)
Case i = 0
strSexe = 1
Case i = 1
strSexe = 2
Case i = 2
strSexe = 3
End Select
On Error GoTo erreur Rec.Open "UPDATE Fournisseur SET Société '" & strSociete & "', Ville '" & strVille & "',Pays = '" & strPays & "', Adresse1 = '" & strAdresse1 & "',Adresse2 = '" & strAdresse2 & "', Adresse3 = '" & strAdresse3 & "',Adresse4 = '" & strAdresse4 & "', Code = '" & strCode & "',Tél1 = '" & strTel1 & "', Tél2 = '" & strTel2 & "',Fax1 = '" & strFax1 & "', Fax2 = '" & strFax2 & "',Sexe = '" & strSexe & "', Nom = '" & strNom & "',Prénom = '" & strPrenom & "', Commentaire = '" & strCommentaire & "',Email = '" & strEmail & "' WHERE Société = '" & SocieteCourante & "' ", con, adOpenDynamic, adLockOptimistic 'execution de la requete
'If rec.BOF = False Then
' MsgBox "Requete NOK"
'Else
' MsgBox "Requete OK"
'End If
MsgBox "Requete OK"
Exit Sub
erreur:
MsgBox "Pb de requete" + Err.Description
End Sub

1 réponse

Poolky Messages postés 20 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 2 août 2006
22 févr. 2006 à 15:54
Bon pour la deuxieme question c'est bon j'ai trouvé.
J'ai fais une méthode FormatToSQL dans laquelle j'appelle la methode Replace:

Private Function FormatToSQL(ByVal strBase As String) As String
FormatToSQL = Replace(strBase, "'", "''")
End Function

Ca marche parfaitement...
Rejoignez-nous