mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
14 mai 2006 à 14:54
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
14 mai 2006 à 16:49
Salut à tous !
J'ai un ch'ti problème avec une requête qui marche 1 fois sur 2 ??
J'ai une bdd Access nommée "TMD"
Exemple des 2ères entrées :
* Champs 1 (NomProduit)
1/ ACETYLENE DISSOUS
2/ AIR COMPRIME contenant au plus 23,5 pour cent d'oxygène, par volume
* Champs 2 (CodeDanger)
1/ 239
2/ 20
* Champs 3 (CodeMatiere)
1/ 1001
2/ 1002
_______________________________________________________________________________Puis dans VB, j'ai un Module(RefNico) et une Form(frmCodes) :
lbxNomProduits c'est une ListBox, reprenant tout mes produits (y'en a 1924)
Module :
Public NomBase As String, db As Database
Form:
Private Sub lbxNomProduits_Click()
Dim NomProduitU As String
NomProduitU = Me.lbxNomProduits
Me.lblNomProduit.Caption = NomProduitU
Dim Rs As Recordset, sql As String
Dim NbNomProduits As Integer
NomBase = App.Path & "\TMD"
Set db = DBEngine.Workspaces(0).OpenDatabase(NomBase)
sql = "SELECT CodeDanger, CodeMatiere FROM ListeProduit WHERE NomProduit='" & NomProduitU & "'"
Set Rs = db.OpenRecordset(sql)
Me.lblCodeDanger.Caption = Rs!CodeDanger
Me.lblCodeMatiere.Caption = Rs!CodeMatiere
Rs.Close
db.Close
End Sub
Le problème :
quand je clique sur "ACETYLENE DISSOUS", aucun problème de recherche, j'ai bien mon code mdanger et matière qui sont trouvés, par contre,
Si je clique sur "AIR COMPRIME contenant au plus 23,5 pour cent d'oxygène, par volume", cette ligne se met en jaune :
Set Rs = db.OpenRecordset(sql)
et j'ai le message suivant :
Erreur d'execution '3075':
Erreur de syntaxe (Opérateur absent) dans l'expression 'NomProduit='AIR COMPRIME contenant au plus 23,5 pour cent d'oxygène, par volume".
Si quelqu'un à la solution, merci
Mortalino
PS : Ca marche sur certains produits et PAS sur d'autres.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 mai 2006 à 15:51
Salut
Regarde ta syntaxe telle que tu l'as donnée dans ton message d'erreur :
Les champs texte sont encadrés par des apostrophes --> Nom = 'contenu cherché'
Si, dans le contenu d'un texte, il y a un ou plusieurs signes apostophes ', la syntaxe devient fausse.
Il suffit donc de trafiquer le contenu des champs. Cette simple instruction de doublage des ' suffira :
sql = Replace(NomProduitU, "'", "''")
sql = "SELECT CodeDanger, CodeMatiere FROM ListeProduit WHERE NomProduit='" & sql & "'"
Pendant que tu es dans les corrections, "dissous" s'écrit "dissout".
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro
Clad49
Messages postés265Date d'inscriptiondimanche 3 août 2003StatutMembreDernière intervention29 mars 2010 14 mai 2006 à 15:03
Salut !
Peut être que la clé que tu recherche est trop long ou kil n'aime pas les "," !
Tu peut éssayer de créé une clé unique (par exemple un chanp id en auto incrémentation)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 14 mai 2006 à 16:14
Merci Jack,
c'est nickel. Je me disais bien que dans le message d'erreur il y avait un problème dans le placement des apostrophes, alors que ca marchait sur d'autres.
Donc, merci de résoudre mon prob.
Pour info, "dissous" s'écrit bien comme ça, j'ai vérifié sur Google par acquis de conscience mais merci quand même (tant qu'à faire une appli, autant que l'hortographe soit bon).
++
Mortalino
Vous n’avez pas trouvé la réponse que vous recherchez ?