Copiar todos los registro de una grid a una tabla

Tengo un formulario con una grid, donde he filtrado los datos de una tabla y solo me parecen los datos flitrados en la grid. He utilizado tu código para copiar los datos de la gris a una tabla, pero solo he logrado copiar un registro. ¿Cómo hago para que se me copien todos los registros filtrados en la grid a una tabla que contiene la misma estructura?

El código que he utilizado es:

select PAGOFACTURA
INSERT INTO PAGOFACTURA(factura,fecha,vinculado,nombres,docu,tipdocu,producto,valor,cantidad,total,descuentos,totalser,estado) 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,THISFORM.Grid1.Column6.Text1.Value,THISFORM.Grid1.Column7.Text1.Value,THISFORM.Grid1.Column8.Text1.Value,THISFORM.Grid1.Column9.Text1.Value,THISFORM.Grid1.Column10.Text1.Value,THISFORM.Grid1.Column11.Text1.Value,THISFORM.Grid1.Column12.Text1.Value,THISFORM.Grid1.Column13.Text1.Value)
Tableupdate (.t.)
THISFORM. Refresh

Respuesta
1

El método más limpio y rápido es:

Reemplaza todo esto...

select PAGOFACTURA
INSERT INTO PAGOFACTURA(factura,fecha,vinculado,nombres,docu,;
tipdocu,producto,valor,cantidad,total,descuentos,totalser,estado) ;
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,;
THISFORM.Grid1.Column6.Text1.Value,THISFORM.Grid1.Column7.Text1.Value,;
THISFORM.Grid1.Column8.Text1.Value,THISFORM.Grid1.Column9.Text1.Value,;
THISFORM.Grid1.Column10.Text1.Value,THISFORM.Grid1.Column11.Text1.Value,;
THISFORM. Grid1. Column12. Text1. Value, THISFORM. Grid1. Column13. Text1.Value)

Por esto...

INSERT INTO PagoFactura ;
    Select * From <NombreTablaOrigen> Where <CondiciónFiltro>

Si las tablas tienen la misma estructura esto debería resolverte el problema.

¡Gracias!  voy a intentarlo.

No me da resultado. 

INSERT INTO PagoFactura ;

Select * From <pagofactura> Where <CondiciónFiltro>

no se que condiciónfiltro colocar.

gracias

debo copiar la información filtrada en la  Grid a la tabla pagoafactura.dbf

La condición del Filtro que debes colocar es la misma que usas para filtrar al grid.

La fórmula es:

INSERT INTO PagoFactura ;
    Select * From <NombreTablaOrigen> Where <CondiciónFiltro>

El nombre de la tabla que te indico como <NombreTablaOrigen> es el nombre de la tabla que has filtrado imaginemos que la tabla origen se llama "Facturas" que es a su vez la tabla que has filtrado; entonces quedaría así..

INSERT INTO PagoFactura ;
    Select * From Facturas Where <CondiciónFiltro>

La condiciónFiltro es como antes te mencioné la misma condición que has indicado para hacer el filtro del grid.

Si no te da resultado muéstrame que condición usaste en SET FILTER TO.. y el nombre de la tabla a la que le aplicaste el filtro y podré escribirte el código como va exactamente.

Este es el código que utilizo, no me funciona

select PAGOFACTURA
INSERT INTO PagoFactura ;

Select * From pagofactura Where (((fecha>=thisform.txtfechadesde.value) .and. (docu=thisform.txtdocu.value).AND.(fecha<=thisform.txtfechahasta.value)))

El SELECT FROM debe hacer alusión a la tabla desde donde copiaras los datos, no puede ser la misma a la cual insertas los datos... usas INSERT TO PagoFactura Select From PagoFactura... ¿lo ves?, es la misma tabla. La tabla indicada en el Select debe ser la tabla desde donde quieres copiar hacia PagoFactura. ¿No se si me hice entender?.

Dame por favor el nombre de la tabla que es la que filtras en el grid para corregir ese código.

el nombre de la tabla origen es: compra.dbf

el nombre de la tabla destino es: pagofactura.dbf

INSERT INTO PagoFactura ;
Select * From compra Where (((fecha>=thisform.txtfechadesde.value) .and. (docu=thisform.txtdocu.value).AND.(fecha<=thisform.txtfechahasta.value)))

El mensaje de error que te indica es que la tabla compras tiene más o tal vez menos campos que la tabla pagofactura; entonces has lo siguiente

INSERT INTO PagoFactura ;
    (factura,fecha,vinculado,nombres,docu,tipdocu,producto,;
    valor,cantidad,total,descuentos,totalser,estado) ;
    Select factura,fecha,vinculado,nombres,docu,tipdocu,producto,;
    valor,cantidad,total,descuentos,totalser,estado ;
    From compra Where (((fecha>=thisform.txtfechadesde.value) .and.;
    (docu=thisform.txtdocu.value).AND.;
    (fecha<=thisform.txtfechahasta.value)))

Solo verifica que los nombre de los campos de COMPRAS indicados después del SELECT sean los de COMPRAS.

¡Gracias! 

Me funciona perfectamente. te agradezco infinitamente. una abrazo

De nada Aaron, otro abrazo a ti.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas