Probleme requete SQL

Résolu
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 9 juin 2011 à 14:47
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 10 juin 2011 à 11:05
Bonjour,

je travaille sur une base de données via des liens ODBC avec Microsoft SQL SERVER dans VISUAL BASIC 8.

Ma requete est la suivante : Mettre tous les articles qui ont pour condition AR_SOMMEIL=1 dans le catalogue "SOMMEIL"(CL_NO1=44).

Ainsi je fais :
UPDATE   F_ARTICLE
SET      CL_NO1 = 4
WHERE    (AR_SOMMEIL = 1)



Mais j'ai une erreur du driver ODBC : "Le CL_No parent n'existe pas dans F_CATALOGUE"


Je ne comprends pas car quand j'ajoute en condition la référence d'un article, ça marche tout seul.

Quelqu'un aurait il une solution pour contourner ce problème ? comme par exemple pouvoir parcourir toutes les références de la BDD et a chaque fois faire la requete ?

Merci d'avance

9 réponses

Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
10 juin 2011 à 10:09
Me revoilà,

Problème résolu, il fallait faire :

"UPDATE F_ARTICLE SET CL_NO1=44, CL_NO2=0, CL_NO3=0, CL_NO4=0 WHERE AR_SOMMEIL=1"


Je ne comprends vraiment pas car via le logiciel on pouvait mettre le catalogue 1 a la valeur 44 sans souci mais par la requête SQL il faut modifier les 3 autres catalogues. Bizarre


Problème résolu, un GRAND merci pour votre aide
3
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
9 juin 2011 à 15:19
Salut,

CL_NO1 est une clé étrangère qui pointe sur un champ de F_CATALOGUE ?
Si oui ton erreur provient sûrement du fait que la valeur saisie pour ce champ n'existe pas dans la table F_CATALOGUE. D'ailleurs dans l'énoncé du problème tu nous parles d'un code 44, et dans la requête présentée ça devient 4.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
9 juin 2011 à 15:35
Salut Jopop,

Le problème est que c'est une base propriétaire et je n'ai pas les memes option que quand je travaille sur une BDD SQL...
LOrsque je vais dans la table F_CATALOGUE je retrouve CL_NO et CL_NOPARENT.

ET le CL_NO=44 est associé au CL_NOPARENT=0.

Désolé dans mon ennoncé j'ai oublié un 4, c'est bien 44.

J'avais pensé a faire un data reader ou autre chose dans le genre mais je ne vois pas comment l'utiliser pour parcourir une boucle et a chaque fois faire ma requete avec chaque référence d'article...

Merci pour ton aide
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 juin 2011 à 17:15
Salut

Peut-être est-ce le symbole _ qui le perturbe ?
Pense à mettre des crochets [ et ] pour encadrer les noms de table ou de champ avec des caractères spéciaux.

Ton message parle de CL_No et ta requète affiche CL_NO : L'utilisation de minuscule/majuscule peut aussi le faire dérailler.

Catalogues :
Tu parles au début du catalogue "SOMMEIL", et le message d'erreur parle du catalogue "F_CATALOGUE" : Normal ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

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

Posez votre question
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
9 juin 2011 à 17:56
Salut Jack,

Non ce n'est pas le symbole _ qui pose problème :/

Ce n'est pas non plus un souci de majuscule...

Ce qui m'embete c'est que dans ma requete je mets "CL_NO1" et dans l'erreur c'est "CL_NO".

Je parle de "SOMMEIL" qui represente une categorie. Par exemple CL_NO1=44 correspond à la désignation "SOMMEIL".
SOMMEIL n'est pas une table contrairement à F_CATALOGUE qui est une table et CL_NO1 qui est dans la table F_ARTICLE.

Merci de ton aide
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
9 juin 2011 à 19:04
T'as essayé de mettre des crochets de partout comme le propose jack ?
Tu peux également vérifier des choses bêtes :
- est-ce que tu as bien un enregistrement avec CL_NO=44 dans F_CATALOGUE,
- est-ce que l'erreur provient bien de cette requête et pas d'une autre juste avant ou juste après.
quand on est coincé faut pas avoir peur de tout vérifier ^^

Pour l'erreur sur CL_NO plutôt que CL_NO1, de ce que je comprends, c'est qu'il fait référence au champ CL_NO de F_CATALOGUE et non au champ CL_NO1 de F_ARTICLE.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
10 juin 2011 à 08:49
Salut !

Les crochets ne sont pas reconnus, le driver ODBC n'en veut pas...

j'ai bien des enregistrements pour :
SELECT     AR_REF
FROM         F_ARTICLE
WHERE     (CL_NO1 = 44)[code=autre]

Et pareil quand je prends les références une a une et que je fais [code=autre]UPDATE F_ARTICLE SET CL_NO1=44 WHERE AR_SOMMEIL=1 AND AR_REF='LA REFERENCE DE MON ARTICLE'


L'erreur provient bien de cette requête car c'est la première dans mon programme et même quand j’exécute le pas-a-pas, c'est là que ça bloque...

Merci pour l'explication du Cl_NO, en effet ce doit être ça !
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
10 juin 2011 à 10:26
Pour un INSERT j'aurais compris, CL_NO2, 3 et 4 pouvant être "NOT NULL".
Pour un UPDATE je vois pas non plus l'explication.
Y'as peut-être des TRIGGER/PROC/FUNC en arrière plan.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
10 juin 2011 à 11:05
Oui certainement ;) mais c'est en dur dans le programme et donc je ne peux pas voir ^^

Bonne journée :)
0
Rejoignez-nous