Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
bonjour,
je ne comprend pas pourquoi, mon update me retourne -1.
si quelqu'un a une piste.
mon code :
lds_enreg_trace_rech_veh = CREATE DATASTORE lds_enreg_trace_rech_veh.dataobject = 'ds_enreg_trace_rech_veh' lds_enreg_trace_rech_veh.settransobject(SQLCA) ll_row = lds_enreg_trace_rech_veh.insertrow(0) lds_enreg_trace_rech_veh.object.AGECODAGE[1] = is_codage lds_enreg_trace_rech_veh.object.UTLCODUTL[1] = is_codutil lds_enreg_trace_rech_veh.object.TRADATWSI[1] = idt_datwsi lds_enreg_trace_rech_veh.object.TRALIBIMT[1] = is_immat lds_enreg_trace_rech_veh.object.WSICODWSI[1] = is_codwsi lds_enreg_trace_rech_veh.object.TRADATRES[1] = idt_datres lds_enreg_trace_rech_veh.object.TRAINDERR[1] = is_trainderr lds_enreg_trace_rech_veh.object.TRACODERR[1] = is_tracoderr lds_enreg_trace_rech_veh.object.TRALIBMSG[1] = is_libmsg lds_enreg_trace_rech_veh.object.TRANUMNBV[1] = il_nb_veh lds_enreg_trace_rech_veh.object.TRALIBSER[1] = is_numserie ll_retour_update = lds_enreg_trace_rech_veh.update()
ma datastore est bien updatable, et tous les champs sont bien sélectionnés dans les update properties, mon insertrow me ramène bien 1, tous les champs sont alimentés correctement, et pourtant, ll_retour_update = -1 ...
et je me demande bien pourquoi, là ?
aurais-je oublié un petit truc tout bête ?
Hors ligne
Bonjour,
Plusieurs possibilités :
Le plus souvent le dataobject est introuvable, faute de frappe dans le nom, librairie non ajouté au projet, ... pour en être sur tu peux rajouter :
IF NOT IsValid(lds_enreg_trace_rech_veh.Object) THEN MessageBox("Error", "The datawindow lds_enreg_trace_rech_veh does not exist!") END IF
Tu peux également tester la valeur retour de settransobject, un retour -1 indique en général également un dataobject invalide.
Sinon, il s'agit d'une erreur SQL, pour avoir accès à l'erreur SQL, pour tester, tu ajoutes ta datastore comme objet non visuel d'une fenêtre par exemple (Insert -> Object -> datastore).
A ce moment là, tu as accès à l'événement dberror qui te permet de tracer l'erreur SQL.
Hors ligne
Bonjour, si le dataobject était introuvable la notation objet aurait déclenchée une exception, regarde plutôt ce qu'il y a dans sqlca.sqlerrtext après l'update.
Hors ligne
Il faut récupérer la syntaxe de mise à jour depuis la routine SQlPreview() et la faire exécuter sous un éditeur pour visualiser le résultat.
Hors ligne
bon en fait c'est bon, j'ai trouvé ...
j'ai transformé ma datastore en datawindow visible, et au moment du update, paf, message d'erreur : c'est un probleme de foreign key. Du coup j'ai compris direct d'ou venait le problème.
c'est bizarre que la datastore ne balance pas le message d'erreur, mais bon.
bon, merci de vous être penchés sur le problème.
Hors ligne
ton SQLCA hérite d'un objet qui fait quelque chose en cas d'erreur peut-être ? (voir dans les propriétés de l'application : Additional Properties / Variable Types )
Hors ligne