j'utilise findfirst pour rechercher si un enregistrement existe déjà dans un
table. Mon prbl c que je fais une recherche avec un ( ' ) et du coup ça
provoque une erreur.
voici le cas :
cod = "VALVE D'EAU"
TProduit.FindFirst "code = '" & cod & "'"
If TProduit.NoMatch Then
else
end if
Il me semblait qu'il y avait un moyen de dire dans la requete que cod est
un critère, un peu comme les [ ] pour les nom de tables avec des espaces.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-marc
<util> a écrit dans le message de news:
Bonjour,
j'utilise findfirst pour rechercher si un enregistrement existe déjà dans un table. Mon prbl c que je fais une recherche avec un ( ' ) et du coup ça provoque une erreur.
voici le cas :
cod = "VALVE D'EAU"
TProduit.FindFirst "code = '" & cod & "'"
If TProduit.NoMatch Then
else
end if
Il me semblait qu'il y avait un moyen de dire dans la requete que cod est un critère, un peu comme les [ ] pour les nom de tables avec des espaces.
Si vous pouvez m'aider, merci d'avance.
Hello,
il suffit de doubler les ( ' ), systématiquement. On fait donc:
<util> a écrit dans le message de news:
e5jF8Z0LHHA.3552@TK2MSFTNGP03.phx.gbl...
Bonjour,
j'utilise findfirst pour rechercher si un enregistrement existe déjà dans
un table. Mon prbl c que je fais une recherche avec un ( ' ) et du coup ça
provoque une erreur.
voici le cas :
cod = "VALVE D'EAU"
TProduit.FindFirst "code = '" & cod & "'"
If TProduit.NoMatch Then
else
end if
Il me semblait qu'il y avait un moyen de dire dans la requete que cod est
un critère, un peu comme les [ ] pour les nom de tables avec des espaces.
Si vous pouvez m'aider, merci d'avance.
Hello,
il suffit de doubler les ( ' ), systématiquement.
On fait donc:
j'utilise findfirst pour rechercher si un enregistrement existe déjà dans un table. Mon prbl c que je fais une recherche avec un ( ' ) et du coup ça provoque une erreur.
voici le cas :
cod = "VALVE D'EAU"
TProduit.FindFirst "code = '" & cod & "'"
If TProduit.NoMatch Then
else
end if
Il me semblait qu'il y avait un moyen de dire dans la requete que cod est un critère, un peu comme les [ ] pour les nom de tables avec des espaces.
Si vous pouvez m'aider, merci d'avance.
Hello,
il suffit de doubler les ( ' ), systématiquement. On fait donc:
Avec VB6 vous pouvez utiliser l'instruction Replace sinon il faut laisser l'erreur se produire et recomposer la chaîne en remplaçant l'apostrophe par un CHR$(39)
Si vous ne trouvez pas de réponse satisfaisante, revenez vers moi et je vous enverrai une démo issue de mon cours de programmation. -- Bonne réception.
http://perso.orange.fr/andre.araste/ Membre du Club Win's: http://www.clubwins.org Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
Bonjour,
j'utilise findfirst pour rechercher si un enregistrement existe déjà dans un table. Mon prbl c que je fais une recherche avec un ( ' ) et du coup ça provoque une erreur.
voici le cas :
cod = "VALVE D'EAU"
TProduit.FindFirst "code = '" & cod & "'"
If TProduit.NoMatch Then
else
end if
Il me semblait qu'il y avait un moyen de dire dans la requete que cod est un critère, un peu comme les [ ] pour les nom de tables avec des espaces.
Si vous pouvez m'aider, merci d'avance.
Damien
Bonjour
Avec VB6 vous pouvez utiliser l'instruction Replace sinon il faut laisser
l'erreur se produire et recomposer la chaîne en remplaçant l'apostrophe par
un CHR$(39)
Si vous ne trouvez pas de réponse satisfaisante, revenez vers moi et je vous
enverrai une démo issue de mon cours de programmation.
--
Bonne réception.
andre.araste@wanadoo.fr
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
e5jF8Z0LHHA.3552@TK2MSFTNGP03.phx.gbl...
Bonjour,
j'utilise findfirst pour rechercher si un enregistrement existe déjà dans
un table. Mon prbl c que je fais une recherche avec un ( ' ) et du coup ça
provoque une erreur.
voici le cas :
cod = "VALVE D'EAU"
TProduit.FindFirst "code = '" & cod & "'"
If TProduit.NoMatch Then
else
end if
Il me semblait qu'il y avait un moyen de dire dans la requete que cod est
un critère, un peu comme les [ ] pour les nom de tables avec des espaces.
Avec VB6 vous pouvez utiliser l'instruction Replace sinon il faut laisser l'erreur se produire et recomposer la chaîne en remplaçant l'apostrophe par un CHR$(39)
Si vous ne trouvez pas de réponse satisfaisante, revenez vers moi et je vous enverrai une démo issue de mon cours de programmation. -- Bonne réception.
http://perso.orange.fr/andre.araste/ Membre du Club Win's: http://www.clubwins.org Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
Bonjour,
j'utilise findfirst pour rechercher si un enregistrement existe déjà dans un table. Mon prbl c que je fais une recherche avec un ( ' ) et du coup ça provoque une erreur.
voici le cas :
cod = "VALVE D'EAU"
TProduit.FindFirst "code = '" & cod & "'"
If TProduit.NoMatch Then
else
end if
Il me semblait qu'il y avait un moyen de dire dans la requete que cod est un critère, un peu comme les [ ] pour les nom de tables avec des espaces.
Si vous pouvez m'aider, merci d'avance.
Damien
Merci pour vos réponses.
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit d'un code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39) mais j'ai toujours l'erreur :
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit d'un
code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39) mais
j'ai toujours l'erreur :
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit d'un code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39) mais j'ai toujours l'erreur :
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit d'un code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39) mais j'ai toujours l'erreur :
C'est évident. Chr$(39) est la même chose que le caractère quote (')
Tu n'as pas lu mon exemple, ou alors tu ne l'as pas compris :-((
On crée une variable de plus, qu'on appelle my_cod
dedans on écrit cod, mais en doublant tous les caractères quote:
' on déclare Dim My_cod as String
' juste avant la requete, on fait ceci:
MY_cod = replace(cod, "'", "''")
puis on fait la recherche avec My_cod :
TProduit.FindFirst "code = '" & MY_cod & "'"
Et ça marche, bien sur!
C'est la façon classique de procéder en SQL.
Le "doublage" des quote est purement syntaxique pour SQL, ta variable cod n'est même pas touchée.
exemple dans ma base de données livres
livre = "L'ile au trésor" recherche = replace(livre, "'", "''") rs.openrecordset"SELECT * FROM ouvrages where titre ='" & recherche & "'"
<util> a écrit dans le message de news:
Od5NBlNMHHA.4928@TK2MSFTNGP06.phx.gbl...
Merci pour vos réponses.
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit
d'un code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39)
mais j'ai toujours l'erreur :
C'est évident. Chr$(39) est la même chose que le caractère quote (')
Tu n'as pas lu mon exemple, ou alors tu ne l'as pas
compris :-((
On crée une variable de plus, qu'on appelle my_cod
dedans on écrit cod, mais en doublant tous les caractères quote:
' on déclare
Dim My_cod as String
' juste avant la requete, on fait ceci:
MY_cod = replace(cod, "'", "''")
puis on fait la recherche avec My_cod :
TProduit.FindFirst "code = '" & MY_cod & "'"
Et ça marche, bien sur!
C'est la façon classique de procéder en SQL.
Le "doublage" des quote est purement syntaxique pour SQL,
ta variable cod n'est même pas touchée.
exemple dans ma base de données livres
livre = "L'ile au trésor"
recherche = replace(livre, "'", "''")
rs.openrecordset"SELECT * FROM ouvrages where titre ='" & recherche & "'"
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit d'un code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39) mais j'ai toujours l'erreur :
C'est évident. Chr$(39) est la même chose que le caractère quote (')
Tu n'as pas lu mon exemple, ou alors tu ne l'as pas compris :-((
On crée une variable de plus, qu'on appelle my_cod
dedans on écrit cod, mais en doublant tous les caractères quote:
' on déclare Dim My_cod as String
' juste avant la requete, on fait ceci:
MY_cod = replace(cod, "'", "''")
puis on fait la recherche avec My_cod :
TProduit.FindFirst "code = '" & MY_cod & "'"
Et ça marche, bien sur!
C'est la façon classique de procéder en SQL.
Le "doublage" des quote est purement syntaxique pour SQL, ta variable cod n'est même pas touchée.
exemple dans ma base de données livres
livre = "L'ile au trésor" recherche = replace(livre, "'", "''") rs.openrecordset"SELECT * FROM ouvrages where titre ='" & recherche & "'"
Private Sub DBCombo1_DblClick(Area As Integer) On Error GoTo Erreur Dim Car1 As String Dim Car2 As String Dim Pos As Byte 10 Data1.Recordset.FindFirst "Nom = ( ' " & DBCombo1.BoundText & " ' )" Exit Sub Erreur: 20 ' Présence détectée d'un apostrophe. 21 Pos = InStr(DBCombo1.BoundText, " ' " ) 22 Car1 = Left(DBCombo1.BoundText, Pos - 1) 23 Car2 = Right(DBCombo1.BoundText, Len(DBCombo1.BoundText) - Pos) 24 Data1.Recordset.FindFirst "Nom = ( ' " & Car1 & " ' + CHR$(39) + ' " & Car2 & " ' ) " End Sub
Ligne 10 on veut rechercher dans un champ Nom une donnée se trouvant dans une liste.
Si une apostrophe est détectée une erreur se produit et renvoie à la ligne 20
Ligne 21 on recherche la position de l'apostrophe Ligne 22 on isole la partie gauche de la chaîne Ligne 23 on isole la partie droite Ligne 24 on renouvelle la requête en concaténant les 3 éléments, l'apostrophe étant remplacée par un Chr$(39)
La syntaxe est assez pointue mais ça marche. Attention, il ne faut pas d'espace entre les (''") comme pourrait le laisser supposer l'affichage ci-dessus. -- Bonne réception.
http://perso.orange.fr/andre.araste/ Membre du Club Win's: http://www.clubwins.org Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
Merci pour vos réponses.
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit d'un code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39) mais j'ai toujours l'erreur :
Private Sub DBCombo1_DblClick(Area As Integer)
On Error GoTo Erreur
Dim Car1 As String
Dim Car2 As String
Dim Pos As Byte
10 Data1.Recordset.FindFirst "Nom = ( ' " & DBCombo1.BoundText & " ' )"
Exit Sub
Erreur:
20 ' Présence détectée d'un apostrophe.
21 Pos = InStr(DBCombo1.BoundText, " ' " )
22 Car1 = Left(DBCombo1.BoundText, Pos - 1)
23 Car2 = Right(DBCombo1.BoundText, Len(DBCombo1.BoundText) - Pos)
24 Data1.Recordset.FindFirst "Nom = ( ' " & Car1 & " ' + CHR$(39) + ' " &
Car2 & " ' ) "
End Sub
Ligne 10 on veut rechercher dans un champ Nom une donnée se trouvant dans
une liste.
Si une apostrophe est détectée une erreur se produit et renvoie à la ligne
20
Ligne 21 on recherche la position de l'apostrophe
Ligne 22 on isole la partie gauche de la chaîne
Ligne 23 on isole la partie droite
Ligne 24 on renouvelle la requête en concaténant les 3 éléments,
l'apostrophe étant remplacée par un Chr$(39)
La syntaxe est assez pointue mais ça marche. Attention, il ne faut pas
d'espace entre les (''") comme pourrait le laisser supposer l'affichage
ci-dessus.
--
Bonne réception.
andre.araste@wanadoo.fr
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
Od5NBlNMHHA.4928@TK2MSFTNGP06.phx.gbl...
Merci pour vos réponses.
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit
d'un code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39)
mais j'ai toujours l'erreur :
Private Sub DBCombo1_DblClick(Area As Integer) On Error GoTo Erreur Dim Car1 As String Dim Car2 As String Dim Pos As Byte 10 Data1.Recordset.FindFirst "Nom = ( ' " & DBCombo1.BoundText & " ' )" Exit Sub Erreur: 20 ' Présence détectée d'un apostrophe. 21 Pos = InStr(DBCombo1.BoundText, " ' " ) 22 Car1 = Left(DBCombo1.BoundText, Pos - 1) 23 Car2 = Right(DBCombo1.BoundText, Len(DBCombo1.BoundText) - Pos) 24 Data1.Recordset.FindFirst "Nom = ( ' " & Car1 & " ' + CHR$(39) + ' " & Car2 & " ' ) " End Sub
Ligne 10 on veut rechercher dans un champ Nom une donnée se trouvant dans une liste.
Si une apostrophe est détectée une erreur se produit et renvoie à la ligne 20
Ligne 21 on recherche la position de l'apostrophe Ligne 22 on isole la partie gauche de la chaîne Ligne 23 on isole la partie droite Ligne 24 on renouvelle la requête en concaténant les 3 éléments, l'apostrophe étant remplacée par un Chr$(39)
La syntaxe est assez pointue mais ça marche. Attention, il ne faut pas d'espace entre les (''") comme pourrait le laisser supposer l'affichage ci-dessus. -- Bonne réception.
http://perso.orange.fr/andre.araste/ Membre du Club Win's: http://www.clubwins.org Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
Merci pour vos réponses.
Le prbl c que je ne peux pas replacer ( ' ) par autre chose, il s'agit d'un code indentifiant unique, j'ai essayé de remplacer ( ' ) par CHR$(39) mais j'ai toujours l'erreur :