Vb6 et acces : chaine caractère

Fermé
eagleleader - 26 nov. 2003 à 13:52
mounaattia Messages postés 41 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 21 novembre 2009 - 7 mars 2008 à 10:04
Voici mon code :

rs.Open "select info_titre from T_infos where titre = '" & Form1.Text1.Caption & "'", db, adOpenStatic, adLockOptimistic

Le problème c'est que lorsqu'il y a un " ' " (apostrophe dans la chaine de caractères, il me met une erreur et ce qui est logique vu que la syntaxe lui dit ' ... '

Mais alors comment résoudre mon problème ??? Sachant que je ne peux modifier ce qui se trouve dans mes bases

5 réponses

deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 91
26 nov. 2003 à 17:52
Moi pour contourner ce problème j'ai crée la focntion suivante:
"
Function PrepareString(Instring)
If Not IsNull(Instring) Then
PrepareString = "'" & Replace(Instring, "'", "' + CHAR(39) + '") & "'"
Else
PrepareString = "Null"
End If
End Function

"
et donc ton code devient :

rs.Open "select info_titre from T_infos where titre = ' " & PrepareString(Form1.Text1.Caption) & " ' ", db, adOpenStatic, adLockOptimistic

Voilà, j'espère que ca t'aide

dEUS

What Jesus can't fix tonight,
The Whisky certainly might.
1
comment récuperé les information qui se trouve dans une requette sql ave vb6
sql="select nom,code from emp where num=2"
comment utiliser les information trouvé dans nom et code dans la suite de mon prg
merci d'avance
1
eagleleader Messages postés 4 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 3 août 2005 1
17 juil. 2004 à 15:24
Et bien tu dois établir une connexion à la base de données, ensuite c'est simple tu crées ta requete sql :

dim db as Connection
dim rs as Recordset

' connexion à la base de donnees
Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.Open "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\emp.mdb;" (si elle se trouve dans le meme répertoire que l'application sinon tu dois donner le chemin complet

' création de l'objet recordset
Set RS = New ADODB.Recordset

ensuite tu crées ta requete sql :

RS.Open "select nom,code from emp where num=2", db, adOpenStatic, adLockOptimistic
RS.MoveLast
' affichage des résultats
Text1.Text = RS.Fields("nom")
Text2.Text = RS.Fields("code")

Text1 et 2 sont 2 textbox sur une feuille et elles afficheront les réponses sinon tu peux utiliser n'importe quel objet qui permet d'afficher les résultats.
0
zied > eagleleader Messages postés 4 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 3 août 2005
19 juil. 2004 à 09:54
merci pour votre aide
j'ai un petit prob lors de l'execution un message s'affiche "type de donné incompatible dans l'expression du critére on me sélectionné toute la ligne de ma requette sql
rs.Open "select ORDRE,CODCARTE from EMP where CODEMP=' " & A & " '", db, adOpenStatic, adLockOptimistic
0
merci pour votre aide
j'ai un petit prob lors de l'execution un message s'affiche "type de donné incompatible dans l'expression du critére on me sélectionné toute la ligne de ma requette sql
rs.Open "select ORDRE,CODCARTE from EMP where CODEMP=' " & A & " '", db, adOpenStatic, adLockOptimistic
0
RicHamilton Messages postés 49 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 18 juillet 2006 > zied
17 févr. 2006 à 12:47
Salut,
Eh bien concernant ton pb avec l'apostrophe, Access ne le reconnaît ke par deux apostrophes ''. Donc ce ke tu auras a faire, c'est ceci :

'Fonction ki transforme la quote en double quotes
Function DoubleQuote(str as String) as String
DoubleQuote = Replace(str,"'","''")
End Function
Cette fonction te sera utile lorske tu voudras par exemple enregistrer ou mettre à jour des données :
Insert into ETUDIANT(NumEtud, NomEtud, DateNaiss) VALUES(" & txtNum.text & ",'" & DoubleQuote(txtNom.text) & "',#" & txtDate.text & "#);

Maintenant si tu voudrais par exemple afficher ces memes données dans un autre formulaire tu feras donc :

'Fonction ki transforme les double-quotes en quote
Function Quote(str as String) as String
Quote = Replace(str,"''","'")
End Function

Ensuite par exemple :

Select NumEtud from ETUDIANT Where NomEtud = '" & Quote(txtNom.text) & "';


En ce qui concerne ton 2e pb, vérifie ke le critère de recherche de ta requête a le meme type ke celui du champ dans la base de données.
0
Salut.
J'ai été confronté à ce problème.
Plusieurs solutions :
=> Changer l'apostrophe par le caractère apostrophe tournée dans l'autre sens.
=> Supprimer les apostrophe et les remplacer par un espace dans ta base.
Cela a faire dans la chaine qui te pose problème. Tu le fais où tu veux, mais avant d'exécuter la requête.
@+
Roulito
0
eagleleader Messages postés 4 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 3 août 2005 1
26 nov. 2003 à 14:07
Le problème étant que je ne peux pas modifier mes bases car elles sont très grosses et non touchables !!! Mais merci quand même.

J'espère qu'il existe une fonction qui permet d'éviter ce problème ou que quelqu'un connaît la solution.
0

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

Posez votre question
mounaattia Messages postés 41 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 21 novembre 2009 3
7 mars 2008 à 10:04
Bonjour,
Dans mon code je veux extraire le premier caractére d'une chaine de caractére donnée puis de trouver tous les noms qui débuterons par ce caractére dans la base de données access.
SVP je veux le code qui me permet de faire ça.
merci d'avance
0