FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Sqlite and FWH
Posts: 1392
Joined: Mon May 14, 2007 09:49 AM
Sqlite and FWH
Posted: Thu Mar 17, 2022 05:55 PM

Hi,

Is it possible to work with the Sqlite database via FWH ?

Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
Re: Sqlite and FWH
Posted: Thu Mar 17, 2022 09:17 PM

Search the forum for "sqlite" and you will get about 20 pages of messages on this topic.

James

FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Sqlite and FWH
Posted: Fri Mar 18, 2022 02:47 PM
Hello James---
See this code.

Code (fw): Select all Collapse
oConG := OpenSQLite( oConG )

cCad := "SELECT * FROM DOCUMENTO"
oObj := SSQLQry( oConG, oObj, cCad )

IF oObj:RecordCount() =0
  cCad := "INSERT INTO DOCUMENTO (NUM_RUC, TIP_DOCU, NUM_DOCU) VALUES ('00000000000','','')"
  lOK := oConG:Execute( cCad )
EndIf

cCad := "UPDATE PARAMETRO SET val_para = '1' WHERE cod_para = 'TIMEENVIA'"
lOK := oConG:Execute( cCad )



//---------------------------------------------------------------------------------------------------------------
Function OpenSQLite( oConL )
oConL                  := TOleAuto():new( "adodb.connection" )
oConL:ConnectionString := "Data Source=archivosfs;Version=3;New=True;Compress=True;"

TRY
   oConL:Open()
CATCH
   MsgStop( "No Hay Conexion ODBC - SQLIte", "Error", 2 )
   oConL := Nil
   QUIT
   QUIT
END

SysRefresh()

Return( oConL )

//-----------------------------------------------------------------------------------------------------------------------------
Function SSQLQry( oConT, oRs1, cCon )
oRs1 := FW_OpenRecordSet( oConT, cCon )
Return( oRs1 )
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Sqlite and FWH
Posted: Fri Mar 18, 2022 02:49 PM
More code
Code (fw): Select all Collapse
//----------abrir una SQLITE.DB
//---------------------------------------------------------------------------------------------------------------
Function OpenSQLite( oConL )
oConL                  := TOleAuto():new( "adodb.connection" )
oConL:ConnectionString := "Data Source=sqlitedat;Version=3;New=True;Compress=True;"         // sqitedat es el nombre indicado en el ODBC

TRY
   oConL:Open()
CATCH
   MsgStop( "No Hay Conexion ODBC - SQLIte", "Error", 2 )
   oConL := Nil
   QUIT
   QUIT
END

SysRefresh()

Return( oConL )


//-------hacer una consulta
...
cCad := "SELECT cod_para, val_para FROM TXXXX_PARAM"
oObj := SSQLQry( oConL, oObj, cCad )
WHILE !oObj:EOF()
  IF SQLvar( oObj, 0 ) = "FUNCIO"
    cMen := "SFS : " + IF(SQLVar( oObj, 1 ) = "01", "AUTOMÁTICO","MANUAL")
  EndIf
  oObj:Move(1)
ENDDO

//---------------------------------------------------------------------------------------------------------
Function SSQLQry( oConT, oRs1, cCon )
oRs1 := FW_OpenRecordSet( oConT, cCon )
Return( oRs1 )

//------------update datos
...
cCad := "UPDATE TXXXX_PARAM SET val_para = '0.2' WHERE cod_para = 'TIEMPO'"
lOK := oConL:Execute( cCad )

//-----------------------------------------------------------------------------------------------------------------------------
Function SQLVar( oObj, nCampo )
local cVar
TRY
cVar := oObj:Fields( nCampo ):Value
CATCH
cVar := ""
END
Return( cVar )


//-------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------
Function SetBrow(oDataS, oBrw)
local lRet := .t.
local bGoTop, bGoBottom, bSkipper, bSkip
local cClsName

bGoTop    := { || If( oDataS:RecordCount() > 0, oDataS:MoveFirst(), nil ) }
bGoBottom := { || If( oDataS:RecordCount() > 0, oDataS:MoveLast(), nil )  }
bSkip     := { | n | AdoSkip( oDataS, IfNil( n, 1 ) ) }
bSkipper  := { | n | AdoSkip( oDataS, IfNil( n, 1 ) ) }


oBrw:cAlias    := ""
oBrw:bGoTop    := bGoTop
oBrw:bGoBottom := bGoBottom
oBrw:bSkip     := bSkipper
oBrw:bLogicLen := { || oDataS:RecordCount() }
if oBrw:oVScroll() != nil
  oBrw:oVscroll():SetRange( 1, oDataS:RecordCount() )
endif
oBrw:Refresh()

Return(NIl)

static function AdoSkip( oRs, n )

LOCAL nRec

if oRs:RecordCount() == 0
   return 0
endif

nRec := oRs:AbsolutePosition
If( oRs:Eof, oRs:MoveLast(), If( oRs:Bof, oRs:MoveFirst(),) )
oRs:Move( n )
If( oRs:Eof, oRs:MoveLast(), If( oRs:Bof, oRs:MoveFirst(),) )

return oRs:AbsolutePosition - nRec
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Sqlite and FWH
Posted: Fri Mar 18, 2022 03:44 PM

Mr. Willi
What ODBC driver are you using?

Regards



G. N. Rao.

Hyderabad, India
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Sqlite and FWH
Posted: Fri Mar 18, 2022 08:50 PM

Check your mail.
Regards

Continue the discussion