Duda Guardar Informacion de Grid a Base de Datos

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Se puede guardar informacion que se carga en un grid a una base de datos :pc:
Buen día LecheGarai si se puede solo debes de obtener los datos de cada celda del grid te paso un código según el mensaje que me enviaste usas SQLite te pasare algo para usarlo con ese tipo de base de datos.

local nRowsCount = Grid.GetRowCount("Grid1")-1;
if nRowsCount > 0 then
	nTotal =1
	for count=1,nRowsCount do
		nTotal = nTotal + tonumber(Grid.GetCellText("Grid1",count,4));
		sCliente = ComboBox.GetText("ComboCliente");
		sId = Grid.GetCellText("Grid1",count,1);
		sProveedor = Grid.GetCellText("Grid1", count,2);
		sCantidad = tonumber(Grid.GetCellText("Grid1", count, 3));			
		sTotal = tonumber(Grid.GetCellText("Grid2",count,4));
		
		SQLite.Query(db,"insert into RegistroFacturas values(NULL, '"..sCliente.."','"..sProveedor.."', '"..sCantidad.."', '"..sTotal.."')");
		nLastError = Application.GetLastError();                                 
		if nLastError ~= SQLite.OK then                                          
			Dialog.Message("Error: " .. nLastError, SQLite.GetLastErrorString().."Facturas");
		end  
		
		
		
	end	

end

con ese código lograras guardar el contenido de tu Grid recuerda que esto solo es un ejemplo de como usar el código, los campos que te agrego solo son referenciales vos tenes que usar tus campos y agregar mas si son necesarios puedes llamar informacion de input, combobox o checkbox como gustes.
Agotaras123 escribió:
30 Oct 2019 16:38
Buen día LecheGarai si se puede solo debes de obtener los datos de cada celda del grid te paso un código según el mensaje que me enviaste usas SQLite te pasare algo para usarlo con ese tipo de base de datos.

local nRowsCount = Grid.GetRowCount("Grid1")-1;
if nRowsCount > 0 then
	nTotal =1
	for count=1,nRowsCount do
		nTotal = nTotal + tonumber(Grid.GetCellText("Grid1",count,4));
		sCliente = ComboBox.GetText("ComboCliente");
		sId = Grid.GetCellText("Grid1",count,1);
		sProveedor = Grid.GetCellText("Grid1", count,2);
		sCantidad = tonumber(Grid.GetCellText("Grid1", count, 3));			
		sTotal = tonumber(Grid.GetCellText("Grid2",count,4));
		
		SQLite.Query(db,"insert into RegistroFacturas values(NULL, '"..sCliente.."','"..sProveedor.."', '"..sCantidad.."', '"..sTotal.."')");
		nLastError = Application.GetLastError();                                 
		if nLastError ~= SQLite.OK then                                          
			Dialog.Message("Error: " .. nLastError, SQLite.GetLastErrorString().."Facturas");
		end  
		
		
		
	end	

end

con ese código lograras guardar el contenido de tu Grid recuerda que esto solo es un ejemplo de como usar el código, los campos que te agrego solo son referenciales vos tenes que usar tus campos y agregar mas si son necesarios puedes llamar informacion de input, combobox o checkbox como gustes.
Gracias Amigo
Trate de utilizar tu codigo Don Castillo pero no me guarda la info en la BD Sqlite
local nRowsCount = Grid.GetRowCount("Grid1")-1;
if nRowsCount > 0 then
	nTotal =1
	for count=1,nRowsCount do
		nTotal = nTotal + tonumber(Grid.GetCellText("Grid1", count, 5));
		
		sFactura = Input.GetText("Inp_Factura");
        sIgv = ComboBox.GetText("Cbx_Impuesto")
        sCliente = Input.GetText("Inp_Cliente");
        sDireccion = Input.GetText("Inp_Direccion");
        sVendedor = ComboBox.GetText("Cbx_Vendedor");
        sFecha = Label.GetText("LblFecha");
        sHora = Label.GetText("LblHora");
		
		sCodigo = Grid.GetCellText("Grid1",count,1);
		sUnidad = Grid.GetCellText("Grid1", count,2);
		sNombre = tonumber(Grid.GetCellText("Grid1", count, 3));			
		sVenta = tonumber(Grid.GetCellText("Grid1",count,4));
		sTotal = tonumber(Grid.GetCellText("Grid1",count,5));
		
		SQLite.Query(db,"insert into Facturas values(NULL, '"..sFactura.."','"..sIgv.."','"..sCliente.."','"..sDireccion.."','"..sVendedor.."','"..sFecha.."','"..sHora.."', '"..sCodigo.."','"..sUnidad.."', '"..sNombre.."', '"..sVenta.."', '"..sTotal.."' )");
		nLastError = Application.GetLastError();                                 
		if nLastError ~= SQLite.OK then                                          
			Dialog.Message("Error: " .. nLastError, SQLite.GetLastErrorString().."Facturas");
		end  
		
		
		
	end	

end

Esta es mi Tabla Factura:
SQLite.Query(db,"CREATE TABLE Facturas (RecordID INTEGER  PRIMARY KEY,"
.."\r\n Factura text, "
.."\r\n Igv text, "
.."\r\n Cliente text, "
.."\r\n Direccion text, "
.."\r\n Vendedor text, "
.."\r\n Fecha text, "
.."\r\n Hora text, "

.."\r\n Codigo text, "
.."\r\n Unidad text, "
.."\r\n Nombre text, "
.."\r\n Venta text, "
.."\r\n Total text )");
mostra como cargas los datos a tu grid y tu boton de guardar para ver como lo tienes y ver que es lo que tienes mal.
Agotaras123 escribió:
31 Oct 2019 16:06
mostra como cargas los datos a tu grid y tu boton de guardar para ver como lo tienes y ver que es lo que tienes mal.
Ok se lo envio por interno
local nRowsCount = Grid.GetRowCount("Grid1");
if nRowsCount > 0 then
nTotal =1
for count=1,nRowsCount do
	
nTotal = Grid.GetCellText("Grid1", count, 50) 
		
		sFactura = Input.GetText("Inp_Factura");
        sIgv = ComboBox.GetText("Cbx_Impuesto")
        sCliente = Input.GetText("Inp_Cliente");
        sDireccion = Input.GetText("Inp_Direccion");
        sVendedor = ComboBox.GetText("Cbx_Vendedor");
        sFecha = Label.GetText("LblFecha");
        sHora = Label.GetText("LblHora");
		
		sCodigo1 = Grid.GetCellText("Grid1", count, 1);
		sUnidad1 = Grid.GetCellText("Grid1", count, 2);
		sNombre1 = Grid.GetCellText("Grid1", count, 3);			
		sVenta1 =  Grid.GetCellText("Grid1", count, 4);
		sTotal1 =  Grid.GetCellText("Grid1", count, 5);
		
		sCodigo2 = Grid.GetCellText("Grid1", count, 6);
		sUnidad2 = Grid.GetCellText("Grid1", count, 7);
		sNombre2 = Grid.GetCellText("Grid1", count, 8);			
		sVenta2 =  Grid.GetCellText("Grid1", count, 9);
		sTotal2 =  Grid.GetCellText("Grid1", count, 10);
		
		sCodigo3 = Grid.GetCellText("Grid1", count, 11);
		sUnidad3 = Grid.GetCellText("Grid1", count, 12);
		sNombre3 = Grid.GetCellText("Grid1", count, 13);			
		sVenta3 =  Grid.GetCellText("Grid1", count, 14);
		sTotal3 =  Grid.GetCellText("Grid1", count, 15);
		
		sCodigo4 = Grid.GetCellText("Grid1", count, 16);
		sUnidad4 = Grid.GetCellText("Grid1", count, 17);
		sNombre4 = Grid.GetCellText("Grid1", count, 18);			
		sVenta4 =  Grid.GetCellText("Grid1", count, 19);
		sTotal4 =  Grid.GetCellText("Grid1", count, 20);
		
		sCodigo5 = Grid.GetCellText("Grid1", count, 21);
		sUnidad5 = Grid.GetCellText("Grid1", count, 22);
		sNombre5 = Grid.GetCellText("Grid1", count, 23);			
		sVenta5 =  Grid.GetCellText("Grid1", count, 24);
		sTotal5 =  Grid.GetCellText("Grid1", count, 25);
		
		sCodigo6 = Grid.GetCellText("Grid1", count, 26);
		sUnidad6 = Grid.GetCellText("Grid1", count, 27);
		sNombre6 = Grid.GetCellText("Grid1", count, 28);			
		sVenta6 =  Grid.GetCellText("Grid1", count, 29);
		sTotal6 =  Grid.GetCellText("Grid1", count, 30);
		
		sCodigo7 = Grid.GetCellText("Grid1", count, 31);
		sUnidad7 = Grid.GetCellText("Grid1", count, 32);
		sNombre7 = Grid.GetCellText("Grid1", count, 33);			
		sVenta7 =  Grid.GetCellText("Grid1", count, 34);
		sTotal7 =  Grid.GetCellText("Grid1", count, 35);
		
		sCodigo8 = Grid.GetCellText("Grid1", count, 36);
		sUnidad8 = Grid.GetCellText("Grid1", count, 37);
		sNombre8 = Grid.GetCellText("Grid1", count, 38);			
		sVenta8 =  Grid.GetCellText("Grid1", count, 39);
		sTotal8 =  Grid.GetCellText("Grid1", count, 40);
		
		sCodigo9 = Grid.GetCellText("Grid1", count, 41);
		sUnidad9 = Grid.GetCellText("Grid1", count, 42);
		sNombre9 = Grid.GetCellText("Grid1", count, 43);			
		sVenta9 =  Grid.GetCellText("Grid1", count, 44);
		sTotal9 =  Grid.GetCellText("Grid1", count, 45);
		
		sCodigo10 = Grid.GetCellText("Grid1", count, 46);
		sUnidad10 = Grid.GetCellText("Grid1", count, 47);
		sNombre10 = Grid.GetCellText("Grid1", count, 48);			
		sVenta10 =  Grid.GetCellText("Grid1", count, 49);
		sTotal10 =  Grid.GetCellText("Grid1", count, 50);
		
		sSubTotal = Paragraph.GetText("to_Descuento");
        sImpuesto = Paragraph.GetText("to_Impuesto")
        sTotalFinal = Paragraph.GetText("TotalPago");
        
SQLite.Query(db, "insert into Facturas values(NULL, '"..sFactura .."', '"..sIgv .."', '"..sCliente .."', '"..sDireccion .."', '"..sVendedor .."', '"..sFecha .."', '"..sHora .."', '"..sCodigo1 .."', '"..sUnidad1 .."', '"..sNombre1 .."', '"..sVenta1 .."', '"..sTotal1 .."', '"..sCodigo2 .."', '"..sUnidad2 .."', '"..sNombre2 .."', '"..sVenta2 .."', '"..sTotal2 .."', '"..sCodigo3 .."', '"..sUnidad3 .."', '"..sNombre3 .."', '"..sVenta3 .."', '"..sTotal3 .."', '"..sCodigo4 .."', '"..sUnidad4 .."', '"..sNombre4 .."', '"..sVenta4 .."', '"..sTotal4 .."', '"..sCodigo5 .."', '"..sUnidad5 .."', '"..sNombre5 .."', '"..sVenta5 .."', '"..sTotal5 .."', '"..sCodigo6 .."', '"..sUnidad6 .."', '"..sNombre6 .."', '"..sVenta6 .."', '"..sTotal6 .."', '"..sCodigo7 .."', '"..sUnidad7 .."', '"..sNombre7 .."', '"..sVenta7 .."', '"..sTotal7 .."', '"..sCodigo8 .."', '"..sUnidad8 .."', '"..sNombre8 .."', '"..sVenta8 .."', '"..sTotal8 .."', '"..sCodigo9 .."', '"..sUnidad9 .."', '"..sNombre9 .."', '"..sVenta9 .."', '"..sTotal9 .."', '"..sCodigo10 .."', '"..sUnidad10 .."', '"..sNombre10 .."', '"..sVenta10 .."', '"..sTotal10 .."', '"..sSubTotal .."', '"..sImpuesto .."', '"..sTotalFinal.."')");

