Page 1 of 1

De sql a dbf

Posted: Tue Aug 01, 2023 3:47 pm
by JoseAlvarez
Saludos amigos foreros.

Alguien tiene algun ejemplo de como llevar los datos resultantes de una consulta sql a una dbf?

La idea es generar reportes desde esa dbf.

Gracias por las ideas que puedan aportarme.

Re: De sql a dbf

Posted: Tue Aug 01, 2023 4:11 pm
by karinha

Re: De sql a dbf

Posted: Tue Aug 01, 2023 7:44 pm
by leandro
Hola como vas?

Con ADO lo hacemos de la siguiente manera:

Code: Select all | Expand

    cQry := "SELECT * FROM tu_tabla"
    oRs := FW_OPENRECORDSET(oCn,cQry,adLockOptimistic,adOpenKeyset)
    FW_AdoExportToDBF( oRs , ".\dbfs\elresultado.dbf" , .F. )
    oRs:close()

       De aqui en adelante haces el resto del informe.
       Utilizando esta técnica se acelera de manera asombrosa el proceso de generación de informes
       sobre todo cuando estas trabajando en un servidor remoto
 

Re: De sql a dbf

Posted: Wed Aug 02, 2023 12:30 am
by JoseAlvarez
Gracias joao, voy a darle un vistazo.

Leandro, muchas gracias. No uso ADO. Uso tdolphin.

Re: De sql a dbf

Posted: Wed Aug 02, 2023 11:41 am
by cmsoft
Hola Jose:
En los samples de DOLPHIN tienes un ejemplo

Code: Select all | Expand

#include "tdolphin.ch"

FUNCTION Main()
  
   LOCAL oServer, oQry
   LOCAL oExp, cTime
  
   D_SetCaseSensitive( .T. )
   
   IF ( oServer := ConnectTo() ) == NIL
      RETURN NIL
   ENDIF
   cls
   oQry = oServer:Query( "SELECT * FROM clientes" )
   
   oExp = oQry:Export( EXP_DBF, "client.dbf" )
   oExp:bOnStart = { || QOut( "Started..."), QOut( ""), cTime := Time() }
   oExp:bOnRow = {| o, n | ShowLine( n, oQry:LastRec() ) }
   oExp:bOnEnd = { || QOut( "Elapse time: " + ElapTime( cTime, Time() ) ), QOut( "Finished...") }
   
   oExp:Start()
   
RETURN NIL


PROCEDURE ShowLine( n, nTotal )

@ Row(),1 say Str( n / nTotal * 100 ) + "%"

RETURN
 

Re: De sql a dbf

Posted: Wed Aug 02, 2023 11:58 am
by jair

Code: Select all | Expand


oCn   := FW_DemoDB()  // Maria db nativo 
//  oCn := Maria_Connect( {cHost, "", cUser, cPass } )
//FWCONNECT oCn HOST "localhost" USER "root" PASSWORD "secret" DB "fwh"


cSql  := "SELECT * FROM minhatabela"
   oCn:SaveToDBF( cSql, "c:\temp\TEMP.DBF" )
   OU 
   cFile := Get_File()
   oCn:SaveToDBF( cSql, cFile )
 

Re: De sql a dbf

Posted: Wed Aug 02, 2023 3:32 pm
by cmsoft
jair wrote:

Code: Select all | Expand

cSql  := "SELECT * FROM minhatabela"
   oCn:SaveToDBF( cSql, "c:\temp\TEMP.DBF" )
   OU 
   cFile := Get_File()
   oCn:SaveToDBF( cSql, cFile )
 
No veo el metodo SaveToDbf en la clase TDolphin, existe?

Re: De sql a dbf

Posted: Wed Aug 02, 2023 6:40 pm
by JoseAlvarez
Gracias César, gracias Jair.

Muchas gracias a todos.

Voy a probar y estaré comentando los resultados.

Un abrazo.

Re: De sql a dbf

Posted: Fri Aug 04, 2023 8:04 am
by nageswaragunupudi
Running SQL query directly from DBF
Please try these samples.
You can do a lot more

Code: Select all | Expand

cFolder := "c:\fwh\samples\"
oCn := FW_OpenAdoConnection( cFolder )
oRs := FW_OpenRecordSet( oCn, "SELECT ID,FIRST,CITY,SALARY FROM CUSTOMER" )
XBROWSER  oRs AUTOSORT
oRs:Close()
oCn:Close()
Another example:

Code: Select all | Expand

cFolder := "c:\fwh\samples\"
oCn := FW_OpenAdoConnection( cFolder )
oRs := FW_OpenRecordSet( oCn, ;
   "SELECT [STATE],SUM(SALARY) AS SALARY FROM CUSTOMER GROUP BY STATE" )
XBROWSER  oRs AUTOSORT
oRs:Close()
oCn:Close()