Moundir76
Messages postés281Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention16 mai 2014
-
9 juin 2011 à 14:47
Moundir76
Messages postés281Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention16 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 ?
Moundir76
Messages postés281Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention16 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
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 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.
Moundir76
Messages postés281Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention16 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...
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Moundir76
Messages postés281Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention16 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.
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 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.
Moundir76
Messages postés281Date d'inscriptiondimanche 3 octobre 2010StatutMembreDernière intervention16 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 !
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 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.