Dialog.TimedMessage("Informe", "Felicidades "..sCliente.." La Factura se a creado con exito", 2000, MB_ICONINFORMATION)
      nLastError = Application.GetLastError();
      if nLastError ~= SQLite.OK then
      Dialog.Message("Error: "..nLastError, SQLite.GetLastErrorString());
      
end
end
end
DialogEx.Show("AgFac");
luasqlite escribió:
01 Nov 2019 04:13
local nRowsCount = Grid.GetRowCount("Grid1");
if nRowsCount > 0 then
nTotal =1
for count=1,nRowsCount do
	
nTotal = Grid.GetCellText("Grid1", count, 50) 
		
		sFactura = Input.GetText("Inp_Factura");
        sIgv = ComboBox.GetText("Cbx_Impuesto")
        sCliente = Input.GetText("Inp_Cliente");
        sDireccion = Input.GetText("Inp_Direccion");
        sVendedor = ComboBox.GetText("Cbx_Vendedor");
        sFecha = Label.GetText("LblFecha");
        sHora = Label.GetText("LblHora");
		
		sCodigo1 = Grid.GetCellText("Grid1", count, 1);
		sUnidad1 = Grid.GetCellText("Grid1", count, 2);
		sNombre1 = Grid.GetCellText("Grid1", count, 3);			
		sVenta1 =  Grid.GetCellText("Grid1", count, 4);
		sTotal1 =  Grid.GetCellText("Grid1", count, 5);
		
		sCodigo2 = Grid.GetCellText("Grid1", count, 6);
		sUnidad2 = Grid.GetCellText("Grid1", count, 7);
		sNombre2 = Grid.GetCellText("Grid1", count, 8);			
		sVenta2 =  Grid.GetCellText("Grid1", count, 9);
		sTotal2 =  Grid.GetCellText("Grid1", count, 10);
		
		sCodigo3 = Grid.GetCellText("Grid1", count, 11);
		sUnidad3 = Grid.GetCellText("Grid1", count, 12);
		sNombre3 = Grid.GetCellText("Grid1", count, 13);			
		sVenta3 =  Grid.GetCellText("Grid1", count, 14);
		sTotal3 =  Grid.GetCellText("Grid1", count, 15);
		
		sCodigo4 = Grid.GetCellText("Grid1", count, 16);
		sUnidad4 = Grid.GetCellText("Grid1", count, 17);
		sNombre4 = Grid.GetCellText("Grid1", count, 18);			
		sVenta4 =  Grid.GetCellText("Grid1", count, 19);
		sTotal4 =  Grid.GetCellText("Grid1", count, 20);
		
		sCodigo5 = Grid.GetCellText("Grid1", count, 21);
		sUnidad5 = Grid.GetCellText("Grid1", count, 22);
		sNombre5 = Grid.GetCellText("Grid1", count, 23);			
		sVenta5 =  Grid.GetCellText("Grid1", count, 24);
		sTotal5 =  Grid.GetCellText("Grid1", count, 25);
		
		sCodigo6 = Grid.GetCellText("Grid1", count, 26);
		sUnidad6 = Grid.GetCellText("Grid1", count, 27);
		sNombre6 = Grid.GetCellText("Grid1", count, 28);			
		sVenta6 =  Grid.GetCellText("Grid1", count, 29);
		sTotal6 =  Grid.GetCellText("Grid1", count, 30);
		
		sCodigo7 = Grid.GetCellText("Grid1", count, 31);
		sUnidad7 = Grid.GetCellText("Grid1", count, 32);
		sNombre7 = Grid.GetCellText("Grid1", count, 33);			
		sVenta7 =  Grid.GetCellText("Grid1", count, 34);
		sTotal7 =  Grid.GetCellText("Grid1", count, 35);
		
		sCodigo8 = Grid.GetCellText("Grid1", count, 36);
		sUnidad8 = Grid.GetCellText("Grid1", count, 37);
		sNombre8 = Grid.GetCellText("Grid1", count, 38);			
		sVenta8 =  Grid.GetCellText("Grid1", count, 39);
		sTotal8 =  Grid.GetCellText("Grid1", count, 40);
		
		sCodigo9 = Grid.GetCellText("Grid1", count, 41);
		sUnidad9 = Grid.GetCellText("Grid1", count, 42);
		sNombre9 = Grid.GetCellText("Grid1", count, 43);			
		sVenta9 =  Grid.GetCellText("Grid1", count, 44);
		sTotal9 =  Grid.GetCellText("Grid1", count, 45);
		
		sCodigo10 = Grid.GetCellText("Grid1", count, 46);
		sUnidad10 = Grid.GetCellText("Grid1", count, 47);
		sNombre10 = Grid.GetCellText("Grid1", count, 48);			
		sVenta10 =  Grid.GetCellText("Grid1", count, 49);
		sTotal10 =  Grid.GetCellText("Grid1", count, 50);
		
		sSubTotal = Paragraph.GetText("to_Descuento");
        sImpuesto = Paragraph.GetText("to_Impuesto")
        sTotalFinal = Paragraph.GetText("TotalPago");
        
SQLite.Query(db, "insert into Facturas values(NULL, '"..sFactura .."', '"..sIgv .."', '"..sCliente .."', '"..sDireccion .."', '"..sVendedor .."', '"..sFecha .."', '"..sHora .."', '"..sCodigo1 .."', '"..sUnidad1 .."', '"..sNombre1 .."', '"..sVenta1 .."', '"..sTotal1 .."', '"..sCodigo2 .."', '"..sUnidad2 .."', '"..sNombre2 .."', '"..sVenta2 .."', '"..sTotal2 .."', '"..sCodigo3 .."', '"..sUnidad3 .."', '"..sNombre3 .."', '"..sVenta3 .."', '"..sTotal3 .."', '"..sCodigo4 .."', '"..sUnidad4 .."', '"..sNombre4 .."', '"..sVenta4 .."', '"..sTotal4 .."', '"..sCodigo5 .."', '"..sUnidad5 .."', '"..sNombre5 .."', '"..sVenta5 .."', '"..sTotal5 .."', '"..sCodigo6 .."', '"..sUnidad6 .."', '"..sNombre6 .."', '"..sVenta6 .."', '"..sTotal6 .."', '"..sCodigo7 .."', '"..sUnidad7 .."', '"..sNombre7 .."', '"..sVenta7 .."', '"..sTotal7 .."', '"..sCodigo8 .."', '"..sUnidad8 .."', '"..sNombre8 .."', '"..sVenta8 .."', '"..sTotal8 .."', '"..sCodigo9 .."', '"..sUnidad9 .."', '"..sNombre9 .."', '"..sVenta9 .."', '"..sTotal9 .."', '"..sCodigo10 .."', '"..sUnidad10 .."', '"..sNombre10 .."', '"..sVenta10 .."', '"..sTotal10 .."', '"..sSubTotal .."', '"..sImpuesto .."', '"..sTotalFinal.."')");

