Dar argumentos a dddw desde una ventana

Tengo esta situación.
Estoy desarrollando un sistema contable y me tope con esta situación, utilizo una ventana de selección de asientos contables (aquí no hay problema), para que el usuario pueda escoger el asiento que desee. Cuando se selecciona algún asiento, se abre una ventana aparte para que el usuario pueda editarlo. Aquí viene lo bueno.
La ventana que se abre para editar, tiene un dw_1 con un dddw. Para el dddw, especifiqué, que dependiendo de la fecha del asiento, muestre ciertos datos en el dddw, para ello en el dw que está en el dddw, definí argumentos para recuperar los datos, pero no se me ocurre como suministrarlos para que los recupere y he aquí mi situación.
Antes de abrir la ventana, me aparece otra, la cual me pide argumentos para retrieve, los cuales no deberían aparecer. Una vez que doy los datos, sigo normalmente.
La pregunta es como suministrar los argumentos del dddw que se encuentra en el DW_1 antes o en el momento de abrir la ventana.
Estoy programando con powerbuilder 6.0

1 Respuesta

Respuesta
1
Si el dddw recibe parámetros al momento de escoger una opción, entonces debes hacer lo siguiente:
Getchild('campo',idwc_campo)
idwc_campo.SetTransObject(sqlca)
idwc_campo.InsertRow(0)
Con esto evitaras que te pida los parámetros al abrir la ventana.
Ahora cuando escojas la opción y quieras pasarlo al dddw, haz lo siguiente:
Capturas el dato en una variable por ejm ls_dato luego esto lo pasas al dddw
IF idwc_campo.Retrieve(ls_dato) = 0 then
  idwc_campo.InsertRow(0)
end if
Muchas gracias por su respuesta, pero tengo la siguiente duda.
En donde pongo estas instrucciones, ya que cada vez que abro la ventana me aparece este cuadro de dialogo y no se me ocurre si colocarlo en la ventana evento activate, ¿o en el dw_1 evento constructor o en donde más?.
Ponlo en el evento constructor del dw
Ahora cuando alguien seleccione un dato el script donde esta el if debes colocarlo en el evento itemchanged.
Muchas gracias por tu respuesta, agradezco tu prontitud y detalle. Sin embargo, debido a un problema de comunicación (y de omisión)de mi parte. La respuesta no me sirve. De modo que la voy a reformular con detalle esta vez. Perdón por mi descuido.
Tengo una ventana que le permite al usuario seleccionar asientos contables o también crearlos desde 0. Cuando el usuario selecciona cualquiera de estas opciones se abre una nueva ventana, la cual es el editor del asiento contable a procesar. Dentro de la ventana del editor hay un dw con un dddw, el cual maneja un catálogo de eventos, este dddw requiere de dos argumentos para cargar información específica.
Argumento 1 : compañía que esta procesando (integer)
Argumento 1: fecha del período contable (mes y año) (date)
Antes de que se abra el editor se abre la ventana de argumentos que son estos mencionados arriba. Resulta que el usuario desde mucho antes especificó cual empresa y cual período iba a trabajar, datos que tengo guardado en variables globales, pero que el usuario da por hecho que no se requieren otra vez.
La finalidad de estos campos es mostrar cuales eventos están disponibles de acuerdo al período en que se encuentra trabajando el usuario, por ejemplo
Evento fecha inicial fecha final
    1 01-01-2009 31-03-2009
    2 15-02-2009 31-07-2009
Periodo que trabaja 06-2009
En este caso el dddw debería seleccionar unicamente el segundo evento, de hecho esta parte funciona bien, el problema es como suministrarle de antemano a un dddw la compañía y el período contable actual sin abrir la ventana de argumentos.
Agradezco tu intención y esfuerzo y disculpa mi omisión en la pregunta anterior.
Acepto cualquier otra sugerencia al caso, a veces es más fácil empezá de nuevo que remendar lo hecho.
Muchas gracias...
Ok, te recomiendo que antes de hacer el insert into a tu dw principal el cual contiene el dddw, debes poner en el constructor lo siguiente:
Getchild('campo',idwc_campo)
idwc_campo.SetTransObject(sqlca)
if idwc_campo.Retrieve(valor1,valor2) = 0 then
  idwc_campo.InsertRow(0)
end if
Luego después de esto ya puedes hacer un insert o retrieve a tu dw principal.
Te pide el argumento por que primero estas insertando o mostrando el dw principal y luego quieres pasar los parámetros del dddw.
Es todo lo contrario, primero es el dddw y luego el dw principal.
Muchas gracias, tu respuesta me funcionó a la perfección. Te agradezco me hayas "sacado el clavo", ya que hace días que me tiene como loco esa ventana.
Este mundo sería mucho más fácil de vivir, si hubiese personas como tú, que cuenten con la experiencia y "mañas" para resolver situaciones de forma directa y simple.
Gracias otra vez

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas