Power Builder - Ventana tipo Farmacia

   
Vista:

Ventana tipo Farmacia

Publicado por jUAN FRANCO (206 intervenciones) el 17/02/2010 04:35:55
Hola denuevo a todos,
Es urgente porfa:

Ayuda.

Tengo un sistema de ventas, del cual deseo que al momento de agregar los datos del cliente, como Nombre, RUC, DNI, etc, en un datawindow, y conforme yo vaya buscando los productos que el cliente está comprando por codigo en un sle_bus (DENTRO DE LA MISMA VENTANA) y después de encontrarlos, al darle doble click en el producto buscado y encontrado este automáticamente se vaya agregando en otro datawindow que esté debajo del anterior datawindow (en la misma ventana) y al darle clic en un boton vender se vaya guardando en la base de datos, para saber cuanto se ha vendido durante el día.

(Este evento es parecido al sistema de ventas de farmacia, en donde el cliente dice que productos comprar, luego mandan a imprimir y imprimen sus boletas con los productos que el cliente ha pedido.

Producto 01...............................
Producto 02..............................
Producto 03...............................
Producto 04.............................
Etc......

Deseo un breve ejemplo de como poder hacerlo para mejor ilustración.

Gracias de antemano a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ventana tipo Farmacia

Publicado por omar (4 intervenciones) el 22/02/2010 11:52:03
Hola, si tus 2 DWs (supongamos q se llaman dw_1 y dw_2) son iguales (mismos campos en nombre y orden)
puedes utilizar dos funciones de PB para la selección y copiado de cada renglón
1.- dw_1.GetSelectedRow(i) y
2.- dw_1.RowsCopy(llRowIni, llRow_fin, Primary!, dw_2, dw_2.rowcount() + 1, Primary!)

Un breve ejemplo de cómo utilizas el copiado de todo el DW_1 al DW_2
---------------------------------------------------------------------------------------------
Long llRow
Integer i, j, liReturn, liRowsCopy, liRowsMove

IF dw_1.RowCount() > 0 THEN //Valida si el DW_1 no está vacío
FOR i = 1 TO dw_1.RowCount() //Todos los regs del DW_1
llRow = dw_1.GetSelectedRow(i) //Selec TODO el registro 'i' del DW_1 (su posición dentro del DW y sus campos/valores)
IF llRow > 0 THEN //Valida si tienes datos
liRowsCopy = dw_1.RowsCopy(llRow, llRow, Primary!, dw_2, dw_2.rowcount() + 1, Primary!) //copia TODO el registro 'i' del DW_1 del buffer Primario al DW_2 mismo lugar del buffer Primario (no es necesario insertar un reg en blanco en el DW_2 la fuinción lo hace internamente)
i= i + 1 //Incrementas contador para que tome el sig renglon del DW_1
ELSE
EXIT //Si no tienes datos en ese rengón puedes hacer algo aqui(mandar un msj por ej.), en este ej. se sale del bucle ó bien puedes omitir esta validación
END IF
NEXT
END IF

----------------------------------------------------------------------------
Si no coiniciden tus campos tendrías que por cada renglón seleccionar campo por campo y copiarlo al DW_2 en sus respectivos, antes puedes apoyarte 1o en guardarlos en variables (del mismo tipo de dato) y al final pasarlos.
Hay dos maneras de hacerlo el ejemplo de abajo es una manera rápida

String lsCodigo
lsCodigo = dw_1.object.codigo[dw_4.getrow()]
//Dónde
//dw_1 -- Nombre del Data Window CONTROL (ventana)
//object --- Es fijo
//codigo --- Nombre de tu campo del Data Window OBJECT (base de datos)
//[dw_1.getrow()] -- renglón dónde está posicionado el Mouse del Data Window CONTROL (ventana)

//y después lo asignas al campo (que puede o no llamarse igual pero sí debe ser del mismo tipo de datos) del DW_2

//Primero insertas un renglon en el DW_2 y hasta el final
Integer liRow
liRow = dw_2.InsertRow(0) //-- el 0 le indica al DW2 que lo inserte al final
dw_2.object.codigo[liRow] = lsCodigo //Asignas el valor de la var al campo del DW_2

Espero te sirva,
Omar
México D.F.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar