Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
bonjour a vous,
voila j'ai utilisé une requete SQL format 2 qui ressemble à ça:
sqlupdate= "insert into"+table_name+ "(code_jou, cpt_gnl, credit, c_anal, dat_oper, debit , n_ordre, n_piece, mois) values (?,?, ?,?, ?,?,?, ?,?);" prepare SQLSA from ' sqlupdate'; EXECUTE sqlsa using :code_jr,: cpt, :crd, :tiers, :dat_piece, :deb, :ord, :piece, :month ;
il me sort un message de ce type:
"msmatch between prepared number of substitution variables and execute parameters"
qqn pourrait il m'aider à comprendre d'ou vient le probleme?
merci
MESSAGE DE MODERATION : la balise de code PB s'utilise avec un "égal" et non "deux points" : [ code = pb ] (sans les espaces)
Dernière modification par disneb (20-04-2009 14:50:25)
Hors ligne
tu fais un : prepare SQLSA from ' sqlupdate';
=> PB utilise donc la chaine ' sqlupdate'
et non la variable sqlupdate
par ailleurs il manque un espace après le into
et il y a une erreur de syntaxe SQL avec deux virgules à la suite dans debit, , n_ordre
voici l'exemple de l'aide PB :
INT Dept_id_var = 156 INT Mgr_id_var String Dept_name_var Dept_name_var = "Department" SetNull(Mgr_id_var) PREPARE SQLSA FROM "INSERT INTO department VALUES (?,?,?)" ; EXECUTE SQLSA USING :Dept_id_var,:Dept_name_var,:Mgr_id_var ;
Hors ligne
A priori tu as du mal avec l'aide PB
Voici ce qu'il faut dans ton cas :
sqlupdate= "insert into "+table_name+ " (code_jou, cpt_gnl, credit, c_anal, dat_oper, debit , n_ordre, n_piece, mois) values (?,?, ?,?, ?,?,?, ?,?);" prepare SQLSA from sqlupdate; EXECUTE sqlsa using :code_jr, :cpt, :crd, :tiers, :dat_piece, :deb, :ord, :piece, :month ;
(Eraz, il y a aussi le : devant cpt qui a un espace de trop... )
Hors ligne
Chrnico a écrit:
(Eraz, il y a aussi le : devant cpt qui a un espace de trop... )
ça doit être celui qui était après le into qui a mis les bouts...
Hors ligne
merci pour ta réponse
mon problème est que le nom de table est dynamique d'où la variable table_name et quand je utilise ça:
PREPARE SQLSA FROM "INSERT INTO "+table_name+" VALUES (?,?,?)" ; EXECUTE SQLSA USING :Dept_id_var,:Dept_name_var,:Mgr_id_var ;
il me sort syntaxe error
pour les deux virgules j'ai collé mon texte en deux fois et j'ai mal collé
Hors ligne
passe par une variable
Hors ligne
table_name est une variable!!!
et chronico: syntax error
Dernière modification par disneb (20-04-2009 14:30:41)
Hors ligne
une variable pour le code SQL, comme dans ton 1er exemple :
sqlupdate= "insert into "+table_name+ "(code_jou, cpt_gnl, credit, c_anal, dat_oper, debit , n_ordre, n_piece, mois) values (?,?, ?,?, ?,?,?, ?,?);" prepare SQLSA from sqlupdate;
Hors ligne
quand je fais ça il me dort syntax error au niveau de la2eme ligne c'est pour ça au départ j'ai mis entre guillemets le sqlupdate!!
Hors ligne
ok les gars je vous l'accorde je suis vraiment à la traine pour ce qui est de PB
fallait mettre
prepare SQLSA from :sqlupdate;
:sqlupdate
n'empêche que aucun de vous n'a mis les deux points
merci pour le coup de pouce
Dernière modification par disneb (20-04-2009 14:49:44)
Hors ligne
disneb a écrit:
n'empêche que aucun de vous n'a mis les deux points
copier-coller intempestif
Hors ligne