Argumentos a una datawindow, Por programa pasarlos

Dinámicamente estoy cambiando de datawindows, algunas tienen argumentos otras no. Mediante una función conozco los argumentos y los muestro al usuario para que el ingrese los valores, pero aquí viene el detalle estos pueden ser de diferentes tipos se capturan y se guardan en un arreglo, hasta aquí no hay problema.
Ahora el retrieve es uno para todas mis datawindows, como hacerle para pasarle el valor de los argumentos a la datawindow general y que al momento de hacer dw_general. Retrieve() no falle por falta de argumentos.
¿U otra posibilidad de resolver este caso?

1 respuesta

Respuesta
1
Podrías verificar si todos los parámetros tienen valores y si no es así los conviertes a null
por ejemplo..
variable = //... nose si la tomas de una dw o de un sle.text
if isnull(variable) then setnull(variable)
y en el select de la DW lo utilizas asi -->
where (tabla.columna = :variable or :variable IS NULL)
Cuéntame como te fue.
B<span style="white-space: pre;">uen</span>asTardes <span style="white-space: pre;">Amigo Experto, es que tengo un objeto no visible donde en una función de este centralizo todos los retrieve del control datawindows General,
Y a este de acuerdo al menú le voy cambiando el datastore, Ahora hay algunos que piden argumentos y otros no, cuando piden argumento los detecto y le pido al usuario el valor de los argumentos
Ya tengo el valor almacenados en un arraya, luego en la función donde hago el retrieve al control datawindows, debería poder ejecutar el retrieve enviándole los valores capturados al usuario, los argumentos va de 0. . .n.
como se puede hacer   dw.retrieve(),dw.retrieve(arg1),dw.retrieve(arg1,arg2),dw.retrieve(arg1,arg2,arg3) . . . .</span>
<span style="white-space: pre;">D</span>e antemano gracias por su colaboración
Pues de la manera que lo querés realizar no lo he hecho nunca, y en realidad no se puede a menos que las DW sean creadas con sqlquery = "select ....... where columna ="+string(ll_valor) y ya dentro del sqlquery armes tus select con todos los argumentos para despues hacer dw_general.SetSQLQuery(sqlquery)  y luego dw_1.Retrieve().
Peroooooooo... podrías pasarle a tus DW la misma cantidad de argumentos siempre, es decir...
Cantidad posible de argumentos 5 = arg1, arg2, arg3, arg4, arg5
DW1 tendrá los 5 pero solo utilizará estos 3 --> arg1, arg2, arg5
DW2 tendrá los 5 pero solo utilizará estos 2--> arg3, arg5
DW3 tendrá los 5 pero no utilizará ninguno.
Siempre pasaras los 5 argumentos a tus DW
DW_general. Retireve(arg1, arg2, arg3, arg4, arg5)
y en el select de cada DW comentarás dentro del where los argumentos que no utilizarás
por ej DW1
select * from tabla where columna1 = :arg1 and columna2 = :arg2 and columna5 = :arg5/*:arg3 = :arg4 son las que no utilizarás, deben estar pero sin hacer nada pero comentadas*/
por ej DW2
select * from tabla where columna3 = :arg3 and columna5 = :arg5 /* and :arg1 = :arg4 or :arg1 = :arg2 son las que no utilizarás, deben estar pero sin hacer nada pero comentadas*/
por ej DW3
select * from tabla /*where columna1 = :arg1 and columna2 = :arg2  and columna3 =:arg3  and columna4 = :arg4 and columna5 = :arg5 son las que no utilizarás, deben estar pero sin hacer nada pero comentadas*/
Buenas tardes experto, muchas gracias por su colaboración como me indicaba la primera solución así lo hice pero sobre un datastore en memoria o y luego le hice un rowscopy al principal ya que no dejaba hacer retrieve debido a que siempre espera los argumentos, todo esto me funciona bien cuando el datastore se alimenta desde un SQL, pero ahora me queda el inconveniente cuando este mismo se alimenta desde un procedure y está esperando argumentos.
Muchísimas gracias por su colaboración
Buena Tarde

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas