FoxPro/Visual FoxPro - Filtros

 
Vista:

Filtros

Publicado por Valeria (1 intervención) el 23/08/2007 19:00:39
Hola, tengo una gran duda espero k me la puedan responder lo mas claro posible xk yo no se mucho de VFP. (La versión k tengo es la 6.0).

Tengo k exportar a un formato predefinido en Excel, este formato consta de dos archivos y cada uno contiene alrededor de 10 hojas de calculo. Ademas de k tengo k especificar a cual hoja va ir la informacion tengo k mandar los todos con numeros, por ejemplo:

En la hoja1 tengo k utilizar el campo fecha, carretera, muertos, heridos, dañosm pero en la fecha solo necesito el mes ya que los datos se van a registrar por mes, y ya teniendo la cantidad de accidentes que ocurrieron por mes y por carretera tambien tengo k indicar cuantos muertos, heridos y daños materiales hubo.

CARRETERA Y TRAMO SALDO ENERO FEBRERO
# ACCIDENTES 6 10
MEXICO - QUERETARO (MEX-57) # MUERTOS 2 5
PALMILLAS-QUERETARO # HERIDOS 0 1
DAÑOS MATERIALES 150 0000 1000000.23
Esto seria algo similar s una de las hojas de Excel, se tendria k clasificar de acuerdo a la carretera, sacar la cantidad por mes, los muertos, heridos y daños materiales.


Espero haber sido clara y k me puedan ayudar.

Gracias!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jaime Gattorno

RE:Filtros

Publicado por Jaime Gattorno (3 intervenciones) el 24/08/2007 16:46:53
Quizas este codigo te ayude....

* Este programa envia los resultados de una tabla cruzada a
* Microsoft Excel para calcular ventas y utilidades por producto
* usa la base de datos TESTDATA que ofrece información y la
* regresa a Excel.

#DEFINE PRODUCT_LOC "Product"
#DEFINE SALESJAN_LOC "Sales - Jan"
#DEFINE SALESFEB_LOC "Sales - Feb"
#DEFINE SALESMAR_LOC "Sales - Mar"
#DEFINE TREND_LOC "Trend"
#DEFINE QUERYDATA_LOC "Querying sales data..."
#DEFINE STARTXL_LOC "Starting Excel..."
#DEFINE TRENDDATA_LOC "Trend Data Retrieved"

LOCAL i,j,TrendFunc,xlsheet,XLApp,tmpsheet

WAIT WINDOW QUERYDATA_LOC NOWAIT

LOCAL lcDataDir
lcDataDir = HOME(2)
DO CASE
CASE FILE(HOME(2)+"data\testdata.dbc")
lcDataDir = HOME(2)
CASE FILE(HOME()+"samples\data\testdata.dbc")
lcDataDir = HOME() + "Samples\"
OTHERWISE
MESSAGEBOX(DATAERR_LOC)
RETURN .F.
ENDCASE
OPEN DATABASE (lcDataDir+"data\testdata.dbc")

SELECT Products.prod_name, MONTH(Orders.order_date),;
SUM(Orditems.quantity);
FROM testdata!orders, testdata!orditems, testdata!products;
WHERE Orders.order_id = Orditems.order_id;
AND Products.product_id = Orditems.product_id;
AND Orders.order_date > {^1994/12/31};
GROUP BY Orditems.product_id, 2, Products.prod_name;
ORDER BY Products.prod_name, 2;
INTO CURSOR curSalesData

DO (_GENXTAB) WITH 'ctabSalesData'

SELECT *, N_1 from ctabSalesData INTO ARRAY arrSalesData

WAIT WINDOW STARTXL_LOC NOWAIT

** Aqui es donde manipulamos a Excel

tmpsheet = GetObject('','excel.sheet')

XLApp = tmpsheet.application

XLApp.Visible = .t.
XLApp.WorkBooks.Add()
XLSheet = XLApp.ActiveSheet

XLSheet.Cells(1,1).Value = PRODUCT_LOC
XLSheet.Cells(1,2).Value = SALESJAN_LOC
XLSheet.Cells(1,3).Value = SALESFEB_LOC
XLSheet.Cells(1,4).Value = SALESMAR_LOC
XLSheet.Cells(1,5).Value = TREND_LOC

++ Pasamos los datos del arreglo a la tabla

FOR i = 1 to 10
FOR j = 1 to 4
IF ISNULL (arrSalesData(i,j)) THEN
XLSheet.Cells(i+1,j).Value = 0
ELSE
XLSheet.Cells(i+1,j).Value = arrSalesData(i,j)
ENDIF
ENDFOR
TrendFunc = "=TREND(B" + LTRIM(STR(i+1)) + ":D" + LTRIM(STR(i+1)) + ",,4)"
XLSheet.Cells(i+1,5).Value = TrendFunc
ENDFOR

FOR i = 1 to 10
IF XLSheet.Cells(i+1,5).Value < 0 THEN
XLSheet.Cells(i+1,5).Value = 0
ELSE
XLSheet.Cells(i+1,5).Value = INT(XLSheet.Cells(i+1,5).Value)
ENDIF
ENDFOR

WAIT WINDOW TRENDDATA_LOC TIMEOUT 2
CLOSE DATA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar