Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VB6 : Pb avec requete sql pourtant simple ! [ Archives Visual Basic / Bases de données ] (mortalino)

dimanche 14 mai 2006 à 14:54:40 | VB6 : Pb avec requete sql pourtant simple !

mortalino

Membre Club
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.

dimanche 14 mai 2006 à 15:03:56 | Re : VB6 : Pb avec requete sql pourtant simple !

Clad49

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)

ps :
Public db As Database
Public rs As Recordset

Clad

dimanche 14 mai 2006 à 15:26:50 | Re : VB6 : Pb avec requete sql pourtant simple !

mortalino

Membre Club
J'ai, comme tu dis, l'impression qu'il plante sur des nom trop long, ou lorsqu'il y a des "," ou des "°" dans le texte. Effectivement j'ai les numéros automatiques incrémentés. Comment lui dire en sql de me récupérer les infos par ce numéro ? SELECT CodeDanger, CodeMatiere FROM ListeProduit WHERE ???? que dois je mettre pour le numéro de clée ? Merci clad49. Mortalino

dimanche 14 mai 2006 à 15:51:15 | Re : VB6 : Pb avec requete sql pourtant simple !

jack

Administrateur CodeS-SourceS
Réponse acceptée !
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

dimanche 14 mai 2006 à 16:14:32 | Re : VB6 : Pb avec requete sql pourtant simple !

mortalino

Membre Club
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

dimanche 14 mai 2006 à 16:49:43 | Re : VB6 : Pb avec requete sql pourtant simple !

jack

Administrateur CodeS-SourceS
Bien sûr dissous existe : Tu dissous
Mais un produit dissout, avec un t (de la soude dissoute, et pas dissouse)
à moins que ce soit un terme dédié



Cette discussion est classé dans : problème, sql, db, rs, nomproduitu


Répondre à ce message

Sujets en rapport avec ce message

URGENT ! PB Err Type sur requete SQL [ par Balin ] Salut ! J'en ai marre je comprend rien !G bien déclaré mes variables et pourtant il me sort cette %#!!*µ d'erreur a chaque fois !Je suis pas très doué ListBox et requête SQL [ par stasze ] Bonjour à toutes et à tous. Je suis débutant en VB et j'ai commencé un petit programme pour mon travail. J'ai fait une petite base de données sous Acc Pb SQL pour modifier des champs(debutant inside) [ par bibouse ] Bonjour,J'ai un soucis sous access 2003.Je veux modifer des champ d'une table importée d'excel mais malgré l'utilisation d'exemples de source dispo su Sql : enregistrement existe ? [ par Booster ] Bonjour,Alors voila j'aimerais savoir si un enregistrement existe ou pas dans ma table ! je suis aller voir sur le forum vbfrance et j'ai trouver sa : Pb affichage [ par biddal ] ' -----' Form2' -----'Option Explicit''Public Sub Form_Load()     Dim rs As Recordset    Dim Sql As String '   ouvre la base    On Error GoTo Bas Je débute pb pour faire une boucle. [ par biddal ] ' -----' Form2' -----'Option Explicit''Public Sub Form_Load()     Dim rs As Recordset    Dim sql As String '   ouvre la base    On Error GoTo Bas pb Set rs = DB.OpenRecordset(Sql, dbOpenDynaset) [ par biddal ] Voila mon code, et j'ai une erreur d'execution ICI et je ne vois pas ce que c'est.' -----' Form1' -----'Option Explicit'Public Typ As Long''Private Su Requetes sous access [ par aaliyan ] Bonjour, j'aimerais savoir, si c'est possible, lorsque l'on a pas trouvé de champs dans une requete select, si c'est possible d'ajouter une valeur dan Pb avec dbopensnapshot [ par fredpop37 ] Bonjour,Débutant, j'ai un sérieux problème avec le code très court qui suit :Option ExplicitPublic db As DatabasePublic rs As RecordsetPublic sql As S Problème avec les ' [ par Goth25 ] Bonjours a tous,Avec l'aide d'une requête Sql, je recherche une entreprise dans une des table de ma BD  dont le nom est ègal a une variable.Code :'Rec


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.