¿Quiero agregar datos a un grid?

Tengo un grid con los siguientes campos:código de articulo, descripción, precio, cantidad y subtotal.

Ahora mi problema es cuando agrego artículos al grid si introduzco el mismo código de articulo que me sume la cantidad anterior con la actual.

Todo esto en el botón añadir:

m.codart=thisform.codart.Value
m.desart=thisform.desart.Value
m.preart=thisform.preart.Value
m.cantidad=thisform.cantidad.Value
m.sub_tot= m.preart * m.cantidad

INSERT INTO tmpfactura FROM memvar

Así siempre me agrega uno sin importar si esta o no.

Se que tengo que preguntar si el código del articulo esta en la tabla temporal que tengo he probado varios códigos pero no resultan.

Si tienen alguna sugerencia decirme...

1 respuesta

Respuesta
1

Espero poder ayudarte! Podes mejor, crear un cursor temporal y cargar los datos del grid ahí... luego "volcar" dicho cursor a tu tabla (.dbf) y así e permitirá agilizar el proceso, evitar errores y sacar subtotales.

Para crear el cursor, en tu form, en el evento INIT()

CREATE CURSOR temp1(Código N(7), Descripción C(50), Precio N(12,2), Cantidad N(12,2), Subtotal N(12,2))

Para cargarlo con datos del grid, podes configurar un botón para ir cargando 1x1 los registros que vas introduciendo al grid, así:

LOCAL lnSuma

SELECT temp1

INSERT INTO temp1 VALUES( THISFORM.Grid1.Column1.Text1.Value, THISFORM.Grid1.Column2.Text1.Value, THISFORM.Grid1.Column3.Text1.Value, THISFORM.Grid1.Column4.Text1.Value, THISFORM.Grid1.Column5.Text1.Value)

Y luego para ir sacando subtotales... en el mismo botón podes hacer una suma e irla mostrando en un textbox

SELECT temp1

CALCULATE SUM(Subtotal) TO lnSuma

THISFORM.Text1.Value = lnsuma

THISFORM. Refresh

Por ultimo, cuando ya hayas cargado todos tus registros en el grid y por consiguiente en tu cursor, volcás el cursor en la tabla y actualizas los datos, así:

SELECT tutabla

APPEND FROM DBF('Temp1')

Proba y me avisas!

hola:

tengo eso CREATE CURSOR temp1(Código N(7), Descripción C(50), Precio N(12,2), Cantidad N(12,2), Subtotal N(12,2)) pero esto lo tengo en el evento BeforeOpentables.

también se me olvido decirte que trabajo com mysql hay esta la base de datos,

por que solo quiero en la tabla temporal "temp1" si ya agregue un articulo y deseo agregar

otro del mismo no me cree otro registro sino que si existe que lo sume si tenia el código

001 y cantidad 2 y vuelvo agregar 001 y quiero 1 mas que lo sume.

tengo todo listo solo me falta ese detalle.

Disculpa la tardanza en contestar! :ES :ES :ES Hmmm según entiendo, lo que debes hacer es esto:

Debes usar un código como este en el cursor temporal:

1. Cargamos el valor del código a buscar en una variable local

LOCAL lncodpro

lncodpro = THISFORM.Grid1.Columncodigo.Text1.VALUE

SELECT temp1

GO TOP

SCAN

IF temp1.codigoproducto = lncodpro

REPLACE cantidad WITH cantidad + THISFORM.Grid1.Columnadecantidad.Text1.Value

REPLACE subtotal WITH subtotal + THISFORM.Grid1.Columnadesubtotal.Text1.Value

ENDIF

ENDSCAN

Añade tu respuesta

Haz clic para o