Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Je voudrais savoir si quelqu'un a déjà rencontré des problèmes avec des DW en querymode quand il utilise en critère de recherche des caractères particulier, par exemple si le met dans une des zones de recherches : #, en interogeant ensuite le SQLSELECT, il a fait disparaitre le #, et c'ets la même chose pour d'autres caractères.
Une idée ?
Merci
Hors ligne
En pb 8.04 ( 10521 )
Hors ligne
tu peux me donner un exemple bien precis ?
que je fasse le test sur mon poste aussi.
Hors ligne
J'ai une DW grid de 3 colonnes ( nom, prenom, sexe ) par exemple,
quand la DW passe en quaery mode, dans nom je saisie #TEST ( c'est visible a l'écran même après Tab )
J'utilise un bouton qui me donne ensuite le GETSQL après un acceptText et la je vois qqc comme : select .... where .... nom = ''
au lieu de nom ='#TEST' , et si je fais la même chose avec TEST sans le dièse ca fonctionne ???
Hors ligne
Salut, as-tu essayé avec "\#TEST" ou "~#TEST" ?
Et en mode executable le problème est le même ?
Hors ligne
Si j'utilise le \ ou ~alors dés que je sort du champ avec tab, la zone se vide
Ce n'est pas normal il devrait se contenter de prendre la saisie utilisateur ou d'afficher un message comme quoi
la valeur ne convient pas non ?
Hors ligne
tu peux mettre tes scripts ?
je voudrais reproduire le cas...
Hors ligne
Bonjour
Difficile de mettre les scripts, car c'est sur une fenêtre qui hérite de beaucoup d'objets propre à notre appli, mais c'est relativement simple :
DW en query mode : dw_query, derriere une DW retrieve pour afficher les résultats
Sur bouton chercher
//--------------- Retrieve Mode dw_query.visible = false dw_retrieve.visible = true // récupération de la requête et transformation avec des LIKE dw_query.accepttext() ls_requete = dw_query.GetSQLSelect ()
Et la ls_requete ne contient pas ce qui est affiché dans la query ( sans le # en tout cas )
Hors ligne
le getsql permet seulement de retrouver le "select ..from..where " de ta datawindow...
entre temps, les query ont été rajoutés aux "where" ?
et comment ca marche ce mecanisme ?
normalement, tu recuperes ta valeur
ls_valeur = this.getitemstring(row,"toto")
et apres, tu rajoutes cela dans la clause where non ?
Hors ligne
Ben non,
en fait la dw en querymode permet à l'utilisateur de rentrer ses critères, et de les intégrer à la query de la DW
ensuite, quand il clique sur chercher, le GetSql, me permet de récuperer la requete de la DW avec les critères
utilisateur, pour en fait pouvoir remplacer certains = par des likes ( pour mon appli )
Sinon il n'y a plus d'interet ) passer en querymode, j'ai 20 lignes, 5 colonnes, si je dois tout scanner pour reconstruire la requette ....
Ca marche trés bien mais certains caractères spéciaux comme le # ne sont apparament pas repris la requete obtenue par GetSql
Hors ligne
une question bete pour m'eclaircir :
c'est quoi le querymode pour toi ?
peut etre que j'ai mal compris ta question...
c'est du retrieve argument ? ou du clause where dynamique ? ou autres ?
Hors ligne
Le queryMode : Passer la dw dans un mode ou l'utilisateur peut indiquer ces critères de recherche, à partir des champs qu'on a dans la dw
En fait j'utilise 2 DW avec le même dataobject, une qui sera en querymode, l'autre qui affichera le résultat
Dans la première l'utilisateur saisi ses critères
Il clique sur chercher
Dans la seconde je reprend le SQLSelect de la premiere et je retrieve ( donc avec les paramètres de l'utilisateur )
Hors ligne
Effectivement si je met ##TEST, je récupère bien ce que je veux mais ne suis pas sur que l'utilisateur va accepter de doubler à chaque fois
Il y a une raison particulière à ce type de fonctionnement ?
Hors ligne
esteph a écrit:
Effectivement si je met ##TEST, je récupère bien ce que je veux mais ne suis pas sur que l'utilisateur va accepter de doubler à chaque fois
Sinon écris une fonction qui double les # et ça sera transparent pour l'utilisateur.
Hors ligne
je ne sais pas si c'est un bug pb...
en tout cas, ton mode query est assez limité en terme de criteres. essayes de mettre un "&"...
ce bug existe deja sur le code exemple de pb, fourni avec l'installation de pb.
bref, quoi qu'il en soit, je n'utilise pas ce mode. chez moi, ca passe plutot par un retrieve argument.
Hors ligne
J'utilise ce mode pour toutes les fenêtres type boîtes de recherche, et c'est plutot confortable et trés rapide comme mode,
mais j'avais pas encore vu le problème des caratères particuliers
Reste à trouver un moyen élégant de corriger
Car la je ne parviens pas à changer les valeurs de ma DW en querymode, par code le Object.Data[row, col] ne fonctionne pas, ni le getitemxxx
Je vais essayer sur l'itemchanged, a voir ...
Hors ligne
Impossible de récuperer la requete avec le #, quelque soit le moment ou je demande la requete, le # a sauté
et impossible de modifier les valeurs par code avec setitem...
et la solution de doublez le # quand l'utilisateur tape n'est franchement pas terrible
une idée de remplacement ?
Hors ligne