Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________
Siguiendo con este tema, es posible leer una planilla y ponerla los
datos en un cursor?
Como seria?
MPerez M.
Hola Miguel
Para colocar en una tabla el contenido de una planilla Excel podrías utilizar un código similar al siguiente:
select VENTAS
DELETE FOR VEN_SISTEM == 1 && Borra todos los registros generados anteriormente a partir de una planilla Excel
&& Las ventas cargadas manualmente tendrán VEN_SISTEM = 0
Fila = 2 && Primera fila que tiene datos, la fila Nº 1 tiene los nombres de las columnas, así que no será procesada
with oExcel.Application
.Visible = .F.
.Application.WorkBooks.Open(NombrePlanilla)
M.VEN_FECHAX = .Cells(Fila, 1) && En la primera columna (A) se encuentra la fecha de la venta
do while VarType(M.VEN_FECHAX) <> "U" && Condición para saber donde terminan los datos, se podrían agregar más condiciones
M.VEN_NRODOC = .Cells(Fila, 2) && En la segunda columna (B) se encuentra el número del documento de venta
M.VEN_MONTOX = .Cells(Fila, 3) && En la tercera columna (C) se encuentra el importe total de la venta
M.VEN_SISTEM = 1 && Indica que este registro proviene de una planilla Excel
append blank && Se agrega un registro en blanco a la tabla de ventas
gather memvar && Se graban los campos en el registro
ThisForm.Grid1.Refresh() && Se refresca la grilla, para que se vea el registro recién agregado
Fila = Fila + 1 && Se procesará la siguiente fila
M.VEN_FECHAX = .Cells(Fila, 1) && En la primera columna se encuentra la fecha de la venta
enddo
endwith
Fíjate que el campo VEN_SISTEM es necesario para evitar que un usuario procese 2 veces la misma planilla y así duplique las ventas. También podrías
borrar las ventas que ocurrieron en un rango de fechas, algo como:
DELETE FOR VEN_SISTEM == 1 .and. DtoS(VEN_FECHAX) >= FechaIni .and. DtoS(VEN_FECHAX) <= FechaFin && Borrará las ventas entre esas fechas, inclusive
Desde luego que este código puede ser mejorado pero la idea básica es esa.
Saludos.
Walter.