Problemas con DBGrid

Estoy interesado en un código sencillo que me permita
introducir varios registros desde un dbgrid asociado a una
tabla en especifico hasta una tabla de detalle y otra tabla cabecera.
He realizado algunos intentos conectando el dbgrid con un datasource,
y este me inserta solo un registro en la tabla e ignora los demás, y
cuando trato de limpiar el dbgrid para insertar otro registro se borran
los registros de la tabla desde la cual el dbgrid trae los datos.
Favor de ayudarme. Muchas gracias.

1 respuesta

Respuesta
1
Por que no posteas el código que te da problemas y así podemos ver donde esta tu falla...
Muchas gracias por tu respuesta, aquí te mando el código que utilizo.
En el botón de guardar:
Table2.Insert;
Table2.Edit;
Table2.FieldByName('CODIGO').AsFloat :=Table1.FieldByName('CODIGO').ASFLOAT;
Table2.FieldByName('PRECIO').AsFloat :=Table1.FieldByName('PRECIO').ASFLOAT;
Table2.FieldByName('CANTIDAD').AsFloat :=Table1.FieldByName('CANTIDAD').ASFLOAT;
Table2.Post;
Y en el evento OnKeyPress del dbgrid:
Dbgrid1.Fields[0].AsFLOAT:=Table1.FieldbyName('CODIGO').AsFLOAT;Dbgrid1.Fields[1].AsString:=Table1.FieldbyName('PRODUCTO').AsString;Dbgrid1.Fields[2].AsFLOAT:=Table1.FieldbyName('CANTIDAD').AsFLOAT;Dbgrid1.Fields[3].AsFLOAT:=Table1.FieldbyName('PRECIO').AsFLOAT;
Dbgrid1.Fields[1].FocusControl;
Table1 tengo los artículos y tabla2 es la tabla de detalle.
Te agradeceré cualquier ayuda.
Bueno aquí el primer error que encontré es que pones la tabla en modo inserción e inmediatamente en edición.
Table2.Insert;
Table2.Edit;
En caso de agregar datos con el insert es suficiente... si esto no soluciona tu problema dime que motor de base de datos ocupas y a ver que solución le damos OK.
Hola, gracias por tu respuesta, hice lo que me sugeriste,
quité table1.edit y dejé table1.insert, pero aun así sigue insertando
solo un registro. Yo utilizo como motor de base de datos DBIsam de
Elevate Software.
Prueba con este código, lo que esta en cursiva es lo que ya tienes, solo agrega lo que esta en negrita:
Table1. First
While not(Table1.Eof) do

    Begin
    Table2.Insert;
    Table2.FieldByName('CODIGO').AsFloat :=Table1.FieldByName('CODIGO').ASFLOAT;
    Table2.FieldByName('PRECIO').AsFloat :=Table1.FieldByName('PRECIO').ASFLOAT;
    Table2.FieldByName('CANTIDAD').AsFloat :=Table1.FieldByName('CANTIDAD').ASFLOAT;
    Table2.Post;

    Table1.Next;
    End;
¿Creo qué con eso queda... si no me comentas OK?-..
Hola:
Lo que me sugeriste me funcionó correctamente.
Muchas gracias por tu ayuda.
Me da gusto haber sido de utilidad, solo te pediría de favor que finalices la pregunta para que no ande por ahí flotando en el tablón como no resuelta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas