Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
salut!
avec le script g peux tout facilement modifier le sqlselect par GetSqlSelect and SetSqlSelect.
et je voudrais svp modifier sqlselect d'un Nested Report?? kelk1 ki peux m'aider?
and also if i want modify DataObject for Nested Report!!
MERCI
Hors ligne
Bonjour,
Pourrais-te formuler ta demande de manière plus intelligible ? (Cf langage SMS ...)
Merci.
Hors ligne
Salut
Excuse DoctorZ
How can I change the sql statment of nested dw in composite report?
i want to add the string in where clause. For example the following script :
string li_clause li_clause= " and exercice = 2007" li_mysql = dw_nested1.getsqlselect() li_mysql = li_mysql + li_clause dw_nested1.SeSqlSelect(li_mysql) .......
I thank it's clear!!
pardon je dois ecrire en francais mais ben ..g m'excuse!
Hors ligne
salut, je ne sais pas si on assure le support en anglais,
pour info pour dans tes messages : pour du code PB utilise la balise [ code= pb ], explications ici, je le modifie ce coup-ci
pour ta question : pourquoi ne pas faire passer ton paramètre exercice en retrieval argument au lieu de changer le script SQL de la DW ?
Hors ligne
ca ce n'est qu'un example..
la contruction d'une string (where clause) est le résultat d'une concatenation de X champ selon le choix de l'utilisateur le choix ou il ya un nombre X de AND et OR , XOR ....et sur 31 champs
donc les argumnts n'est pas practice!!
MERCI
Hors ligne
comment tu récupères ton dw_nested1 dans ton script ?
en principe avec un GetChild ça devrait marcher dans un nested report de composite (et pas dans un nested de dw):
DataWindowChild ldw_Child
dw_composite.Getchild("nested_report", ldw_Child)
ldw_Child.SetTransObject(sqlca)
ldw_Child.SetSqlSelect()
Hors ligne
Salut
oui exactement ca, j'ai utilisé GetChild
Hors ligne
azuldev a écrit:
oui exactement ca, j'ai utilisé GetChild
et ça ne marche pas ? il y a une erreur, un code de retour ?
ta dw principale est composite ou "normale" (grid,tab,form,...) ?
Hors ligne
Peut etre le probleme c'est au niveau syntax.
voila example :
la syntax au niveau de nested report sous forme : "Select .. FROM TABLE1 where live = 0"
alors le code est
datawindowchild li_child integer li_ret //li_sql = li_child.GetSQLselect() est récuperé dans l'event Open de window li_ret = dw_parent.getchild('dw_nested1',li_child) li_child.settransobject(sqlca) li_child.SetSQLselect(li_sql + as_clause ) li_child.retrieve()
et voila l'erreur
puis je test avec la syntax au niveau de nested report sous forme : "Select .. FROM TABLE1 "
sans la clause Where et je l'ajoute en script :
as_clause = as_clause + " AND live = 0"
et ca marche mais je prefere la premiere syntax.
Dernière modification par azuldev (23-04-2007 13:37:02)
Hors ligne
Bonjour azuldev,
Pourrais-tu enregistrer tes images en format gif ou Jpeg: ce sera moins lourd et lisible sur tout type de machines (Le format bmp est propriétaire Windows).
Je corriges cette fois-ci
Merci.
Sinon, qu'as-tu dans tes variables li_sql et as_clause?
Hors ligne
Sorry, d'accord!
li_sql = li_child.GetSQLselect().
as_clause is the string that i added to the clause Where by
li_sql = li_sql + as_clause.
MERCI
Dernière modification par azuldev (23-04-2007 13:47:29)
Hors ligne
Je me suis mal exprimé:
Quand tu exécutes PB en mode debug, que récupères-tu comme chaînes de caractères dans tes variables (Je voudrais voir s'il y a effectivement une erreur de syntaxe SQL)?
Au fait GetSQLSelect() retourne une string, pas un integer: li_sql est bien du type string?
Hors ligne
oui li_sql déclaré string
regarde si je met " AND live=0" dans le sql statement (Data Source) de nested report ne marche pas
et si je le fais avec le script ca marche!! ca veut dire que la syntax initiale (li_sql) est correcte et la string auxiliere (as_clause) l'est aussi ..
MERCI
Hors ligne
hello,
c'est possible de mettre tout le script ?
ainsi que le contenu de ton sql ? (histoire de gagner du temps)
Hors ligne
integer i, li_ret,li_c,li_year string is_type,li_type,li_ligende for i= 1 to integer(dw_search.Object.DataWindow.Column.Count) if trim(string(dw_search.object.data[dw_search.getrow(),i])) <> '' and not isnull(dw_search.object.data[dw_search.getrow(),i]) then is_type = dw_search.describe("#" + string(i) + '.Coltype') li_c=li_c + 1 if mida(is_type,1,3) = 'cha' then li_type = "'" end if as_clause =as_clause + " and " + dw_search.Describe("#" + string(i) + ".dbName") + "="+ li_type + string(dw_search.object.data[dw_search.getrow(),i]) + li_type li_ligende = li_ligende + string(dw_search.object.data[dw_search.getrow(),i]) + " ~n " end if next as_clause =as_clause + " and location.exercice=" + string(li_year) datawindowchild li_child li_ret = dw_parent.getchild('dw_nested1',li_child) li_child.settransobject(sqlca) li_child.SetSQLselect(li_sql + as_clause ) //+ "and ( ( location.live = 0 ) )" li_child.retrieve()
Merci
Hors ligne
tu peux mettre un messagebox sur ton code ?
pour voir le contenu de ta requete.
et nous faire une copie ecran du message affiché ?
integer i, li_ret,li_c,li_year string is_type,li_type,li_ligende for i= 1 to integer(dw_search.Object.DataWindow.Column.Count) if trim(string(dw_search.object.data[dw_search.getrow(),i])) <> '' and not isnull(dw_search.object.data[dw_search.getrow(),i]) then is_type = dw_search.describe("#" + string(i) + '.Coltype') li_c=li_c + 1 if mida(is_type,1,3) = 'cha' then li_type = "'" end if as_clause =as_clause + " and " + dw_search.Describe("#" + string(i) + ".dbName") + "="+ li_type + string(dw_search.object.data[dw_search.getrow(),i]) + li_type li_ligende = li_ligende + string(dw_search.object.data[dw_search.getrow(),i]) + " ~n " end if next as_clause =as_clause + " and location.exercice=" + string(li_year) messagebox("info",li_sql + as_clause ) datawindowchild li_child li_ret = dw_parent.getchild('dw_nested1',li_child) li_child.settransobject(sqlca) li_child.SetSQLselect(li_sql + as_clause ) //+ "and ( ( location.live = 0 ) )" li_child.retrieve()
Hors ligne
ya des champs ...???? .... loool
ya aussi l'arabic qui perturbe la syntax.
Merciii
Dernière modification par azuldev (23-04-2007 15:08:26)
Hors ligne
et pour le message d'erreur
Hors ligne
j'y vois rien
je remets mes lunettes , j'ai mal aux yeux...
ce n'est pas possible de recuperer tout cela dans un string ?
et de mettre sur le site ?
tu fais ca à l'aide du debugger.
sinon, au pire des cas, tu testes, sans l'ajout du clause.
pour voir si ta syntaxe est acceptée ou non.
Hors ligne
excuse!!
1) je teste sans clause et ca marche.
2) je teste en ajoutant la totalité de clause via le script ca marche
3) je teste en mettant une partie de clause dans in the sql Statment ("location.live=0") et le reste avec le script (as_clause) ca marche pas.
bon je detourne le problème: peux je empecher le retrieve du nested report , ca veut dire mettre autoretrieve = false ou une truc comme ca ??
Mercii pour votre patience!
Hors ligne
au fait, c'est quoi ce script, dans le clause where ? "~"location~".~"sorter ...
c'est pas lié à cette construction ?
quoi qu'il en soit, c'est lié par rapport à ta construction du clause where.
Hors ligne
ouiiii
il manque un ")" dans ma construction du clause where ..
Merciiiiiiiiiiiiiiiiiiiiiiii
Avec mes hautes considérations.
RESOLU
Hors ligne