Actualizar un campo en una dw

Estoy haciendo una ventana que carga artículos en donde uno de los campos dentro de la dw es grupos a los cuales pertenece ese articulo. Ademas esa dw tengo subgrupos que tendrían que mostrarse los subgrupos dependiendo del grupo que haya seleccionado anteriormente. Como hago para que dependiendo del grupo me muestre los subgrupos corresp.
Tabla articulos (cod_art,nom_art,nro_grupo,sub_grupo,descripcion)
Tabla grupos (nro_grupo,nom_grupo)
Tabla sub_grupos(nro_subgrupo,nro_grupo,nom_subgrupo)

2 respuestas

Respuesta
1
Lo que tienes que hacer es usar un datawindowchild para tus artículos y sub_grupos
Lo primero que debes hacer es crea un dddw para tu campo sub_grupo pero con el argumento el código del grupo..
Luego otro dddw para tu campo articulo con los argumentos de recuperación cod_grupo y sub_grupo
Asignas estos dddw a cada uno de los campos en tu datawindow.. cada uno con su respectivo campo..
Luego en el evento itemchanged() de tu datawindows haz esto..
Lo que haremos sera recuperar todos los sub_grupos de acuerdo al grupo que haya seleccionado
datawindowchild dwc_recupera
if getcolumnname() = "nro_grupo" then
cdw_datos.Getchild("sub_grupo",dwc_recupera)
dwc_recupera.SetTransObject(sqlca)
dwc_recupera.retrieve(long(data))
elseif getcolumnname() = "sub_grupo" then
//aqui recuperaremos todos los articulos del grupo y sub grupo seleccionado
li_grupo = cdw_datos.getitemnumber(1, "nro_grupo")
//aqui no te vendria mal un control del valor de li_grupo.. lo dejo a tu cargo..
cdw_datos.Getchild("articulo",dwc_recupera)
dwc_recupera.SetTransObject(sqlca)
dwc_recupera.retrieve(li_grupo, long(data))
end if
Esto hará que cada vez que elija un Grupo filtre solo los sub grupos de ese grupo y así lo mismo con los artículos
de acuerdo al argumento que colocamos en los dddw...
Antes de insertar una linea en du datawindow también debes hacer esto..
Por que o sino te saltara una pantalla pidiéndote el argumento..
Para ese caso puedes tirarle cualquier valor.. ya veras tu el mejor que te parezca...
Ante cualquier problema no dudes en consultar..
Respuesta
1
Lo que tienes que hacer es lo siguiente:
Suponiendo que:
Dw_1 es la tabla artículos
Dw_2 es la tabla grupos
dw_3 es la tabla sub_grupos
En el primer datawindow, en el evento itemchanged escribe el siguiente script:
Long num_grupo
num_grupo = dw_1.Object.nro_grupo(dw_1.GetRow())
dw_2.Retrieve(num_grupo)
En el segundo datawindow, en el evento itemchanged escribe:
Long num_subgrupo
num_subgrupo = dw_2.Object.nro_subgrupo(dw_2.GetRow())
dw_3.Retrieve(num_subgrupo)
Eso es todo.
Pero te recomiendo que normalices mejor tu tabla, por que no hay lógica de que las tres tablas se relacionen con el mismo campo (nro_grupo), mi consejo sería que artículo se agrupe con grupos y grupos con subgrupos, por medio de los campos en donde te muestro el script.
Además deberás crear en los dos últimos datawindow un valor para pasarlo por parámetro.
Cualquier duda solo pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas