Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'ai du récemment changer de base de données et je me retrouve devant une erreur lorsque j'essaie de faire un retrieve sur une datawindow, dw_4.
dw_4 à été crée à partir d'une procédure stockée avec 3 paramètres en entrées : 2 chaines de caractères et un entier
Dans mon script je lance la commande :
// On recupère les données provenant de la table FR_TITRE_PB this.dw_4.retrieve(titre, extension_titre, messagerie_titre)
Et le message d'erreur que j'obtiens après l'execution de cette commande est la suivante :
Erreur de sélection : ct_bind() : user api layer : external error : An illegal value of 5 given for parameter item
Que veut dire ce message d'erreur?
Merci pour vos reponses
// EDIT : message déplacé dans la rubrique adaptée
Dernière modification par Nephtis (05-07-2007 09:34:10)
Hors ligne
Nephtis a écrit:
Bonjour,
J'ai du récemment changer de base de données et je me retrouve devant une erreur lorsque j'essaie de faire un retrieve sur une datawindow, dw_4.
dw_4 à été crée à partir d'une procédure stockée avec 3 paramètres en entrées : 2 chaines de caractères et un entier
Dans mon script je lance la commande :Code: pb
// On recupère les données provenant de la table FR_TITRE_PB this.dw_4.retrieve(titre, extension_titre, messagerie_titre)Et le message d'erreur que j'obtiens après l'execution de cette commande est la suivante :
Erreur de sélection : ct_bind() : user api layer : external error : An illegal value of 5 given for parameter item
Que veut dire ce message d'erreur?
Merci pour vos reponses
Les paramètres entre ta DW et ta proc sont différents.
Vérifies l'ordre et les types.
tu peux envoyer ton script de proc...
Hors ligne
Voici la proc (fichier qui à permis de la créer):
Create Procedure DEVOBI.UP_OBI_FR_PENSE_BETE_TITRE( @titre char(4) = null, @extension_titre char(2) = null, @messagerie_titre int = null ) As Begin /*********************************************************** *UP_OBI_FR_PENSE_BETE_TITRE * * Paramètres: titre * extension_titre * messagerie_titre * * * Retour: * * Description: Donne le libelle du pense bete pour un titre * * * * Erreurs: * *------------------------------------------------------------*/ SELECT * FROM FR_TITRE_PB WHERE ID_TITRE = @titre AND ID_EXTENSION_TITRE = @extension_titre AND ID_SOCIETE_MESSAGERIE_TITRE = @messagerie_titre End
et en ce qui concerne les types pour les variables :
// Variables pour l'identification d'un titre String titre String extension_titre Long messagerie_titre
Ce qu'il y a c'est que je n'ai pas changé le script après être passé sur la base de test (faire des test sur une base de prod c'était pas trop ça ) et que avant ce script marchait très bien
En plus voici le contenu de la requete telle qu'elle est dans la base de donnée
Create Procedure DEVOBI.UP_OBI_FR_PENSE_BETE_TITRE( @titre char(4) = null, @extension_titre char(2) = null, @messagerie_titre int = null ) As Begin /********************************************************** *Procedure Name: UP_OBI_FR_PENSE_BETE_TITRE *Database: OBI *Server: SDE001 *File Path: * \\Sde0001\Pub\Invendus\Facturation Retour\facturation_retour * \Procedures stockÚes\UP_OBI_FR_PENSE_BETE_TITRE.sql *********************************************************/ /*********************************************************** *UP_OBI_FR_PENSE_BETE_TITRE * * Paramètres: titre * extension_titre * messagerie_titre * * * Retour: * * Description: Donne le libelle du pense bete pour un titre * * * * Erreurs: * *------------------------------------------------------------*/ /* --Adaptive Server has expanded all '*' elements in the following statement */ SELECT FR_TITRE_PB.ID_TITRE, FR_TITRE_PB.ID_EXTENSION_TITRE, FR_TITRE_PB.ID_SOCIETE_MESSAGERIE_TITRE, FR_TITRE_PB.ID_PB, FR_TITRE_PB.commentaire_titre FROM FR_TITRE_PB WHERE ID_TITRE = @titre AND ID_EXTENSION_TITRE = @extension_titre AND ID_SOCIETE_MESSAGERIE_TITRE = @messagerie_titre End
PS : Il y a eu juste une modification au niveau de la base de donnée pour la table FR_TITRE_PB (ajout de la colonne commentaire_titre)
Dernière modification par Nephtis (05-07-2007 09:58:14)
Hors ligne
Tu as les valeurs de tes 3 arguments passés au retrieve
Hors ligne
Oui en debug j'ai vérifié et mes trois variables sont bien alimentées
Hors ligne
Nephtis a écrit:
Oui en debug j'ai vérifié et mes trois variables sont bien alimentées
Avec quelles valeurs ?
Hors ligne
J'allais le poster
La procédure stockée marche très bien car je l'ai executée avec ces trois valeurs et elle m'a donnée le bon résultat
Dernière modification par Nephtis (05-07-2007 10:13:02)
Hors ligne
Vas chercher du côté des propriétés StaticBind et DisableBind de ta transaction
Hors ligne
Bonjour Nephtis,
je te propose les pistes suivantes :
1 - Problème de regénération
Ouvre la dw, resélectionne la proc, vérifie les arguments, ferme la dw et regénère la dw
2 - Problème de bind
Les colonnes spécifiées dans ta dw sont trop petites ( ex : char(10) dans la dw et char(100) retourné par la proc )
Anpi
Hors ligne
Anpi a écrit:
Bonjour Nephtis,
je te propose les pistes suivantes :
1 - Problème de regénération
Ouvre la dw, resélectionne la proc, vérifie les arguments, ferme la dw et regénère la dw
2 - Problème de bind
Les colonnes spécifiées dans ta dw sont trop petites ( ex : char(10) dans la dw et char(100) retourné par la proc )
Anpi
en effet il me semblait avoir déjà vu passé ça ici
Hors ligne
Je vais peut etre dire des betises mais il semble que 5 est le nombre de colonne recupéré par la proc
Tu as essayé de refaire ta dw après avoir modifier la proc en lui specifiant les colonnes sans mettre l' '*'
Hors ligne
Bon je commence à donner des nouvelles du debugage :
Anpi a écrit:
Bonjour Nephtis,
je te propose les pistes suivantes :
1 - Problème de regénération
Ouvre la dw, resélectionne la proc, vérifie les arguments, ferme la dw et regénère la dw
2 - Problème de bind
Les colonnes spécifiées dans ta dw sont trop petites ( ex : char(10) dans la dw et char(100) retourné par la proc )
Anpi
1 - Reselectionner la proc --> ok
Verifier arguments --> ok
Preview de la dw (avec les valeurs des arguments de l'exemple) --> ok
Régénération --> ok
Résultat --> ko (toujours le même message d'erreur)
2- Vérification de la taille des colonnes --> ok
Régénérate --> ok
Résultat --> ko (toujours le même message d'erreur)
JCZ a écrit:
Je vais peut etre dire des betises mais il semble que 5 est le nombre de colonne recupéré par la proc
Tu as essayé de refaire ta dw après avoir modifier la proc en lui specifiant les colonnes sans mettre l' '*'
- Recréer la procédure en remplaçant * par tous les champs --> ok
Création d'un nouveau datawindow object en utilisant cette procédure --> ok
Sur le controle de la fenêtre, association de ce nouveau datawindow object --> ok
Résultat --> ko (toujours le même message d'erreur)
Chrnico a écrit:
Vas chercher du côté des propriétés StaticBind et DisableBind de ta transaction
Sur PB 6.5 où voit on les propriétés de la transaction?
J'ai essayé aussi de régénrer toutes les dll mais le résultat est le même
Dernière modification par Nephtis (05-07-2007 12:22:42)
Hors ligne
juste pour voir ça donne quoi quand tu fais un export et un import de la DW (.srd) ?
Hors ligne
D'abord un nouveau test qui est assez bizarre
J'ai créé un datawindow object en choisissant "Quick Select" lors de la création. J'ai choisi ma table puis tous les champs de cette table.
L'enregistrement de cette datawindow ne pose aucun problème et le rattachement sur le controle datawindow de la fenêtre s'oppère sans message d'erreur.
Je teste et là je tombe sur le message d'erreur :
Erreur de selection : Invalid column name 'commentaire_titre'
J'ai comme l'impression que quand je suis sous pb je suis bien sur ma base de test mais que quand je teste l'application je tombe sur la base de prod (le nouveau champ n'a pas encore été ajouté sur la base de prod)
Hors ligne
On oublie tout ce que j'ai dit
J'avais pas modifié le nom du serveur dans mon INI
En tout cas merci pour toutes vos reponses
Dernière modification par Nephtis (05-07-2007 12:46:05)
Hors ligne
Hé bien si on prend ça du bon côté, ça fait un soucis de moins !
Anpi
Hors ligne
Nephtis a écrit:
On oublie tout ce que j'ai dit
J'avais pas modifié le nom du serveur dans mon INI
En tout cas merci pour toutes vos reponses
Ma réponse de 11h40 : Les paramètres entre ta DW et ta proc sont différents...
Hors ligne
Nephtis a écrit:
je confirme LOL
Hors ligne
Nephtis a écrit:
J'avais pas modifié le nom du serveur dans mon INI
En tout cas merci pour toutes vos reponses
c'est le métier qui rentre
Hors ligne
Nephtis a écrit:
j'essaie de faire un retrieve sur une datawindow, dw_4.
pour conclure un petit conseil pour la route : donne un nom explicite à tes DW plutot que dw_1, dw_2 ...
Hors ligne
eRaSorZ a écrit:
Nephtis a écrit:
j'essaie de faire un retrieve sur une datawindow, dw_4.
pour conclure un petit conseil pour la route : donne un nom explicite à tes DW plutot que dw_1, dw_2 ...
oui un truc comme dw_un, dw_deux ...
Hors ligne