Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour Cher tous,
Je suis préoccupé par un problème de passage d'argument à ma datawindow, en fait mes arguments sont de type datetime.
J'utilise une base de données SQL Server et je passer par ODBC. Quand je fait le retrieve de ma datawindow avec des arguments.
J'ai le message suivant.
Select error : SQLSTATE = 22008
[Microsoft][ODBC SQL Server Driver][SQL Server]Echec de la conversion d'une valeur datetime à partir d'une chaîne de caractères.
Et pourtant les variables que je passe en argument à ma datawindow sont de type datetime mais il m'affiche cette erreur.
J'ai également essayer de construire par le script la requête de ma datawindow, je la passe par la methode setsqlselect(...) ça se passe sans problème mais la datawindow perd cette fois la "update capability"
Je ne comprend pas qu'elle est la source du problème subitement, parce qu'il me semble que cela marchait.
D'avance je vous dis merci[]
Dernière modification par b2oba (19-01-2009 07:32:40)
Hors ligne
Bonjour,
Pourrais-tu nous montrer les scripts en question (Appel du retrieve, requête de la datawindow, etc...)?
Hors ligne
Requête de la datawindow
Voici la liste des arguments :
1. arg_matricule : Number
2. arg_dateinf : Datetime
3. arg_datesup : Datetime
4. arg_userconnected : String:
Et il n'y a que les champ de la table pointage qui sont éditables
SELECT pointage.matricule, pointage.dpointage, pointage.lcommentrh, pointage.dusercreated, pointage.cusercreated, pointage.dusermodified, pointage.cusermodified, pointage.lcommentservice, pointage.bvalidation, pointage.nmotif, pointage_v.binout,dbo.GetCurretDeltaTime(pointage.matricule, pointage.dpointage) AS DeltaTime, :arg_userconnected as connecte FROM pointage LEFT OUTER JOIN pointage_v ON pointage.matricule = pointage_v.nmatricule AND pointage.dpointage = pointage_v.dpointage where ( (pointage.matricule = :arg_matricule) And (pointage.dpointage >= :arg_dateinf) and ( pointage.dpointage <= :arg_datesup) )
Code qui fait mon retrieve.
dw_pointage.retrieve( il_matriculeagent, datetime(date(em_date_inf.text)) , datetime(date(em_date_sup.text)), user.is_username)
Hors ligne
Tu as vérifié le code retour de la conversion en datetime des editmasks em_date_inf.text et em_date_sup.text?
Hors ligne
Oui j'ai vérifié cela, ça me donne la date au format jj/mm/yyyy hh:mm:ss (exemple : 19/01/2009 06:40:00)
J'ai fait également un test en passant le resultat provenant d'une autre datawindow par la methode GetItemDateTime(....).
Quand j'affiche le valeur de mes arguments avant des les passer à la Datawindow, ils sont au format : jj/mm/yyyy hh:mm:ss
Je ne me retrouve pas, parce que ça m'a l'air logique.
Merci pour l'attention que vous portez à ce problème.
D'avance merci.
Hors ligne
Le message d'erreur est systématique, ou se produit dans certains cas?
Hors ligne
Il es systèmatique.
J'ai compris par la suite en faisant des tests que la datawindow ne support pas ceci dans le select (Colonne dynamique)
:arg_userconnected as connecte
Quand j'enlève cette colonne dynamique, le problème ne se posse. pourriez vous également me dire si ce n'est pas conseillé.
Merci
Hors ligne
b2oba a écrit:
J'ai compris par la suite en faisant des tests que la datawindow ne support pas ceci dans le select (Colonne dynamique)
:arg_userconnected as connecte
Quand j'enlève cette colonne dynamique, le problème ne se posse. pourriez vous également me dire si ce n'est pas conseillé.
étrange, je n'ai pas ce problème en mettant un argument dans le select... (oracle, driver natif)
Hors ligne
Bonjour,
Attention éventuellement aux caractères spéciaux contenus dans la variable (arg_userconnected) qui peuvent changer la nature de la requête du type quote ou double quote, @ ...
Hors ligne