Hi!
I've this method:
METHOD PUBLIC LOGICAL ctmCreaQuery(input v_htt as handle):
DEFINE VARIABLE v-hq AS HANDLE NO-UNDO.
DEFINE VARIABLE v-buftt AS HANDLE NO-UNDO.
DEFINE VARIABLE v-aux AS INTEGER NO-UNDO.
DEFINE VARIABLE PBS-datos AS Progress.Data.BindingSource NO-UNDO.
IF VALID-HANDLE (v_htt) THEN v-buftt = v_htt:DEFAULT-BUFFER-HANDLE.
IF VALID-HANDLE (v-hq) THEN
DO:
v-hq:QUERY-CLOSE ().
DELETE OBJECT v-hq.
END.
CREATE QUERY v-hq.
v-hq:SET-BUFFERS (v-buftt).
v-hq:QUERY-PREPARE ("FOR EACH " + IF VALID-HANDLE (v_htt) THEN v_htt:NAME ELSE v-tablawhere).
v-hq:QUERY-OPEN ().
IF VALID-OBJECT (PBS-datos) THEN DELETE OBJECT PBS-datos.
PBS-datos = NEW Progress.Data.BindingSource (v-hq, P_BDTTcampos, P_BDTTquitarcampos).
ASSIGN
PBS-datos: HANDLE = v-hq
PBS-datos:AllowEdit = FALSE
PBS-datos:AllowRemove = FALSE
PBS-datos:AllowNew = FALSE
.
/* asigna el bindingsource al grid */
ctmGrid1:DataSource = PBS-datos.
ctmgrid1:Refresh().
RETURN YES.
END METHOD.
The problem is that the first time I call the method does well, but if you call back for me to load the grid with another condition I did not do well. If I load the records, but not painted on the grid.
Hi Elena,
First of all. You should define variable v-hq outside of your method. The way you defined it v-hq will never be valid, because it has just been defined. Moreover you have a memoryleak, because you cannot delete the dynamic query that was in this variable anymore.
The same applies to variable PBS_datos. Define it outside the method.
I cannot see what the contents of v-tablawhere is, but are you sure it starts with the name of the buffer ?
Best Regards and succes,
Will