Dialog.TimedMessage("Informe", "Felicidades "..sCliente.." La Factura se a creado con exito", 2000, MB_ICONINFORMATION)
      nLastError = Application.GetLastError();
      if nLastError ~= SQLite.OK then
      Dialog.Message("Error: "..nLastError, SQLite.GetLastErrorString());
      
end
end
end
DialogEx.Show("AgFac");
Me guarda solo lo que visualizado en los input y combobox y no lo reflejado en el grid, pero si en el grid hay una sola fila de informacion si registra, pero si agrego mas de una fila no guarda:

Esto seria la Primera Fila del Grid.
sCodigo1 = Grid.GetCellText("Grid1", count, 1);
		sUnidad1 = Grid.GetCellText("Grid1", count, 2);
		sNombre1 = Grid.GetCellText("Grid1", count, 3);			
		sVenta1 =  Grid.GetCellText("Grid1", count, 4);
		sTotal1 =  Grid.GetCellText("Grid1", count, 5);
Esto seria la Segunda Fila del Grid.
sCodigo2 = Grid.GetCellText("Grid1", count, 6);
		sUnidad2 = Grid.GetCellText("Grid1", count, 7);
		sNombre2 = Grid.GetCellText("Grid1", count, 8);			
		sVenta2 =  Grid.GetCellText("Grid1", count, 9);
		sTotal2 =  Grid.GetCellText("Grid1", count, 10);
Esto seria la Tercera Fila del Grid.
sCodigo3 = Grid.GetCellText("Grid1", count, 11);
		sUnidad3 = Grid.GetCellText("Grid1", count, 12);
		sNombre3 = Grid.GetCellText("Grid1", count, 13);			
		sVenta3 =  Grid.GetCellText("Grid1", count, 14);
		sTotal3 =  Grid.GetCellText("Grid1", count, 15);
y asi sucesivamente
te cree un vídeo y un ejemplo de como hacer lo que quieres lo puedes ver en este enlace: https://amsspecialist.com/viewtopic.php?f=12&t=6833
Agotaras123 escribió:
01 Nov 2019 18:07
te cree un vídeo y un ejemplo de como hacer lo que quieres lo puedes ver en este enlace: https://amsspecialist.com/viewtopic.php?f=12&t=6833
Esta muy bueno el ejemplo pero he notado que al momento de guardar la factura se generan varias filas de la misma factura con diferente producto.

Lo note porque puse un Dialog.TimedMessage en el boton para guardar y el mensaje me salia igual al numero de veces que incremente las filas
---Dialog.TimedMessage("Informe", "Felicidades "..sCliente.." La Factura se genero con exito", 2000, MB_ICONINFORMATION)
es correcto se guarda un item por cada item de la grid así es como funciona eso, lo que mantiene siempre es el numero de factura, pero los datos de los productos son distintos ya que si tienes 10 item en el grid se guardaran 10 item en la tabla uno correspondiente a cada item del grid.

Esto es total mente diferente a como lo usas vos con los input de tus formularios ya que si tu formato de factura en tu sistema le creas solo 10 files de input en tu tabla crear una columna por cada input en definitiva tu también tiene 100 campos y en ella un item se guarda todo los 100 input, combobox, textbox.
Agotaras123 escribió:
01 Nov 2019 23:53
es correcto se guarda un item por cada item de la grid así es como funciona eso, lo que mantiene siempre es el numero de factura, pero los datos de los productos son distintos ya que si tienes 10 item en el grid se guardaran 10 item en la tabla uno correspondiente a cada item del grid.

Esto es total mente diferente a como lo usas vos con los input de tus formularios ya que si tu formato de factura en tu sistema le creas solo 10 files de input en tu tabla crear una columna por cada input en definitiva tu también tiene 100 campos y en ella un item se guarda todo los 100 input, combobox, textbox.
Me ha servido mucho su ayuda :pc: