2012-08-24 15:01 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/doc/locks.txt
* harbour/extras/hbapollo/ttable.prg
* harbour/extras/hbapollo/use.c
* harbour/extras/hbapollo/tindex.prg
* harbour/extras/hbapollo/tools.c
* harbour/extras/hbapollo/ttag.prg
* harbour/extras/hbapollo/unsix.ch
* harbour/extras/hbxlsxml/hbxlsxml.hbp
* harbour/extras/hbxlsxml/xlsxml.prg
* harbour/extras/hbxlsxml/xlsxml_s.prg
* harbour/extras/hbxlsxml/tests/example.prg
* harbour/extras/hbxlsxml/tests/example2.prg
* harbour/extras/hbxlsxml/tests/example3.prg
* harbour/extras/hbxlsxml/tests/hbmk.hbm
* harbour/extras/hbxlsxml/xlsxml_y.prg
* harbour/bin/3rdpatch.hb
* harbour/contrib/hbxbp/tests/xbpqtc.prg
* harbour/contrib/hbxbp/crt.prg
* harbour/contrib/make.hb
* harbour/contrib/gtwvg/genrc.prg
* harbour/contrib/hbqt/tests/cls_dbstruct.prg
* harbour/contrib/hbqt/tests/browarray.prg
* harbour/contrib/hbqt/tests/ideui.hbp
* harbour/contrib/hbqt/tests/dbfbrowserclass.prg
* harbour/contrib/hbqt/tests/dbstruct.prg
* harbour/contrib/hbqt/tests/dbfbrowser.prg
* harbour/contrib/hbqt/qtsvg/hbqt_init.cpp
* harbour/contrib/hbqt/qtsvg/hbqtsvg.hbm
* harbour/contrib/hbqt/qtsvg/hbqtsvg.hbp
* harbour/contrib/hbqt/qtsvg/hbqtsvg.ch
* harbour/contrib/hbqt/qtsvg/hbqtsvg.hbc
* harbour/contrib/hbqt/qtsvg/hbqtsvgs.hbp
* harbour/contrib/hbqt/qtsvg/qth/filelist.hbm
* harbour/contrib/hbqt/qtsvg/hbqtsvg.hbx
* harbour/contrib/hbqt/gtqtc.hbc
* harbour/contrib/hbqt/gtqtc/gtqtc.hbm
* harbour/contrib/hbqt/gtqtc/gtqtc.h
* harbour/contrib/hbqt/gtqtc/gtqtc.hbp
* harbour/contrib/hbqt/gtqtc/gtqtc.hbc
* harbour/contrib/hbqt/gtqtc/gtqtcs.hbp
* harbour/contrib/hbqt/gtqtc/gtqtc.cpp
* harbour/contrib/hbide/console.prg
* harbour/contrib/hbide/uisrcmanager.prg
* harbour/contrib/hbide/changelog.prg
! fixed hardcoded CRLF EOLs
! set svn:eol-style to native
! set svn:keywords to Author Date Id Revision
This commit is contained in:
@@ -16,6 +16,55 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2012-08-24 15:01 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
|
||||
* harbour/doc/locks.txt
|
||||
* harbour/extras/hbapollo/ttable.prg
|
||||
* harbour/extras/hbapollo/use.c
|
||||
* harbour/extras/hbapollo/tindex.prg
|
||||
* harbour/extras/hbapollo/tools.c
|
||||
* harbour/extras/hbapollo/ttag.prg
|
||||
* harbour/extras/hbapollo/unsix.ch
|
||||
* harbour/extras/hbxlsxml/hbxlsxml.hbp
|
||||
* harbour/extras/hbxlsxml/xlsxml.prg
|
||||
* harbour/extras/hbxlsxml/xlsxml_s.prg
|
||||
* harbour/extras/hbxlsxml/tests/example.prg
|
||||
* harbour/extras/hbxlsxml/tests/example2.prg
|
||||
* harbour/extras/hbxlsxml/tests/example3.prg
|
||||
* harbour/extras/hbxlsxml/tests/hbmk.hbm
|
||||
* harbour/extras/hbxlsxml/xlsxml_y.prg
|
||||
* harbour/bin/3rdpatch.hb
|
||||
* harbour/contrib/hbxbp/tests/xbpqtc.prg
|
||||
* harbour/contrib/hbxbp/crt.prg
|
||||
* harbour/contrib/make.hb
|
||||
* harbour/contrib/gtwvg/genrc.prg
|
||||
* harbour/contrib/hbqt/tests/cls_dbstruct.prg
|
||||
* harbour/contrib/hbqt/tests/browarray.prg
|
||||
* harbour/contrib/hbqt/tests/ideui.hbp
|
||||
* harbour/contrib/hbqt/tests/dbfbrowserclass.prg
|
||||
* harbour/contrib/hbqt/tests/dbstruct.prg
|
||||
* harbour/contrib/hbqt/tests/dbfbrowser.prg
|
||||
* harbour/contrib/hbqt/qtsvg/hbqt_init.cpp
|
||||
* harbour/contrib/hbqt/qtsvg/hbqtsvg.hbm
|
||||
* harbour/contrib/hbqt/qtsvg/hbqtsvg.hbp
|
||||
* harbour/contrib/hbqt/qtsvg/hbqtsvg.ch
|
||||
* harbour/contrib/hbqt/qtsvg/hbqtsvg.hbc
|
||||
* harbour/contrib/hbqt/qtsvg/hbqtsvgs.hbp
|
||||
* harbour/contrib/hbqt/qtsvg/qth/filelist.hbm
|
||||
* harbour/contrib/hbqt/qtsvg/hbqtsvg.hbx
|
||||
* harbour/contrib/hbqt/gtqtc.hbc
|
||||
* harbour/contrib/hbqt/gtqtc/gtqtc.hbm
|
||||
* harbour/contrib/hbqt/gtqtc/gtqtc.h
|
||||
* harbour/contrib/hbqt/gtqtc/gtqtc.hbp
|
||||
* harbour/contrib/hbqt/gtqtc/gtqtc.hbc
|
||||
* harbour/contrib/hbqt/gtqtc/gtqtcs.hbp
|
||||
* harbour/contrib/hbqt/gtqtc/gtqtc.cpp
|
||||
* harbour/contrib/hbide/console.prg
|
||||
* harbour/contrib/hbide/uisrcmanager.prg
|
||||
* harbour/contrib/hbide/changelog.prg
|
||||
! fixed hardcoded CRLF EOLs
|
||||
! set svn:eol-style to native
|
||||
! set svn:keywords to Author Date Id Revision
|
||||
|
||||
2012-08-24 14:25 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
|
||||
* harbour/src/3rd/tiff/LICENSE
|
||||
! fixed EOLs and set svn:eol-style to native
|
||||
|
||||
@@ -1,266 +1,266 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
*
|
||||
* Copyright 2010 Carlos Bacco <carlosbacco at gmail.com>
|
||||
* www - http://harbour-project.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "hbqtgui.ch"
|
||||
#include "hbtrace.ch"
|
||||
#include "common.ch"
|
||||
|
||||
STATIC oSize
|
||||
STATIC nCX
|
||||
STATIC nCY
|
||||
STATIC aData
|
||||
STATIC oColorC
|
||||
STATIC oColorN
|
||||
STATIC oColorD
|
||||
STATIC oColorLY
|
||||
STATIC oColorLN
|
||||
|
||||
PROCEDURE Main()
|
||||
LOCAL tb1, mo1, lay1, lay2, bt1, bt2, bt3, hd1, i
|
||||
LOCAL oWnd, oDA, aStruct
|
||||
LOCAL oID, oSM
|
||||
|
||||
hbqt_errorsys()
|
||||
|
||||
SET DATE ANSI
|
||||
SET CENTURY ON
|
||||
|
||||
oColorN := QColor( 100, 0,100 )
|
||||
oColorD := QColor( 150, 100, 0 )
|
||||
oColorLY:= QColor( 0, 150, 0 )
|
||||
oColorLN:= QColor( 200, 0, 0 )
|
||||
|
||||
aStruct := {}
|
||||
AAdd( aStruct, { "Name" , "C", 8, 0 } )
|
||||
AAdd( aStruct, { "DOB" , "D", 8, 0 } )
|
||||
AAdd( aStruct, { "PAY" , "N", 5, 0 } )
|
||||
AAdd( aStruct, { "MARRIED", "L", 1, 0 } )
|
||||
|
||||
aData := {}
|
||||
AAdd( aData, { "Andy" , SToD( "20120525" ), 200, .T. } )
|
||||
AAdd( aData, { "Tomy" , SToD( "20120617" ), 300, .F. } )
|
||||
AAdd( aData, { "Zindal", SToD( "20121213" ), 100, .F. } )
|
||||
|
||||
oWnd := QMainWindow()
|
||||
oWnd:resize(640,460 )
|
||||
|
||||
oDA := QWidget()
|
||||
oWnd:setCentralWidget( oDA )
|
||||
lay1 := QVBoxLayout( oDA )
|
||||
|
||||
nCX := 0
|
||||
nCY := 0
|
||||
tb1 := QTableView()
|
||||
|
||||
mo1 := HBQAbstractItemModel( {| t, r, x, y| my_browse( aStruct, t, r, x, y ) } )
|
||||
tb1:setModel( mo1 )
|
||||
|
||||
oID := tb1:itemDelegate()
|
||||
oID:connect( "commitData(QWidget*)", {| w | my_save( w, aStruct, @nCX, @nCY ) } )
|
||||
|
||||
oSM := tb1:selectionModel()
|
||||
oSM:connect( "currentChanged(QModelIndex,QModelIndex)", {| n | my_select( n, @nCX, @nCY ) } )
|
||||
|
||||
hd1 := tb1:horizontalHeader()
|
||||
FOR i := 1 To Len( aStruct )
|
||||
hd1:resizeSection( i - 1, aStruct[ i, 3 ] * 6 + 60 )
|
||||
NEXT
|
||||
tb1:verticalHeader():setDefaultSectionSize( 24 )
|
||||
|
||||
oSize := QSize(50,24)
|
||||
|
||||
lay1:addWidget( tb1 )
|
||||
|
||||
lay2 := QHBoxLayout()
|
||||
lay1:addlayout( lay2 )
|
||||
|
||||
( bt1 := QPushButton() ):SetText( "Add Row" )
|
||||
bt1:connect( "clicked()", {|| my_addRow( mo1, tb1 ) } )
|
||||
( bt2 := QPushButton() ):SetText( "Ins Row" )
|
||||
bt2:connect( "clicked()", {|| my_insRow( mo1, tb1 ) } )
|
||||
( bt3 := QPushButton() ):SetText( "Del Row" )
|
||||
bt3:connect( "clicked()", {|| my_delRow( mo1, tb1 ) } )
|
||||
|
||||
lay2:addWidget( bt1 )
|
||||
lay2:addWidget( bt2 )
|
||||
lay2:addStretch()
|
||||
lay2:addWidget( bt3 )
|
||||
|
||||
oWnd:Show()
|
||||
QApplication():exec()
|
||||
|
||||
RETURN
|
||||
|
||||
STATIC PROCEDURE my_save( qWidget, aStru, nCX, nCY )
|
||||
LOCAL cData := qWidget:property( "text" ):toString()
|
||||
LOCAL nRow := nCY + 1
|
||||
LOCAL nCol := nCX + 1
|
||||
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "C"
|
||||
aData[ nRow, nCol ] := AllTrim( cData )
|
||||
EXIT
|
||||
CASE "N"
|
||||
aData[ nRow, nCol ] := Val( cData )
|
||||
EXIT
|
||||
CASE "L"
|
||||
aData[ nRow, nCol ] := Left( cData, 1 ) $ "YyTt"
|
||||
EXIT
|
||||
CASE "D"
|
||||
aData[ nRow, nCol ] := CToD( cData )
|
||||
EXIT
|
||||
ENDSWITCH
|
||||
RETURN
|
||||
|
||||
STATIC PROCEDURE my_select( qModelIndex, nCX, nCY )
|
||||
|
||||
nCX := qModelIndex:column()
|
||||
nCY := qModelIndex:row()
|
||||
|
||||
RETURN
|
||||
|
||||
STATIC FUNCTION my_browse( aStru, t, role, nX, nY )
|
||||
LOCAL nRow := nY + 1 /* Harbour array is 1 based */
|
||||
LOCAL nCol := nX + 1
|
||||
|
||||
SWITCH t
|
||||
CASE HBQT_QAIM_flags
|
||||
RETURN Qt_ItemIsEnabled + Qt_ItemIsSelectable + Qt_ItemIsEditable;
|
||||
|
||||
CASE HBQT_QAIM_data
|
||||
|
||||
SWITCH role
|
||||
CASE Qt_DisplayRole
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "C"
|
||||
RETURN AllTrim( aData[ nRow, nCol ] )
|
||||
CASE "N"
|
||||
RETURN hb_ntos( aData[ nRow, nCol ] )
|
||||
CASE "L"
|
||||
RETURN iif( aData[ nRow, nCol ], "Yes", "No" )
|
||||
CASE "D"
|
||||
RETURN DToC( aData[ nRow, nCol ] )
|
||||
ENDSWITCH
|
||||
RETURN "?"
|
||||
|
||||
CASE Qt_EditRole /* Here we can specify different formats for editing*/
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "C"
|
||||
RETURN AllTrim( aData[ nRow, nCol ] )
|
||||
CASE "N"
|
||||
RETURN hb_ntos( aData[ nRow, nCol ] )
|
||||
CASE "L"
|
||||
RETURN iif( aData[ nRow, nCol ], "Y", "N" )
|
||||
CASE "D"
|
||||
RETURN DToC( aData[ nRow, nCol ] )
|
||||
ENDSWITCH
|
||||
RETURN "?"
|
||||
|
||||
CASE Qt_ForegroundRole
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "N"
|
||||
RETURN oColorN
|
||||
CASE "L"
|
||||
RETURN iif( aData[ nRow, nCol ], oColorLY, oColorLN )
|
||||
CASE "D"
|
||||
RETURN oColorD
|
||||
ENDSWITCH
|
||||
RETURN NIL
|
||||
|
||||
CASE Qt_BackgroundRole
|
||||
RETURN NIL
|
||||
|
||||
CASE Qt_TextAlignmentRole
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "C"
|
||||
RETURN Qt_AlignVCenter + Qt_AlignLeft
|
||||
CASE "N"
|
||||
RETURN Qt_AlignVCenter + Qt_AlignRight
|
||||
ENDSWITCH
|
||||
RETURN Qt_AlignCenter
|
||||
ENDSWITCH
|
||||
RETURN NIL
|
||||
|
||||
CASE HBQT_QAIM_headerData
|
||||
SWITCH role
|
||||
CASE Qt_DisplayRole
|
||||
IF nX == Qt_Horizontal
|
||||
RETURN aStru[ nRow, 1 ]
|
||||
ELSE
|
||||
RETURN hb_NToS( nRow )
|
||||
ENDIF
|
||||
|
||||
CASE Qt_TextAlignmentRole
|
||||
IF nX == Qt_Horizontal
|
||||
RETURN Qt_AlignCenter
|
||||
ELSE
|
||||
RETURN Qt_AlignVCenter + Qt_AlignRight
|
||||
ENDIF
|
||||
|
||||
CASE Qt_SizeHintRole
|
||||
RETURN oSize
|
||||
ENDSWITCH
|
||||
RETURN NIL
|
||||
|
||||
CASE HBQT_QAIM_rowCount
|
||||
RETURN Len( aData )
|
||||
|
||||
CASE HBQT_QAIM_columnCount
|
||||
RETURN Len( aStru )
|
||||
ENDSWITCH
|
||||
|
||||
RETURN NIL
|
||||
|
||||
STATIC FUNCTION connect( tb1, aStruct, nCX1, nCY1 )
|
||||
LOCAL oID, oSM
|
||||
|
||||
oID := tb1:itemDelegate()
|
||||
oID:connect( "commitData(QWidget*)", {| w | my_save( w, aStruct, @nCX1, @nCY1 ) } )
|
||||
|
||||
oSM := tb1:selectionModel()
|
||||
oSM:connect( "currentChanged(QModelIndex,QModelIndex)", {| n | my_select( n, @nCX1, @nCY1 ) } )
|
||||
|
||||
RETURN NIL
|
||||
|
||||
STATIC FUNCTION my_addRow( oHBQAbsModel, oTableView )
|
||||
STATIC nPay := 400
|
||||
|
||||
nPay += 30
|
||||
|
||||
AAdd( aData, { "Kitty", SToD( "20120625" ), nPay, .T. } )
|
||||
|
||||
oHBQAbsModel:reset() /* Re-populate the model */
|
||||
oTableView:selectRow( nCY )
|
||||
|
||||
RETURN .T.
|
||||
|
||||
STATIC FUNCTION my_insRow( oHBQAbsModel, oTableView )
|
||||
STATIC nPay := 500
|
||||
|
||||
nPay += 150
|
||||
aData := hb_AIns( aData, nCY + 1, { "Lovely", SToD( "20010513" ), nPay, .T. }, .T. )
|
||||
|
||||
oHBQAbsModel:reset()
|
||||
oTableView:selectRow( nCY )
|
||||
|
||||
RETURN .T.
|
||||
|
||||
STATIC FUNCTION my_delRow( oHBQAbsModel, oTableView )
|
||||
|
||||
IF Len( aData ) > 1
|
||||
aData := hb_ADel( aData, nCY + 1, .T. )
|
||||
|
||||
oHBQAbsModel:reset()
|
||||
oTableView:selectRow( Min( nCY, Len( aData ) - 1 ) )
|
||||
ENDIF
|
||||
|
||||
RETURN .T.
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
*
|
||||
* Copyright 2010 Carlos Bacco <carlosbacco at gmail.com>
|
||||
* www - http://harbour-project.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "hbqtgui.ch"
|
||||
#include "hbtrace.ch"
|
||||
#include "common.ch"
|
||||
|
||||
STATIC oSize
|
||||
STATIC nCX
|
||||
STATIC nCY
|
||||
STATIC aData
|
||||
STATIC oColorC
|
||||
STATIC oColorN
|
||||
STATIC oColorD
|
||||
STATIC oColorLY
|
||||
STATIC oColorLN
|
||||
|
||||
PROCEDURE Main()
|
||||
LOCAL tb1, mo1, lay1, lay2, bt1, bt2, bt3, hd1, i
|
||||
LOCAL oWnd, oDA, aStruct
|
||||
LOCAL oID, oSM
|
||||
|
||||
hbqt_errorsys()
|
||||
|
||||
SET DATE ANSI
|
||||
SET CENTURY ON
|
||||
|
||||
oColorN := QColor( 100, 0,100 )
|
||||
oColorD := QColor( 150, 100, 0 )
|
||||
oColorLY:= QColor( 0, 150, 0 )
|
||||
oColorLN:= QColor( 200, 0, 0 )
|
||||
|
||||
aStruct := {}
|
||||
AAdd( aStruct, { "Name" , "C", 8, 0 } )
|
||||
AAdd( aStruct, { "DOB" , "D", 8, 0 } )
|
||||
AAdd( aStruct, { "PAY" , "N", 5, 0 } )
|
||||
AAdd( aStruct, { "MARRIED", "L", 1, 0 } )
|
||||
|
||||
aData := {}
|
||||
AAdd( aData, { "Andy" , SToD( "20120525" ), 200, .T. } )
|
||||
AAdd( aData, { "Tomy" , SToD( "20120617" ), 300, .F. } )
|
||||
AAdd( aData, { "Zindal", SToD( "20121213" ), 100, .F. } )
|
||||
|
||||
oWnd := QMainWindow()
|
||||
oWnd:resize(640,460 )
|
||||
|
||||
oDA := QWidget()
|
||||
oWnd:setCentralWidget( oDA )
|
||||
lay1 := QVBoxLayout( oDA )
|
||||
|
||||
nCX := 0
|
||||
nCY := 0
|
||||
tb1 := QTableView()
|
||||
|
||||
mo1 := HBQAbstractItemModel( {| t, r, x, y| my_browse( aStruct, t, r, x, y ) } )
|
||||
tb1:setModel( mo1 )
|
||||
|
||||
oID := tb1:itemDelegate()
|
||||
oID:connect( "commitData(QWidget*)", {| w | my_save( w, aStruct, @nCX, @nCY ) } )
|
||||
|
||||
oSM := tb1:selectionModel()
|
||||
oSM:connect( "currentChanged(QModelIndex,QModelIndex)", {| n | my_select( n, @nCX, @nCY ) } )
|
||||
|
||||
hd1 := tb1:horizontalHeader()
|
||||
FOR i := 1 To Len( aStruct )
|
||||
hd1:resizeSection( i - 1, aStruct[ i, 3 ] * 6 + 60 )
|
||||
NEXT
|
||||
tb1:verticalHeader():setDefaultSectionSize( 24 )
|
||||
|
||||
oSize := QSize(50,24)
|
||||
|
||||
lay1:addWidget( tb1 )
|
||||
|
||||
lay2 := QHBoxLayout()
|
||||
lay1:addlayout( lay2 )
|
||||
|
||||
( bt1 := QPushButton() ):SetText( "Add Row" )
|
||||
bt1:connect( "clicked()", {|| my_addRow( mo1, tb1 ) } )
|
||||
( bt2 := QPushButton() ):SetText( "Ins Row" )
|
||||
bt2:connect( "clicked()", {|| my_insRow( mo1, tb1 ) } )
|
||||
( bt3 := QPushButton() ):SetText( "Del Row" )
|
||||
bt3:connect( "clicked()", {|| my_delRow( mo1, tb1 ) } )
|
||||
|
||||
lay2:addWidget( bt1 )
|
||||
lay2:addWidget( bt2 )
|
||||
lay2:addStretch()
|
||||
lay2:addWidget( bt3 )
|
||||
|
||||
oWnd:Show()
|
||||
QApplication():exec()
|
||||
|
||||
RETURN
|
||||
|
||||
STATIC PROCEDURE my_save( qWidget, aStru, nCX, nCY )
|
||||
LOCAL cData := qWidget:property( "text" ):toString()
|
||||
LOCAL nRow := nCY + 1
|
||||
LOCAL nCol := nCX + 1
|
||||
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "C"
|
||||
aData[ nRow, nCol ] := AllTrim( cData )
|
||||
EXIT
|
||||
CASE "N"
|
||||
aData[ nRow, nCol ] := Val( cData )
|
||||
EXIT
|
||||
CASE "L"
|
||||
aData[ nRow, nCol ] := Left( cData, 1 ) $ "YyTt"
|
||||
EXIT
|
||||
CASE "D"
|
||||
aData[ nRow, nCol ] := CToD( cData )
|
||||
EXIT
|
||||
ENDSWITCH
|
||||
RETURN
|
||||
|
||||
STATIC PROCEDURE my_select( qModelIndex, nCX, nCY )
|
||||
|
||||
nCX := qModelIndex:column()
|
||||
nCY := qModelIndex:row()
|
||||
|
||||
RETURN
|
||||
|
||||
STATIC FUNCTION my_browse( aStru, t, role, nX, nY )
|
||||
LOCAL nRow := nY + 1 /* Harbour array is 1 based */
|
||||
LOCAL nCol := nX + 1
|
||||
|
||||
SWITCH t
|
||||
CASE HBQT_QAIM_flags
|
||||
RETURN Qt_ItemIsEnabled + Qt_ItemIsSelectable + Qt_ItemIsEditable;
|
||||
|
||||
CASE HBQT_QAIM_data
|
||||
|
||||
SWITCH role
|
||||
CASE Qt_DisplayRole
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "C"
|
||||
RETURN AllTrim( aData[ nRow, nCol ] )
|
||||
CASE "N"
|
||||
RETURN hb_ntos( aData[ nRow, nCol ] )
|
||||
CASE "L"
|
||||
RETURN iif( aData[ nRow, nCol ], "Yes", "No" )
|
||||
CASE "D"
|
||||
RETURN DToC( aData[ nRow, nCol ] )
|
||||
ENDSWITCH
|
||||
RETURN "?"
|
||||
|
||||
CASE Qt_EditRole /* Here we can specify different formats for editing*/
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "C"
|
||||
RETURN AllTrim( aData[ nRow, nCol ] )
|
||||
CASE "N"
|
||||
RETURN hb_ntos( aData[ nRow, nCol ] )
|
||||
CASE "L"
|
||||
RETURN iif( aData[ nRow, nCol ], "Y", "N" )
|
||||
CASE "D"
|
||||
RETURN DToC( aData[ nRow, nCol ] )
|
||||
ENDSWITCH
|
||||
RETURN "?"
|
||||
|
||||
CASE Qt_ForegroundRole
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "N"
|
||||
RETURN oColorN
|
||||
CASE "L"
|
||||
RETURN iif( aData[ nRow, nCol ], oColorLY, oColorLN )
|
||||
CASE "D"
|
||||
RETURN oColorD
|
||||
ENDSWITCH
|
||||
RETURN NIL
|
||||
|
||||
CASE Qt_BackgroundRole
|
||||
RETURN NIL
|
||||
|
||||
CASE Qt_TextAlignmentRole
|
||||
SWITCH aStru[ nCol, 2 ]
|
||||
CASE "C"
|
||||
RETURN Qt_AlignVCenter + Qt_AlignLeft
|
||||
CASE "N"
|
||||
RETURN Qt_AlignVCenter + Qt_AlignRight
|
||||
ENDSWITCH
|
||||
RETURN Qt_AlignCenter
|
||||
ENDSWITCH
|
||||
RETURN NIL
|
||||
|
||||
CASE HBQT_QAIM_headerData
|
||||
SWITCH role
|
||||
CASE Qt_DisplayRole
|
||||
IF nX == Qt_Horizontal
|
||||
RETURN aStru[ nRow, 1 ]
|
||||
ELSE
|
||||
RETURN hb_NToS( nRow )
|
||||
ENDIF
|
||||
|
||||
CASE Qt_TextAlignmentRole
|
||||
IF nX == Qt_Horizontal
|
||||
RETURN Qt_AlignCenter
|
||||
ELSE
|
||||
RETURN Qt_AlignVCenter + Qt_AlignRight
|
||||
ENDIF
|
||||
|
||||
CASE Qt_SizeHintRole
|
||||
RETURN oSize
|
||||
ENDSWITCH
|
||||
RETURN NIL
|
||||
|
||||
CASE HBQT_QAIM_rowCount
|
||||
RETURN Len( aData )
|
||||
|
||||
CASE HBQT_QAIM_columnCount
|
||||
RETURN Len( aStru )
|
||||
ENDSWITCH
|
||||
|
||||
RETURN NIL
|
||||
|
||||
STATIC FUNCTION connect( tb1, aStruct, nCX1, nCY1 )
|
||||
LOCAL oID, oSM
|
||||
|
||||
oID := tb1:itemDelegate()
|
||||
oID:connect( "commitData(QWidget*)", {| w | my_save( w, aStruct, @nCX1, @nCY1 ) } )
|
||||
|
||||
oSM := tb1:selectionModel()
|
||||
oSM:connect( "currentChanged(QModelIndex,QModelIndex)", {| n | my_select( n, @nCX1, @nCY1 ) } )
|
||||
|
||||
RETURN NIL
|
||||
|
||||
STATIC FUNCTION my_addRow( oHBQAbsModel, oTableView )
|
||||
STATIC nPay := 400
|
||||
|
||||
nPay += 30
|
||||
|
||||
AAdd( aData, { "Kitty", SToD( "20120625" ), nPay, .T. } )
|
||||
|
||||
oHBQAbsModel:reset() /* Re-populate the model */
|
||||
oTableView:selectRow( nCY )
|
||||
|
||||
RETURN .T.
|
||||
|
||||
STATIC FUNCTION my_insRow( oHBQAbsModel, oTableView )
|
||||
STATIC nPay := 500
|
||||
|
||||
nPay += 150
|
||||
aData := hb_AIns( aData, nCY + 1, { "Lovely", SToD( "20010513" ), nPay, .T. }, .T. )
|
||||
|
||||
oHBQAbsModel:reset()
|
||||
oTableView:selectRow( nCY )
|
||||
|
||||
RETURN .T.
|
||||
|
||||
STATIC FUNCTION my_delRow( oHBQAbsModel, oTableView )
|
||||
|
||||
IF Len( aData ) > 1
|
||||
aData := hb_ADel( aData, nCY + 1, .T. )
|
||||
|
||||
oHBQAbsModel:reset()
|
||||
oTableView:selectRow( Min( nCY, Len( aData ) - 1 ) )
|
||||
ENDIF
|
||||
|
||||
RETURN .T.
|
||||
|
||||
@@ -1,58 +1,58 @@
|
||||
/*
|
||||
* $Id: tindex.prg 9576 2012-07-17 16:41:57Z andijahja $
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#include "hbclass.ch"
|
||||
|
||||
CLASS TIndex
|
||||
|
||||
VAR cIndexFile /* Index File Name */
|
||||
VAR cExpression /* Index Expression */
|
||||
VAR iMode /* iOption: IDX_NONE=0 IDX_UNIQUE=1 IDX_EMPTY=2 */
|
||||
VAR lDescending /* BOOL lDescending */
|
||||
VAR cCondition /* FOR Condition */
|
||||
VAR cAlias
|
||||
|
||||
METHOD New( cIndexFile, cExpression, iMode, lDescending, cCondition, cAlias )
|
||||
METHOD CREATE()
|
||||
|
||||
ENDCLASS
|
||||
|
||||
METHOD New( cIndexFile, cExpression, iMode, lDescending, cCondition, cAlias ) CLASS TIndex
|
||||
|
||||
::cIndexFile := cIndexFile /* Index File Name */
|
||||
::cExpression := cExpression /* Index Expression */
|
||||
::iMode := iMode /* iOption: IDX_NONE=0 IDX_UNIQUE=1 IDX_EMPTY=2 */
|
||||
::lDescending := lDescending /* BOOL lDescending */
|
||||
::cCondition := cCondition /* FOR Condition */
|
||||
::cAlias := cAlias /* Alias */
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD CREATE() CLASS TIndex
|
||||
|
||||
// This is For Single TAG Index File : DBFNTX
|
||||
// DBFCDX and DBFNSX Should Use TAG
|
||||
|
||||
RETURN sx_Index( ::cIndexFile, ::cExpression, ::iMode, ::lDescending, ::cCondition, ::cAlias )
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#include "hbclass.ch"
|
||||
|
||||
CLASS TIndex
|
||||
|
||||
VAR cIndexFile /* Index File Name */
|
||||
VAR cExpression /* Index Expression */
|
||||
VAR iMode /* iOption: IDX_NONE=0 IDX_UNIQUE=1 IDX_EMPTY=2 */
|
||||
VAR lDescending /* BOOL lDescending */
|
||||
VAR cCondition /* FOR Condition */
|
||||
VAR cAlias
|
||||
|
||||
METHOD New( cIndexFile, cExpression, iMode, lDescending, cCondition, cAlias )
|
||||
METHOD CREATE()
|
||||
|
||||
ENDCLASS
|
||||
|
||||
METHOD New( cIndexFile, cExpression, iMode, lDescending, cCondition, cAlias ) CLASS TIndex
|
||||
|
||||
::cIndexFile := cIndexFile /* Index File Name */
|
||||
::cExpression := cExpression /* Index Expression */
|
||||
::iMode := iMode /* iOption: IDX_NONE=0 IDX_UNIQUE=1 IDX_EMPTY=2 */
|
||||
::lDescending := lDescending /* BOOL lDescending */
|
||||
::cCondition := cCondition /* FOR Condition */
|
||||
::cAlias := cAlias /* Alias */
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD CREATE() CLASS TIndex
|
||||
|
||||
// This is For Single TAG Index File : DBFNTX
|
||||
// DBFCDX and DBFNSX Should Use TAG
|
||||
|
||||
RETURN sx_Index( ::cIndexFile, ::cExpression, ::iMode, ::lDescending, ::cCondition, ::cAlias )
|
||||
|
||||
@@ -1,104 +1,104 @@
|
||||
/*
|
||||
* $Id: tools.c 9576 2012-07-17 16:41:57Z andijahja $
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#include "sxapi.h"
|
||||
|
||||
const char * _sx_CheckFileExt( const char * szFileName )
|
||||
{
|
||||
static char s_szFileName[ HB_PATH_MAX ]; /* TOFIX */
|
||||
|
||||
PHB_FNAME pFileName = hb_fsFNameSplit( szFileName );
|
||||
|
||||
memset( s_szFileName, 0, HB_PATH_MAX );
|
||||
|
||||
if( ! pFileName->szExtension )
|
||||
{
|
||||
pFileName->szExtension = ".dbf";
|
||||
hb_fsFNameMerge( s_szFileName, pFileName );
|
||||
}
|
||||
else
|
||||
hb_xstrcpy( s_szFileName, szFileName, 0 );
|
||||
|
||||
hb_xfree( pFileName );
|
||||
|
||||
return s_szFileName;
|
||||
}
|
||||
|
||||
double sx_GetPrivateProfileDouble( LPSTR lpSectionName, LPSTR lpEntryName,
|
||||
LPSTR lpDefault, LPSTR lpIniFileName )
|
||||
{
|
||||
BYTE bBuffer[ 1024 ];
|
||||
|
||||
GetPrivateProfileString( lpSectionName, /* Section */
|
||||
lpEntryName, /* Entry */
|
||||
lpDefault, /* Default */
|
||||
( char * ) bBuffer, /* Destination Buffer */
|
||||
sizeof( bBuffer ) - 1, lpIniFileName ); /* Inifile Name */
|
||||
if( ! ( *bBuffer ) )
|
||||
{
|
||||
return atof( ( char * ) lpDefault );
|
||||
}
|
||||
|
||||
return atof( ( char * ) bBuffer );
|
||||
}
|
||||
|
||||
static void hb_objProcessMessage( PHB_ITEM pObj, PHB_DYNS pDyns, ULONG ulArg, ... )
|
||||
{
|
||||
hb_vmPushSymbol( hb_dynsymSymbol( pDyns ) );
|
||||
hb_vmPush( pObj );
|
||||
|
||||
if( ulArg )
|
||||
{
|
||||
ULONG i;
|
||||
|
||||
va_list ap;
|
||||
|
||||
va_start( ap, ulArg );
|
||||
|
||||
for( i = 0; i < ulArg; i++ )
|
||||
{
|
||||
hb_vmPush( va_arg( ap, PHB_ITEM ) );
|
||||
}
|
||||
|
||||
va_end( ap );
|
||||
}
|
||||
|
||||
hb_vmSend( ( HB_USHORT ) ulArg );
|
||||
}
|
||||
|
||||
PHB_ITEM _sx_GetAlias( void )
|
||||
{
|
||||
PHB_ITEM pResult;
|
||||
|
||||
static PHB_DYNS s_pFunc = NULL;
|
||||
|
||||
if( ! s_pFunc )
|
||||
s_pFunc = hb_dynsymFind( "CALIAS" );
|
||||
|
||||
hb_objProcessMessage( hb_stackSelfItem(), s_pFunc, 0 );
|
||||
pResult = hb_itemNew( NULL );
|
||||
hb_itemCopy( pResult, hb_stackReturnItem() );
|
||||
return pResult;
|
||||
}
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#include "sxapi.h"
|
||||
|
||||
const char * _sx_CheckFileExt( const char * szFileName )
|
||||
{
|
||||
static char s_szFileName[ HB_PATH_MAX ]; /* TOFIX */
|
||||
|
||||
PHB_FNAME pFileName = hb_fsFNameSplit( szFileName );
|
||||
|
||||
memset( s_szFileName, 0, HB_PATH_MAX );
|
||||
|
||||
if( ! pFileName->szExtension )
|
||||
{
|
||||
pFileName->szExtension = ".dbf";
|
||||
hb_fsFNameMerge( s_szFileName, pFileName );
|
||||
}
|
||||
else
|
||||
hb_xstrcpy( s_szFileName, szFileName, 0 );
|
||||
|
||||
hb_xfree( pFileName );
|
||||
|
||||
return s_szFileName;
|
||||
}
|
||||
|
||||
double sx_GetPrivateProfileDouble( LPSTR lpSectionName, LPSTR lpEntryName,
|
||||
LPSTR lpDefault, LPSTR lpIniFileName )
|
||||
{
|
||||
BYTE bBuffer[ 1024 ];
|
||||
|
||||
GetPrivateProfileString( lpSectionName, /* Section */
|
||||
lpEntryName, /* Entry */
|
||||
lpDefault, /* Default */
|
||||
( char * ) bBuffer, /* Destination Buffer */
|
||||
sizeof( bBuffer ) - 1, lpIniFileName ); /* Inifile Name */
|
||||
if( ! ( *bBuffer ) )
|
||||
{
|
||||
return atof( ( char * ) lpDefault );
|
||||
}
|
||||
|
||||
return atof( ( char * ) bBuffer );
|
||||
}
|
||||
|
||||
static void hb_objProcessMessage( PHB_ITEM pObj, PHB_DYNS pDyns, ULONG ulArg, ... )
|
||||
{
|
||||
hb_vmPushSymbol( hb_dynsymSymbol( pDyns ) );
|
||||
hb_vmPush( pObj );
|
||||
|
||||
if( ulArg )
|
||||
{
|
||||
ULONG i;
|
||||
|
||||
va_list ap;
|
||||
|
||||
va_start( ap, ulArg );
|
||||
|
||||
for( i = 0; i < ulArg; i++ )
|
||||
{
|
||||
hb_vmPush( va_arg( ap, PHB_ITEM ) );
|
||||
}
|
||||
|
||||
va_end( ap );
|
||||
}
|
||||
|
||||
hb_vmSend( ( HB_USHORT ) ulArg );
|
||||
}
|
||||
|
||||
PHB_ITEM _sx_GetAlias( void )
|
||||
{
|
||||
PHB_ITEM pResult;
|
||||
|
||||
static PHB_DYNS s_pFunc = NULL;
|
||||
|
||||
if( ! s_pFunc )
|
||||
s_pFunc = hb_dynsymFind( "CALIAS" );
|
||||
|
||||
hb_objProcessMessage( hb_stackSelfItem(), s_pFunc, 0 );
|
||||
pResult = hb_itemNew( NULL );
|
||||
hb_itemCopy( pResult, hb_stackReturnItem() );
|
||||
return pResult;
|
||||
}
|
||||
|
||||
@@ -1,196 +1,196 @@
|
||||
/*
|
||||
* $Id: ttable.prg 9576 2012-07-17 16:41:57Z andijahja $
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#include "hbclass.ch"
|
||||
|
||||
#define SX_READWRITE 1
|
||||
#define SX_READONLY 2
|
||||
#define SX_EXCLUSIVE 3
|
||||
|
||||
// SX_DBINFO( CALIAS ) => ARRAY
|
||||
#define SXINFO_AREA 1 // INTEGER
|
||||
#define SXINFO_FILENAME 2 // STRING
|
||||
#define SXINFO_ALIAS 3 // STRING
|
||||
#define SXINFO_SHARED 4 // LOGICAL
|
||||
#define SXINFO_READONLY 5 // LOGICAL
|
||||
#define SXINFO_RDETYPE 6 // INTEGER
|
||||
#define SXINFO_MODE 7 // INTEGER
|
||||
#define SXINFO_RDD 8 // STRING
|
||||
#define SXINFO_COMMITLEVEL 9 // INTEGER
|
||||
#define SXINFO_RECSIZE 10 // INTEGER
|
||||
#define SXINFO_FIELDCOUNT 11 // INTEGER
|
||||
#define SXINFO_FIELDINFO 12 // ARRAY
|
||||
|
||||
CLASS TApollo
|
||||
|
||||
VAR cDBFFile
|
||||
VAR cIndexFile
|
||||
VAR cAlias
|
||||
VAR nWorkArea
|
||||
VAR nOpenMode INIT SX_READWRITE // { "READWRITE","READONLY","EXCLUSIVE" };
|
||||
VAR nCommitLevel INIT 1 // 1 or 2
|
||||
VAR cRDD // "SDENTX","SDEFOX","SDENSX","SDENSX_DBT"
|
||||
VAR aFieldName INIT {}
|
||||
|
||||
METHOD New( cDBFFile, nOpenMode )
|
||||
METHOD Open( nOpenMode )
|
||||
METHOD CLOSE()
|
||||
METHOD RecCount()
|
||||
METHOD LastRec()
|
||||
METHOD RecNo()
|
||||
METHOD COMMIT()
|
||||
METHOD dbGoTop()
|
||||
METHOD dbGoto( nRecNo )
|
||||
METHOD dbGoBottom()
|
||||
METHOD dbSkip( nSkip )
|
||||
METHOD FCount()
|
||||
METHOD FieldName( iFieldNum )
|
||||
METHOD FieldGet( cFieldName )
|
||||
METHOD BOF()
|
||||
METHOD EOF()
|
||||
METHOD REPLACE( cpFieldName, xData )
|
||||
METHOD dbSeek( cSeek )
|
||||
METHOD Found()
|
||||
METHOD DBLocate( cpExpression, iDirection, bContinue )
|
||||
|
||||
ENDCLASS
|
||||
|
||||
METHOD New( cDBFFile, nOpenMode ) CLASS TApollo
|
||||
|
||||
::cDBFFile := cDBFFile
|
||||
::nOpenMode := nOpenMode
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD Open( nOpenMode ) CLASS TApollo
|
||||
|
||||
LOCAL i, j, cField
|
||||
LOCAL hClass := self:ClassH
|
||||
|
||||
IF ValType( nOpenMode ) == "N"
|
||||
::nOpenMode := nOpenMode
|
||||
ENDIF
|
||||
|
||||
::nWorkArea := sx_Use( ;
|
||||
::cDBFFile, ;
|
||||
::cAlias, ;
|
||||
::nOpenMode, ;
|
||||
::cRDD, ;
|
||||
::nCommitLevel )
|
||||
|
||||
j := sx_FieldCount( ::cAlias )
|
||||
|
||||
FOR i := 1 TO j
|
||||
cField := sx_FieldName( i, ::cAlias )
|
||||
AAdd( ::aFieldName, cField )
|
||||
__clsAddMsg( hClass, cField, __blockGet( cField ), HB_OO_MSG_INLINE )
|
||||
__clsAddMsg( hClass, "_" + cField, __blockPut( cField ), HB_OO_MSG_INLINE )
|
||||
NEXT
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD RecCount() CLASS TApollo
|
||||
|
||||
RETURN sx_RecCount( ::cAlias )
|
||||
|
||||
METHOD LastRec() CLASS TApollo
|
||||
|
||||
RETURN sx_RecCount( ::cAlias )
|
||||
|
||||
METHOD CLOSE() CLASS TApollo
|
||||
|
||||
RETURN sx_Close( ::cAlias )
|
||||
|
||||
METHOD RecNo() CLASS TApollo
|
||||
|
||||
RETURN sx_RecNo( ::cAlias )
|
||||
|
||||
METHOD dbGoto( nRecNo ) CLASS TApollo
|
||||
|
||||
RETURN sx_Go( nRecNo, ::cAlias )
|
||||
|
||||
METHOD dbGoTop() CLASS TApollo
|
||||
|
||||
RETURN sx_GoTop( ::cAlias )
|
||||
|
||||
METHOD dbGoBottom() CLASS TApollo
|
||||
|
||||
RETURN sx_GoBottom( ::cAlias )
|
||||
|
||||
METHOD FCount() CLASS TApollo
|
||||
|
||||
RETURN sx_FieldCount( ::cAlias )
|
||||
|
||||
METHOD FieldName( iFieldNum ) CLASS TApollo
|
||||
|
||||
RETURN sx_FieldName( iFieldNum, ::cAlias )
|
||||
|
||||
METHOD FieldGet( cFieldName ) CLASS TApollo
|
||||
|
||||
RETURN sx_FieldGet( cFieldName, ::cAlias )
|
||||
|
||||
METHOD BOF() CLASS TApollo
|
||||
|
||||
RETURN sx_Bof( ::cAlias )
|
||||
|
||||
METHOD EOF() CLASS TApollo
|
||||
|
||||
RETURN sx_Eof( ::cAlias )
|
||||
|
||||
METHOD COMMIT() CLASS TApollo
|
||||
|
||||
RETURN sx_Commit( ::cAlias )
|
||||
|
||||
METHOD dbSkip( nSkip ) CLASS TApollo
|
||||
|
||||
IF nSkip == NIL
|
||||
nSkip := 1
|
||||
ENDIF
|
||||
|
||||
RETURN sx_Skip( nSkip, ::cAlias )
|
||||
|
||||
METHOD REPLACE( cpFieldName, xData ) CLASS TAPOLLO
|
||||
|
||||
RETURN sx_Replace( cpFieldName, xData, ::cAlias )
|
||||
|
||||
METHOD dbSeek( cSeek ) CLASS TAPOLLO
|
||||
|
||||
RETURN sx_Seek( cSeek, ::cAlias )
|
||||
|
||||
METHOD Found() CLASS TAPOLLO
|
||||
|
||||
RETURN sx_Found( ::cAlias )
|
||||
|
||||
METHOD DBLocate( cpExpression, iDirection, bContinue ) CLASS TAPOLLO
|
||||
|
||||
RETURN sx_Locate( cpExpression, iDirection, bContinue, ::cAlias )
|
||||
|
||||
STATIC FUNCTION __blockGet( cField )
|
||||
|
||||
RETURN {| self | sx_FieldGet( cField, ::cAlias ) }
|
||||
|
||||
STATIC FUNCTION __blockPut( cField )
|
||||
|
||||
RETURN {| self, xval | iif( xval == nil, , sx_Replace( cField, xval, ::cAlias ) ) }
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#include "hbclass.ch"
|
||||
|
||||
#define SX_READWRITE 1
|
||||
#define SX_READONLY 2
|
||||
#define SX_EXCLUSIVE 3
|
||||
|
||||
// SX_DBINFO( CALIAS ) => ARRAY
|
||||
#define SXINFO_AREA 1 // INTEGER
|
||||
#define SXINFO_FILENAME 2 // STRING
|
||||
#define SXINFO_ALIAS 3 // STRING
|
||||
#define SXINFO_SHARED 4 // LOGICAL
|
||||
#define SXINFO_READONLY 5 // LOGICAL
|
||||
#define SXINFO_RDETYPE 6 // INTEGER
|
||||
#define SXINFO_MODE 7 // INTEGER
|
||||
#define SXINFO_RDD 8 // STRING
|
||||
#define SXINFO_COMMITLEVEL 9 // INTEGER
|
||||
#define SXINFO_RECSIZE 10 // INTEGER
|
||||
#define SXINFO_FIELDCOUNT 11 // INTEGER
|
||||
#define SXINFO_FIELDINFO 12 // ARRAY
|
||||
|
||||
CLASS TApollo
|
||||
|
||||
VAR cDBFFile
|
||||
VAR cIndexFile
|
||||
VAR cAlias
|
||||
VAR nWorkArea
|
||||
VAR nOpenMode INIT SX_READWRITE // { "READWRITE","READONLY","EXCLUSIVE" };
|
||||
VAR nCommitLevel INIT 1 // 1 or 2
|
||||
VAR cRDD // "SDENTX","SDEFOX","SDENSX","SDENSX_DBT"
|
||||
VAR aFieldName INIT {}
|
||||
|
||||
METHOD New( cDBFFile, nOpenMode )
|
||||
METHOD Open( nOpenMode )
|
||||
METHOD CLOSE()
|
||||
METHOD RecCount()
|
||||
METHOD LastRec()
|
||||
METHOD RecNo()
|
||||
METHOD COMMIT()
|
||||
METHOD dbGoTop()
|
||||
METHOD dbGoto( nRecNo )
|
||||
METHOD dbGoBottom()
|
||||
METHOD dbSkip( nSkip )
|
||||
METHOD FCount()
|
||||
METHOD FieldName( iFieldNum )
|
||||
METHOD FieldGet( cFieldName )
|
||||
METHOD BOF()
|
||||
METHOD EOF()
|
||||
METHOD REPLACE( cpFieldName, xData )
|
||||
METHOD dbSeek( cSeek )
|
||||
METHOD Found()
|
||||
METHOD DBLocate( cpExpression, iDirection, bContinue )
|
||||
|
||||
ENDCLASS
|
||||
|
||||
METHOD New( cDBFFile, nOpenMode ) CLASS TApollo
|
||||
|
||||
::cDBFFile := cDBFFile
|
||||
::nOpenMode := nOpenMode
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD Open( nOpenMode ) CLASS TApollo
|
||||
|
||||
LOCAL i, j, cField
|
||||
LOCAL hClass := self:ClassH
|
||||
|
||||
IF ValType( nOpenMode ) == "N"
|
||||
::nOpenMode := nOpenMode
|
||||
ENDIF
|
||||
|
||||
::nWorkArea := sx_Use( ;
|
||||
::cDBFFile, ;
|
||||
::cAlias, ;
|
||||
::nOpenMode, ;
|
||||
::cRDD, ;
|
||||
::nCommitLevel )
|
||||
|
||||
j := sx_FieldCount( ::cAlias )
|
||||
|
||||
FOR i := 1 TO j
|
||||
cField := sx_FieldName( i, ::cAlias )
|
||||
AAdd( ::aFieldName, cField )
|
||||
__clsAddMsg( hClass, cField, __blockGet( cField ), HB_OO_MSG_INLINE )
|
||||
__clsAddMsg( hClass, "_" + cField, __blockPut( cField ), HB_OO_MSG_INLINE )
|
||||
NEXT
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD RecCount() CLASS TApollo
|
||||
|
||||
RETURN sx_RecCount( ::cAlias )
|
||||
|
||||
METHOD LastRec() CLASS TApollo
|
||||
|
||||
RETURN sx_RecCount( ::cAlias )
|
||||
|
||||
METHOD CLOSE() CLASS TApollo
|
||||
|
||||
RETURN sx_Close( ::cAlias )
|
||||
|
||||
METHOD RecNo() CLASS TApollo
|
||||
|
||||
RETURN sx_RecNo( ::cAlias )
|
||||
|
||||
METHOD dbGoto( nRecNo ) CLASS TApollo
|
||||
|
||||
RETURN sx_Go( nRecNo, ::cAlias )
|
||||
|
||||
METHOD dbGoTop() CLASS TApollo
|
||||
|
||||
RETURN sx_GoTop( ::cAlias )
|
||||
|
||||
METHOD dbGoBottom() CLASS TApollo
|
||||
|
||||
RETURN sx_GoBottom( ::cAlias )
|
||||
|
||||
METHOD FCount() CLASS TApollo
|
||||
|
||||
RETURN sx_FieldCount( ::cAlias )
|
||||
|
||||
METHOD FieldName( iFieldNum ) CLASS TApollo
|
||||
|
||||
RETURN sx_FieldName( iFieldNum, ::cAlias )
|
||||
|
||||
METHOD FieldGet( cFieldName ) CLASS TApollo
|
||||
|
||||
RETURN sx_FieldGet( cFieldName, ::cAlias )
|
||||
|
||||
METHOD BOF() CLASS TApollo
|
||||
|
||||
RETURN sx_Bof( ::cAlias )
|
||||
|
||||
METHOD EOF() CLASS TApollo
|
||||
|
||||
RETURN sx_Eof( ::cAlias )
|
||||
|
||||
METHOD COMMIT() CLASS TApollo
|
||||
|
||||
RETURN sx_Commit( ::cAlias )
|
||||
|
||||
METHOD dbSkip( nSkip ) CLASS TApollo
|
||||
|
||||
IF nSkip == NIL
|
||||
nSkip := 1
|
||||
ENDIF
|
||||
|
||||
RETURN sx_Skip( nSkip, ::cAlias )
|
||||
|
||||
METHOD REPLACE( cpFieldName, xData ) CLASS TAPOLLO
|
||||
|
||||
RETURN sx_Replace( cpFieldName, xData, ::cAlias )
|
||||
|
||||
METHOD dbSeek( cSeek ) CLASS TAPOLLO
|
||||
|
||||
RETURN sx_Seek( cSeek, ::cAlias )
|
||||
|
||||
METHOD Found() CLASS TAPOLLO
|
||||
|
||||
RETURN sx_Found( ::cAlias )
|
||||
|
||||
METHOD DBLocate( cpExpression, iDirection, bContinue ) CLASS TAPOLLO
|
||||
|
||||
RETURN sx_Locate( cpExpression, iDirection, bContinue, ::cAlias )
|
||||
|
||||
STATIC FUNCTION __blockGet( cField )
|
||||
|
||||
RETURN {| self | sx_FieldGet( cField, ::cAlias ) }
|
||||
|
||||
STATIC FUNCTION __blockPut( cField )
|
||||
|
||||
RETURN {| self, xval | iif( xval == nil, , sx_Replace( cField, xval, ::cAlias ) ) }
|
||||
|
||||
@@ -1,105 +1,105 @@
|
||||
/*
|
||||
* $Id: ttag.prg 9576 2012-07-17 16:41:57Z andijahja $
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#include "hbclass.ch"
|
||||
|
||||
CLASS TTag
|
||||
|
||||
VAR cIndexFile /* Index File Name */
|
||||
VAR aTagName INIT {} /* Index Tag Name */
|
||||
VAR aExpression INIT {} /* Index Expression */
|
||||
VAR iMode /* iOption: IDX_NONE=0 IDX_UNIQUE=1 IDX_EMPTY=2 */
|
||||
VAR lDescending /* BOOL lDescending */
|
||||
VAR cCondition /* FOR Condition */
|
||||
VAR cAlias
|
||||
|
||||
METHOD New( cIndexFile, atagName, aExpression, iMode, lDescending, cCondition, cAlias )
|
||||
METHOD CREATE( lEraseOld )
|
||||
METHOD Open()
|
||||
METHOD CLOSE()
|
||||
METHOD SetOrder( xOrder ) /* nOrder OR cOrder */
|
||||
METHOD TagCount()
|
||||
METHOD IndexOrd()
|
||||
|
||||
ENDCLASS
|
||||
|
||||
METHOD CLOSE() CLASS TTag
|
||||
|
||||
RETURN sx_indexClose( ::cAlias )
|
||||
|
||||
METHOD IndexOrd() CLASS TTag
|
||||
|
||||
RETURN SX_INDEXORD( ::cAlias )
|
||||
|
||||
METHOD SetOrder( xOrder ) CLASS TTag
|
||||
|
||||
RETURN sx_setOrder( xOrder, ::cAlias )
|
||||
|
||||
METHOD Open() CLASS TTag
|
||||
|
||||
RETURN Sx_IndexOpen( ::cIndexFile, ::cAlias )
|
||||
|
||||
METHOD TagCount() CLASS TTag
|
||||
|
||||
RETURN sx_TagCount( ::cAlias )
|
||||
|
||||
METHOD New( cIndexFile, atagName, aExpression, iMode, lDescending, cCondition, cAlias ) CLASS TTag
|
||||
|
||||
::cIndexFile := cIndexFile /* Index File Name */
|
||||
::aTagName := aTagName /* Index TagName */
|
||||
::aExpression := aExpression /* Index Expression */
|
||||
::iMode := iMode /* iOption: IDX_NONE=0 IDX_UNIQUE=1 IDX_EMPTY=2 */
|
||||
::lDescending := lDescending /* BOOL lDescending */
|
||||
::cCondition := cCondition /* FOR Condition */
|
||||
::cAlias := cAlias /* Alias */
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD CREATE( lEraseOld ) CLASS TTag
|
||||
|
||||
// This is For MULTI TAG Index File : DBFNSX and DBFCDX
|
||||
// DBFNTX Should Use TIndex
|
||||
LOCAL i, ul, nResult
|
||||
|
||||
IF lEraseOld == NIL
|
||||
lEraseOld := .T.
|
||||
ENDIF
|
||||
|
||||
IF lEraseOld .AND. File( ::cIndexFile )
|
||||
FErase( ::cIndexFile )
|
||||
ENDIF
|
||||
|
||||
IF ! Empty( ::aTagName ) .AND. ! Empty( ::aExpression ) .AND. ;
|
||||
( ul := Len( ::aTagName ) ) == Len( ::aExpression )
|
||||
|
||||
FOR i := 1 TO ul
|
||||
nResult := sx_IndexTag( ::cIndexFile, ::aTagName[ i ], ::aExpression[ i ], ::iMode, ::lDescending, ::cCondition, ::cAlias )
|
||||
NEXT
|
||||
|
||||
RETURN nResult
|
||||
|
||||
ENDIF
|
||||
|
||||
RETURN 0
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#include "hbclass.ch"
|
||||
|
||||
CLASS TTag
|
||||
|
||||
VAR cIndexFile /* Index File Name */
|
||||
VAR aTagName INIT {} /* Index Tag Name */
|
||||
VAR aExpression INIT {} /* Index Expression */
|
||||
VAR iMode /* iOption: IDX_NONE=0 IDX_UNIQUE=1 IDX_EMPTY=2 */
|
||||
VAR lDescending /* BOOL lDescending */
|
||||
VAR cCondition /* FOR Condition */
|
||||
VAR cAlias
|
||||
|
||||
METHOD New( cIndexFile, atagName, aExpression, iMode, lDescending, cCondition, cAlias )
|
||||
METHOD CREATE( lEraseOld )
|
||||
METHOD Open()
|
||||
METHOD CLOSE()
|
||||
METHOD SetOrder( xOrder ) /* nOrder OR cOrder */
|
||||
METHOD TagCount()
|
||||
METHOD IndexOrd()
|
||||
|
||||
ENDCLASS
|
||||
|
||||
METHOD CLOSE() CLASS TTag
|
||||
|
||||
RETURN sx_indexClose( ::cAlias )
|
||||
|
||||
METHOD IndexOrd() CLASS TTag
|
||||
|
||||
RETURN SX_INDEXORD( ::cAlias )
|
||||
|
||||
METHOD SetOrder( xOrder ) CLASS TTag
|
||||
|
||||
RETURN sx_setOrder( xOrder, ::cAlias )
|
||||
|
||||
METHOD Open() CLASS TTag
|
||||
|
||||
RETURN Sx_IndexOpen( ::cIndexFile, ::cAlias )
|
||||
|
||||
METHOD TagCount() CLASS TTag
|
||||
|
||||
RETURN sx_TagCount( ::cAlias )
|
||||
|
||||
METHOD New( cIndexFile, atagName, aExpression, iMode, lDescending, cCondition, cAlias ) CLASS TTag
|
||||
|
||||
::cIndexFile := cIndexFile /* Index File Name */
|
||||
::aTagName := aTagName /* Index TagName */
|
||||
::aExpression := aExpression /* Index Expression */
|
||||
::iMode := iMode /* iOption: IDX_NONE=0 IDX_UNIQUE=1 IDX_EMPTY=2 */
|
||||
::lDescending := lDescending /* BOOL lDescending */
|
||||
::cCondition := cCondition /* FOR Condition */
|
||||
::cAlias := cAlias /* Alias */
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD CREATE( lEraseOld ) CLASS TTag
|
||||
|
||||
// This is For MULTI TAG Index File : DBFNSX and DBFCDX
|
||||
// DBFNTX Should Use TIndex
|
||||
LOCAL i, ul, nResult
|
||||
|
||||
IF lEraseOld == NIL
|
||||
lEraseOld := .T.
|
||||
ENDIF
|
||||
|
||||
IF lEraseOld .AND. File( ::cIndexFile )
|
||||
FErase( ::cIndexFile )
|
||||
ENDIF
|
||||
|
||||
IF ! Empty( ::aTagName ) .AND. ! Empty( ::aExpression ) .AND. ;
|
||||
( ul := Len( ::aTagName ) ) == Len( ::aExpression )
|
||||
|
||||
FOR i := 1 TO ul
|
||||
nResult := sx_IndexTag( ::cIndexFile, ::aTagName[ i ], ::aExpression[ i ], ::iMode, ::lDescending, ::cCondition, ::cAlias )
|
||||
NEXT
|
||||
|
||||
RETURN nResult
|
||||
|
||||
ENDIF
|
||||
|
||||
RETURN 0
|
||||
|
||||
@@ -1,83 +1,83 @@
|
||||
/*
|
||||
* $Id: unsix.ch 9576 2012-07-17 16:41:57Z andijahja $
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#ifndef __UNSIX__
|
||||
#define __UNSIX__
|
||||
|
||||
#xuntranslate USE <cDBF> [ALIAS <(cAlias)>] [<rdd: VIA, RDD, FLAVOR> <(cRDD)>] [VAR <nArea>] [<(cOpenMode)>]
|
||||
#xuntranslate CREATE <file: TABLE, DBF, FILE> <cDBF> <stru: STRUCT, STRUCTURE> <aStruct> [VAR <nArea>] [<driver: RDD, VIA, FLAVOR> <cDriver>] [ALIAS <cAlias>]
|
||||
#xuntranslate SET DATE <cCountry>
|
||||
#xuntranslate REPLACE <cField> WITH <vData>
|
||||
#xuntranslate INDEX ON <cExpression> TO <cIndexFile> [ FOR <cCondition> ] [<mod: UNIQUE, RYO>] [<order: DESCENDING>]
|
||||
#xuntranslate Seek(<cSeek>)
|
||||
#xuntranslate Found()
|
||||
|
||||
#xuntranslate SET TRIM <ON>
|
||||
#xuntranslate SET SOFTSEEK <ON>
|
||||
#xuntranslate SET CENTURY <ON>
|
||||
#xuntranslate SET EXACT <ON>
|
||||
#xuntranslate SET DELETED <ON>
|
||||
#xuntranslate SET EPOCH [TO] <nEpoch>
|
||||
#xuntranslate SET LOCK TIMEOUT <nTimeOut>
|
||||
#xuntranslate SET [FILE] HANDLE [TO] <nHandles>
|
||||
|
||||
#xuntranslate SKIP [<nSkip>]
|
||||
#xuntranslate Bof()
|
||||
#xuntranslate Eof()
|
||||
#xuntranslate RecCount()
|
||||
#xuntranslate SetSoftSeek([<x>])
|
||||
#xuntranslate RecNo()
|
||||
#xuntranslate SetDateFormat( <cDateFormat> )
|
||||
|
||||
#xuntranslate Alias()
|
||||
#xuntranslate FCount()
|
||||
#xuntranslate FieldPut(<x>,<vData>)
|
||||
#xuntranslate FieldGet(<x>)
|
||||
#xuntranslate FieldGetStr(<x>)
|
||||
#xuntranslate FieldGetDtos(<x>)
|
||||
#xuntranslate FieldGetJulian(<x>)
|
||||
#xuntranslate FieldPos(<x>)
|
||||
#xuntranslate FieldName(<x>)
|
||||
#xuntranslate FieldType(<x>)
|
||||
#xuntranslate FieldWidth(<x>)
|
||||
#xuntranslate FieldOffset(<x>)
|
||||
#xuntranslate FieldDecimals(<x>)
|
||||
|
||||
#xuncommand APPEND BLANK
|
||||
#xuncommand GO [TO] <nRecNo>
|
||||
#xuncommand GO TOP
|
||||
#xuncommand GO TO TOP
|
||||
#xuncommand GOTOP
|
||||
#xuncommand GO BOTTOM
|
||||
#xuncommand GO TO BOTTOM
|
||||
#xuncommand GOBOTTOM
|
||||
#xuncommand ZAP
|
||||
#xuncommand COMMIT
|
||||
#xuncommand CLOSE ALL
|
||||
#xuncommand CLOSE DATABASE
|
||||
#xuncommand CLOSE DATA
|
||||
#xuncommand PACK
|
||||
|
||||
#endif // end __UNSIX__
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
|
||||
#ifndef __UNSIX__
|
||||
#define __UNSIX__
|
||||
|
||||
#xuntranslate USE <cDBF> [ALIAS <(cAlias)>] [<rdd: VIA, RDD, FLAVOR> <(cRDD)>] [VAR <nArea>] [<(cOpenMode)>]
|
||||
#xuntranslate CREATE <file: TABLE, DBF, FILE> <cDBF> <stru: STRUCT, STRUCTURE> <aStruct> [VAR <nArea>] [<driver: RDD, VIA, FLAVOR> <cDriver>] [ALIAS <cAlias>]
|
||||
#xuntranslate SET DATE <cCountry>
|
||||
#xuntranslate REPLACE <cField> WITH <vData>
|
||||
#xuntranslate INDEX ON <cExpression> TO <cIndexFile> [ FOR <cCondition> ] [<mod: UNIQUE, RYO>] [<order: DESCENDING>]
|
||||
#xuntranslate Seek(<cSeek>)
|
||||
#xuntranslate Found()
|
||||
|
||||
#xuntranslate SET TRIM <ON>
|
||||
#xuntranslate SET SOFTSEEK <ON>
|
||||
#xuntranslate SET CENTURY <ON>
|
||||
#xuntranslate SET EXACT <ON>
|
||||
#xuntranslate SET DELETED <ON>
|
||||
#xuntranslate SET EPOCH [TO] <nEpoch>
|
||||
#xuntranslate SET LOCK TIMEOUT <nTimeOut>
|
||||
#xuntranslate SET [FILE] HANDLE [TO] <nHandles>
|
||||
|
||||
#xuntranslate SKIP [<nSkip>]
|
||||
#xuntranslate Bof()
|
||||
#xuntranslate Eof()
|
||||
#xuntranslate RecCount()
|
||||
#xuntranslate SetSoftSeek([<x>])
|
||||
#xuntranslate RecNo()
|
||||
#xuntranslate SetDateFormat( <cDateFormat> )
|
||||
|
||||
#xuntranslate Alias()
|
||||
#xuntranslate FCount()
|
||||
#xuntranslate FieldPut(<x>,<vData>)
|
||||
#xuntranslate FieldGet(<x>)
|
||||
#xuntranslate FieldGetStr(<x>)
|
||||
#xuntranslate FieldGetDtos(<x>)
|
||||
#xuntranslate FieldGetJulian(<x>)
|
||||
#xuntranslate FieldPos(<x>)
|
||||
#xuntranslate FieldName(<x>)
|
||||
#xuntranslate FieldType(<x>)
|
||||
#xuntranslate FieldWidth(<x>)
|
||||
#xuntranslate FieldOffset(<x>)
|
||||
#xuntranslate FieldDecimals(<x>)
|
||||
|
||||
#xuncommand APPEND BLANK
|
||||
#xuncommand GO [TO] <nRecNo>
|
||||
#xuncommand GO TOP
|
||||
#xuncommand GO TO TOP
|
||||
#xuncommand GOTOP
|
||||
#xuncommand GO BOTTOM
|
||||
#xuncommand GO TO BOTTOM
|
||||
#xuncommand GOBOTTOM
|
||||
#xuncommand ZAP
|
||||
#xuncommand COMMIT
|
||||
#xuncommand CLOSE ALL
|
||||
#xuncommand CLOSE DATABASE
|
||||
#xuncommand CLOSE DATA
|
||||
#xuncommand PACK
|
||||
|
||||
#endif // end __UNSIX__
|
||||
|
||||
@@ -1,305 +1,305 @@
|
||||
/*
|
||||
* $Id: use.c 9576 2012-07-17 16:41:57Z andijahja $
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
#include "sxapi.h"
|
||||
|
||||
static const char * s_cRDD[] = { "SDENTX", "SDEFOX", "SDENSX", "SDENSX_DBT" };
|
||||
static const char * s_aDescription[] =
|
||||
{
|
||||
"WORKAREA (INTEGER)", "FILENAME (STRING)", "ALIAS (STRING)",
|
||||
"SHARED (BOOL)", "READONLY (BOOL)", "RDE TYTE (INTEGER)",
|
||||
"OPEN MODE (INTEGER)", "RDE TYPE (STRING)", "COMMIT LEVEL (INTEGER)",
|
||||
"RECSIZE (INTEGER)", "FIELD COUNT (INTEGER)", "DBF STRUCTURE (ARRAY)"
|
||||
};
|
||||
|
||||
static void _sx_UseGlobalInfo( SX_DBOPENINFO OpenInfo )
|
||||
{
|
||||
PHB_ITEM pData = hb_itemNew( NULL );
|
||||
PHB_ITEM pItem = hb_itemNew( NULL );
|
||||
|
||||
hb_arrayNew( pItem, 12 ); /* Elements of SX_DBOPENINFO */
|
||||
hb_arraySet( pItem, 1, hb_itemPutNI( pData, OpenInfo.uiArea ) );
|
||||
hb_arraySet( pItem, 2, hb_itemPutC( pData, OpenInfo.cFilename ) );
|
||||
hb_arraySet( pItem, 3, hb_itemPutC( pData, OpenInfo.cAlias ) );
|
||||
hb_arraySet( pItem, 4, hb_itemPutL( pData, OpenInfo.fShared ) );
|
||||
hb_arraySet( pItem, 5, hb_itemPutL( pData, OpenInfo.fReadonly ) );
|
||||
hb_arraySet( pItem, 6, hb_itemPutNI( pData, OpenInfo.iRDEType ) );
|
||||
hb_arraySet( pItem, 7, hb_itemPutNI( pData, OpenInfo.iMode ) );
|
||||
hb_arraySet( pItem, 8, hb_itemPutC( pData, OpenInfo.cRDD ) );
|
||||
hb_arraySet( pItem, 9, hb_itemPutNI( pData, OpenInfo.iCommitLevel ) );
|
||||
hb_arraySet( pItem, 10, hb_itemPutNI( pData, OpenInfo.iRecSize ) );
|
||||
hb_arraySet( pItem, 11, hb_itemPutNI( pData, OpenInfo.iFieldCount ) );
|
||||
hb_arraySet( pItem, 12, OpenInfo.aFieldInfo );
|
||||
hb_arrayAdd( Opened_DBF_Property, pItem );
|
||||
|
||||
hb_itemRelease( pData );
|
||||
hb_itemRelease( pItem );
|
||||
}
|
||||
|
||||
void _sx_SetDBFInfo( int iOpenedArea, const char * szAlias, int iOpenMode,
|
||||
int iRDEType )
|
||||
{
|
||||
SX_DBOPENINFO OpenInfo;
|
||||
PHB_ITEM pStruct = _sx_DbStruct();
|
||||
|
||||
OpenInfo.uiArea = ( HB_USHORT ) iOpenedArea;
|
||||
OpenInfo.cFilename = ( char * ) sx_BaseName();
|
||||
OpenInfo.cAlias = szAlias;
|
||||
OpenInfo.fShared = ( ( iOpenMode == 0 ) ? TRUE : FALSE );
|
||||
OpenInfo.fReadonly = ( ( iOpenMode == READONLY ) ? TRUE : FALSE );
|
||||
OpenInfo.iRDEType = ( HB_USHORT ) iRDEType;
|
||||
OpenInfo.iMode = ( HB_USHORT ) iOpenMode;
|
||||
OpenInfo.cRDD = s_cRDD[ iRDEType - 1 ];
|
||||
OpenInfo.iCommitLevel = ( HB_USHORT ) sx_GetCommitLevel( ( WORD ) iOpenedArea );
|
||||
OpenInfo.iRecSize = ( HB_USHORT ) sx_RecSize();
|
||||
OpenInfo.iFieldCount = sx_FieldCount();
|
||||
OpenInfo.aFieldInfo = hb_itemNew( NULL );
|
||||
hb_itemCopy( OpenInfo.aFieldInfo, pStruct /* _sx_DbStruct() */ );
|
||||
_sx_UseGlobalInfo( OpenInfo );
|
||||
hb_itemRelease( OpenInfo.aFieldInfo );
|
||||
hb_itemRelease( pStruct );
|
||||
}
|
||||
|
||||
HB_FUNC( SX_USE )
|
||||
{
|
||||
if( HB_ISCHAR( 1 ) )
|
||||
{
|
||||
PBYTE szDBFFileName = ( PBYTE ) _sx_CheckFileExt( hb_parc( 1 ) );
|
||||
|
||||
if( hb_fsFileExists( ( const char * ) szDBFFileName ) )
|
||||
{
|
||||
char * szAlias = NULL;
|
||||
HB_BOOL bIsAlloc;
|
||||
int iRDEType;
|
||||
int iOpenMode;
|
||||
int iOpenedArea;
|
||||
|
||||
/* Alias Passed? */
|
||||
if( HB_ISCHAR( 2 ) )
|
||||
{
|
||||
szAlias = ( char * ) hb_parc( 2 );
|
||||
bIsAlloc = ( strlen( szAlias ) == 0 );
|
||||
}
|
||||
else
|
||||
bIsAlloc = HB_TRUE;
|
||||
|
||||
if( bIsAlloc )
|
||||
{
|
||||
szAlias = _sx_AutoAlias( hb_parc( 1 ) );
|
||||
hb_storc( szAlias, 2 );
|
||||
}
|
||||
|
||||
/* Open Mode Passed? */
|
||||
if( HB_ISCHAR( 3 ) )
|
||||
iOpenMode = _sx_CheckOpenMode( hb_parc( 3 ) );
|
||||
else if( HB_ISNUM( 3 ) )
|
||||
iOpenMode = hb_parni( 3 );
|
||||
else
|
||||
iOpenMode = READWRITE;
|
||||
|
||||
/* RDE Type Passed? */
|
||||
iRDEType = HB_ISCHAR( 4 ) ? _sx_CheckRDD( hb_parc( 4 ) ) : i_sxApi_RDD_Default;
|
||||
|
||||
if( HB_ISNUM( 5 ) )
|
||||
{
|
||||
UINT iCommitLevel = hb_parni( 5 );
|
||||
|
||||
if( iCommitLevel > 2 )
|
||||
iCommitLevel = 2;
|
||||
|
||||
iOpenedArea = sx_UseEx( szDBFFileName, ( PBYTE ) szAlias, ( WORD ) iOpenMode,
|
||||
( WORD ) iRDEType, ( WORD ) iCommitLevel );
|
||||
}
|
||||
else
|
||||
{
|
||||
iOpenedArea = sx_Use( szDBFFileName, ( PBYTE ) szAlias, ( WORD ) iOpenMode,
|
||||
( WORD ) iRDEType );
|
||||
}
|
||||
|
||||
hb_retni( iOpenedArea );
|
||||
|
||||
if( iOpenedArea > 0 )
|
||||
_sx_SetDBFInfo( iOpenedArea, szAlias, iOpenMode, iRDEType );
|
||||
|
||||
if( bIsAlloc )
|
||||
hb_xfree( szAlias );
|
||||
}
|
||||
else
|
||||
hb_errRT_BASE( EG_OPEN, 2020, NULL, "SX_USE", 1, hb_paramError( 1 ) );
|
||||
}
|
||||
else
|
||||
hb_errRT_BASE( EG_ARG, 2020, NULL, "SX_USE", 1, hb_paramError( 1 ) );
|
||||
}
|
||||
|
||||
HB_FUNC( SX_DBINFO )
|
||||
{
|
||||
if( Opened_DBF_Property )
|
||||
{
|
||||
if( HB_ISCHAR( 1 ) || HB_ISNUM( 1 ) )
|
||||
{
|
||||
PHB_ITEM aSingleInfo = hb_itemNew( NULL );
|
||||
char * szAlias = HB_ISCHAR( 1 ) ? ( char * ) hb_parc( 1 ) : ( char * ) sx_Alias( ( WORD ) hb_parni( 1 ) );
|
||||
HB_ISIZ iLen = strlen( szAlias ) + 1;
|
||||
|
||||
hb_arrayNew( aSingleInfo, 0 );
|
||||
|
||||
/* printf("Here....?\n"); */
|
||||
if( iLen > 1 )
|
||||
{
|
||||
HB_USHORT ui;
|
||||
char * szTmp = ( char * ) hb_xgrab( iLen );
|
||||
|
||||
hb_snprintf( szTmp, iLen, "%s", szAlias );
|
||||
szTmp = _sx_upper( szTmp );
|
||||
|
||||
for( ui = 0; ui < (HB_USHORT) hb_arrayLen( Opened_DBF_Property );
|
||||
ui++ )
|
||||
{
|
||||
HB_BOOL bFound = HB_FALSE;
|
||||
PHB_ITEM pInfo = hb_arrayGetItemPtr( Opened_DBF_Property, ui + 1 );
|
||||
const char * cAliasInfo = hb_arrayGetCPtr( pInfo, 3 );
|
||||
|
||||
if( cAliasInfo )
|
||||
{
|
||||
if( strcmp( szTmp, cAliasInfo ) == 0 )
|
||||
{
|
||||
hb_arrayAdd( aSingleInfo, pInfo );
|
||||
bFound = HB_TRUE;
|
||||
}
|
||||
|
||||
if( bFound )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
hb_xfree( szTmp );
|
||||
}
|
||||
|
||||
hb_itemReturnRelease( aSingleInfo );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( HB_ISLOG( 2 ) && hb_parl( 2 ) )
|
||||
{
|
||||
/* Complete Info With Description */
|
||||
ULONG i;
|
||||
PHB_ITEM pInfo = NULL;
|
||||
|
||||
hb_arrayCloneTo( pInfo, Opened_DBF_Property );
|
||||
|
||||
for( i = 0; i < hb_arrayLen( pInfo ); i++ )
|
||||
{
|
||||
PHB_ITEM aDesc = hb_arrayGetItemPtr( pInfo, i + 1 );
|
||||
ULONG j;
|
||||
HB_BOOL bNotArray = HB_FALSE;
|
||||
|
||||
for( j = 0; j < hb_arrayLen( aDesc ); j++ )
|
||||
{
|
||||
PHB_ITEM pData = hb_itemNew( NULL );
|
||||
char * szDesc = ( char * ) hb_xgrab( 256 );
|
||||
|
||||
if( hb_arrayGetType( aDesc, j + 1 ) & HB_IT_STRING )
|
||||
{
|
||||
char * szStr = hb_arrayGetC( aDesc, j + 1 );
|
||||
hb_snprintf( szDesc, 255, "%s=%s", s_aDescription[ j ], szStr );
|
||||
hb_xfree( szStr );
|
||||
}
|
||||
else if( hb_arrayGetType( aDesc, j + 1 ) & HB_IT_NUMERIC )
|
||||
hb_snprintf( szDesc, 255, "%s=%i", s_aDescription[ j ],
|
||||
hb_arrayGetNI( aDesc, j + 1 ) );
|
||||
else if( hb_arrayGetType( aDesc, j + 1 ) & HB_IT_LOGICAL )
|
||||
hb_snprintf( szDesc, 255, "%s=%s", s_aDescription[ j ],
|
||||
hb_arrayGetL( aDesc, j + 1 ) ? ".T." : ".F." );
|
||||
else if( hb_arrayGetType( aDesc, j + 1 ) & HB_IT_ARRAY )
|
||||
{
|
||||
PHB_ITEM aField = hb_arrayGetItemPtr( aDesc, j + 1 );
|
||||
ULONG u;
|
||||
|
||||
bNotArray = HB_TRUE;
|
||||
|
||||
for( u = 0; u < hb_arrayLen( aField ); u++ )
|
||||
{
|
||||
PHB_ITEM _pF = hb_arrayGetItemPtr( aField, u + 1 );
|
||||
char * szField = ( char * ) hb_xgrab( 256 );
|
||||
char * FName = hb_arrayGetC( _pF, 1 );
|
||||
char * FType = hb_arrayGetC( _pF, 2 );
|
||||
int FSize = ( int ) hb_arrayGetNI( _pF, 3 );
|
||||
int FDec = ( int ) hb_arrayGetNI( _pF, 4 );
|
||||
PHB_ITEM pField = hb_itemNew( NULL );
|
||||
|
||||
hb_snprintf( szField, 255, "{\"%s\", \"%s\", %i, %i}",
|
||||
FName, FType, FSize, FDec );
|
||||
hb_arraySet( aField, u + 1, hb_itemPutC( pField, szField ) );
|
||||
hb_xfree( szField );
|
||||
hb_xfree( FName );
|
||||
hb_xfree( FType );
|
||||
hb_itemRelease( pField );
|
||||
}
|
||||
} /* hb_arrayGetType( aDesc, j + 1 ) & HB_IT_ARRAY */
|
||||
|
||||
if( ! bNotArray )
|
||||
hb_arraySet( aDesc, j + 1, hb_itemPutC( pData, szDesc ) );
|
||||
|
||||
hb_xfree( szDesc );
|
||||
hb_itemRelease( pData );
|
||||
} /* for( j = 0; j < hb_arrayLen( aDesc ); j++ ) */
|
||||
} /* for( i = 0; i< hb_arrayLen( pInfo ); i++ ) */
|
||||
|
||||
hb_itemReturnRelease( pInfo );
|
||||
} /* ( HB_ISLOG( 2 ) && hb_parl( 2 ) ) */
|
||||
else
|
||||
{
|
||||
hb_itemReturn( Opened_DBF_Property );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HB_BOOL _sx_Used( void )
|
||||
{
|
||||
return Opened_DBF_Property ? hb_arrayLen( Opened_DBF_Property ) > 0 : HB_FALSE;
|
||||
}
|
||||
|
||||
HB_FUNC( SX_USED )
|
||||
{
|
||||
hb_retl( Opened_DBF_Property ? hb_arrayLen( Opened_DBF_Property ) > 0 : HB_FALSE );
|
||||
}
|
||||
|
||||
int _sx_CheckOpenMode( const char * sSetDefault )
|
||||
{
|
||||
const char * sxOpenMode[] = { "READWRITE", "READONLY", "EXCLUSIVE" };
|
||||
int ui;
|
||||
int iOpenMode = READWRITE;
|
||||
|
||||
for( ui = 0; ui < 3; ui++ )
|
||||
{
|
||||
if( strcmp( sxOpenMode[ ui ], sSetDefault ) == 0 )
|
||||
{
|
||||
iOpenMode = ui;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return iOpenMode;
|
||||
}
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* SixAPI Project source code:
|
||||
*
|
||||
* Copyright 2010 Andi Jahja <xharbour@telkom.net.id>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*/
|
||||
#include "sxapi.h"
|
||||
|
||||
static const char * s_cRDD[] = { "SDENTX", "SDEFOX", "SDENSX", "SDENSX_DBT" };
|
||||
static const char * s_aDescription[] =
|
||||
{
|
||||
"WORKAREA (INTEGER)", "FILENAME (STRING)", "ALIAS (STRING)",
|
||||
"SHARED (BOOL)", "READONLY (BOOL)", "RDE TYTE (INTEGER)",
|
||||
"OPEN MODE (INTEGER)", "RDE TYPE (STRING)", "COMMIT LEVEL (INTEGER)",
|
||||
"RECSIZE (INTEGER)", "FIELD COUNT (INTEGER)", "DBF STRUCTURE (ARRAY)"
|
||||
};
|
||||
|
||||
static void _sx_UseGlobalInfo( SX_DBOPENINFO OpenInfo )
|
||||
{
|
||||
PHB_ITEM pData = hb_itemNew( NULL );
|
||||
PHB_ITEM pItem = hb_itemNew( NULL );
|
||||
|
||||
hb_arrayNew( pItem, 12 ); /* Elements of SX_DBOPENINFO */
|
||||
hb_arraySet( pItem, 1, hb_itemPutNI( pData, OpenInfo.uiArea ) );
|
||||
hb_arraySet( pItem, 2, hb_itemPutC( pData, OpenInfo.cFilename ) );
|
||||
hb_arraySet( pItem, 3, hb_itemPutC( pData, OpenInfo.cAlias ) );
|
||||
hb_arraySet( pItem, 4, hb_itemPutL( pData, OpenInfo.fShared ) );
|
||||
hb_arraySet( pItem, 5, hb_itemPutL( pData, OpenInfo.fReadonly ) );
|
||||
hb_arraySet( pItem, 6, hb_itemPutNI( pData, OpenInfo.iRDEType ) );
|
||||
hb_arraySet( pItem, 7, hb_itemPutNI( pData, OpenInfo.iMode ) );
|
||||
hb_arraySet( pItem, 8, hb_itemPutC( pData, OpenInfo.cRDD ) );
|
||||
hb_arraySet( pItem, 9, hb_itemPutNI( pData, OpenInfo.iCommitLevel ) );
|
||||
hb_arraySet( pItem, 10, hb_itemPutNI( pData, OpenInfo.iRecSize ) );
|
||||
hb_arraySet( pItem, 11, hb_itemPutNI( pData, OpenInfo.iFieldCount ) );
|
||||
hb_arraySet( pItem, 12, OpenInfo.aFieldInfo );
|
||||
hb_arrayAdd( Opened_DBF_Property, pItem );
|
||||
|
||||
hb_itemRelease( pData );
|
||||
hb_itemRelease( pItem );
|
||||
}
|
||||
|
||||
void _sx_SetDBFInfo( int iOpenedArea, const char * szAlias, int iOpenMode,
|
||||
int iRDEType )
|
||||
{
|
||||
SX_DBOPENINFO OpenInfo;
|
||||
PHB_ITEM pStruct = _sx_DbStruct();
|
||||
|
||||
OpenInfo.uiArea = ( HB_USHORT ) iOpenedArea;
|
||||
OpenInfo.cFilename = ( char * ) sx_BaseName();
|
||||
OpenInfo.cAlias = szAlias;
|
||||
OpenInfo.fShared = ( ( iOpenMode == 0 ) ? TRUE : FALSE );
|
||||
OpenInfo.fReadonly = ( ( iOpenMode == READONLY ) ? TRUE : FALSE );
|
||||
OpenInfo.iRDEType = ( HB_USHORT ) iRDEType;
|
||||
OpenInfo.iMode = ( HB_USHORT ) iOpenMode;
|
||||
OpenInfo.cRDD = s_cRDD[ iRDEType - 1 ];
|
||||
OpenInfo.iCommitLevel = ( HB_USHORT ) sx_GetCommitLevel( ( WORD ) iOpenedArea );
|
||||
OpenInfo.iRecSize = ( HB_USHORT ) sx_RecSize();
|
||||
OpenInfo.iFieldCount = sx_FieldCount();
|
||||
OpenInfo.aFieldInfo = hb_itemNew( NULL );
|
||||
hb_itemCopy( OpenInfo.aFieldInfo, pStruct /* _sx_DbStruct() */ );
|
||||
_sx_UseGlobalInfo( OpenInfo );
|
||||
hb_itemRelease( OpenInfo.aFieldInfo );
|
||||
hb_itemRelease( pStruct );
|
||||
}
|
||||
|
||||
HB_FUNC( SX_USE )
|
||||
{
|
||||
if( HB_ISCHAR( 1 ) )
|
||||
{
|
||||
PBYTE szDBFFileName = ( PBYTE ) _sx_CheckFileExt( hb_parc( 1 ) );
|
||||
|
||||
if( hb_fsFileExists( ( const char * ) szDBFFileName ) )
|
||||
{
|
||||
char * szAlias = NULL;
|
||||
HB_BOOL bIsAlloc;
|
||||
int iRDEType;
|
||||
int iOpenMode;
|
||||
int iOpenedArea;
|
||||
|
||||
/* Alias Passed? */
|
||||
if( HB_ISCHAR( 2 ) )
|
||||
{
|
||||
szAlias = ( char * ) hb_parc( 2 );
|
||||
bIsAlloc = ( strlen( szAlias ) == 0 );
|
||||
}
|
||||
else
|
||||
bIsAlloc = HB_TRUE;
|
||||
|
||||
if( bIsAlloc )
|
||||
{
|
||||
szAlias = _sx_AutoAlias( hb_parc( 1 ) );
|
||||
hb_storc( szAlias, 2 );
|
||||
}
|
||||
|
||||
/* Open Mode Passed? */
|
||||
if( HB_ISCHAR( 3 ) )
|
||||
iOpenMode = _sx_CheckOpenMode( hb_parc( 3 ) );
|
||||
else if( HB_ISNUM( 3 ) )
|
||||
iOpenMode = hb_parni( 3 );
|
||||
else
|
||||
iOpenMode = READWRITE;
|
||||
|
||||
/* RDE Type Passed? */
|
||||
iRDEType = HB_ISCHAR( 4 ) ? _sx_CheckRDD( hb_parc( 4 ) ) : i_sxApi_RDD_Default;
|
||||
|
||||
if( HB_ISNUM( 5 ) )
|
||||
{
|
||||
UINT iCommitLevel = hb_parni( 5 );
|
||||
|
||||
if( iCommitLevel > 2 )
|
||||
iCommitLevel = 2;
|
||||
|
||||
iOpenedArea = sx_UseEx( szDBFFileName, ( PBYTE ) szAlias, ( WORD ) iOpenMode,
|
||||
( WORD ) iRDEType, ( WORD ) iCommitLevel );
|
||||
}
|
||||
else
|
||||
{
|
||||
iOpenedArea = sx_Use( szDBFFileName, ( PBYTE ) szAlias, ( WORD ) iOpenMode,
|
||||
( WORD ) iRDEType );
|
||||
}
|
||||
|
||||
hb_retni( iOpenedArea );
|
||||
|
||||
if( iOpenedArea > 0 )
|
||||
_sx_SetDBFInfo( iOpenedArea, szAlias, iOpenMode, iRDEType );
|
||||
|
||||
if( bIsAlloc )
|
||||
hb_xfree( szAlias );
|
||||
}
|
||||
else
|
||||
hb_errRT_BASE( EG_OPEN, 2020, NULL, "SX_USE", 1, hb_paramError( 1 ) );
|
||||
}
|
||||
else
|
||||
hb_errRT_BASE( EG_ARG, 2020, NULL, "SX_USE", 1, hb_paramError( 1 ) );
|
||||
}
|
||||
|
||||
HB_FUNC( SX_DBINFO )
|
||||
{
|
||||
if( Opened_DBF_Property )
|
||||
{
|
||||
if( HB_ISCHAR( 1 ) || HB_ISNUM( 1 ) )
|
||||
{
|
||||
PHB_ITEM aSingleInfo = hb_itemNew( NULL );
|
||||
char * szAlias = HB_ISCHAR( 1 ) ? ( char * ) hb_parc( 1 ) : ( char * ) sx_Alias( ( WORD ) hb_parni( 1 ) );
|
||||
HB_ISIZ iLen = strlen( szAlias ) + 1;
|
||||
|
||||
hb_arrayNew( aSingleInfo, 0 );
|
||||
|
||||
/* printf("Here....?\n"); */
|
||||
if( iLen > 1 )
|
||||
{
|
||||
HB_USHORT ui;
|
||||
char * szTmp = ( char * ) hb_xgrab( iLen );
|
||||
|
||||
hb_snprintf( szTmp, iLen, "%s", szAlias );
|
||||
szTmp = _sx_upper( szTmp );
|
||||
|
||||
for( ui = 0; ui < (HB_USHORT) hb_arrayLen( Opened_DBF_Property );
|
||||
ui++ )
|
||||
{
|
||||
HB_BOOL bFound = HB_FALSE;
|
||||
PHB_ITEM pInfo = hb_arrayGetItemPtr( Opened_DBF_Property, ui + 1 );
|
||||
const char * cAliasInfo = hb_arrayGetCPtr( pInfo, 3 );
|
||||
|
||||
if( cAliasInfo )
|
||||
{
|
||||
if( strcmp( szTmp, cAliasInfo ) == 0 )
|
||||
{
|
||||
hb_arrayAdd( aSingleInfo, pInfo );
|
||||
bFound = HB_TRUE;
|
||||
}
|
||||
|
||||
if( bFound )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
hb_xfree( szTmp );
|
||||
}
|
||||
|
||||
hb_itemReturnRelease( aSingleInfo );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( HB_ISLOG( 2 ) && hb_parl( 2 ) )
|
||||
{
|
||||
/* Complete Info With Description */
|
||||
ULONG i;
|
||||
PHB_ITEM pInfo = NULL;
|
||||
|
||||
hb_arrayCloneTo( pInfo, Opened_DBF_Property );
|
||||
|
||||
for( i = 0; i < hb_arrayLen( pInfo ); i++ )
|
||||
{
|
||||
PHB_ITEM aDesc = hb_arrayGetItemPtr( pInfo, i + 1 );
|
||||
ULONG j;
|
||||
HB_BOOL bNotArray = HB_FALSE;
|
||||
|
||||
for( j = 0; j < hb_arrayLen( aDesc ); j++ )
|
||||
{
|
||||
PHB_ITEM pData = hb_itemNew( NULL );
|
||||
char * szDesc = ( char * ) hb_xgrab( 256 );
|
||||
|
||||
if( hb_arrayGetType( aDesc, j + 1 ) & HB_IT_STRING )
|
||||
{
|
||||
char * szStr = hb_arrayGetC( aDesc, j + 1 );
|
||||
hb_snprintf( szDesc, 255, "%s=%s", s_aDescription[ j ], szStr );
|
||||
hb_xfree( szStr );
|
||||
}
|
||||
else if( hb_arrayGetType( aDesc, j + 1 ) & HB_IT_NUMERIC )
|
||||
hb_snprintf( szDesc, 255, "%s=%i", s_aDescription[ j ],
|
||||
hb_arrayGetNI( aDesc, j + 1 ) );
|
||||
else if( hb_arrayGetType( aDesc, j + 1 ) & HB_IT_LOGICAL )
|
||||
hb_snprintf( szDesc, 255, "%s=%s", s_aDescription[ j ],
|
||||
hb_arrayGetL( aDesc, j + 1 ) ? ".T." : ".F." );
|
||||
else if( hb_arrayGetType( aDesc, j + 1 ) & HB_IT_ARRAY )
|
||||
{
|
||||
PHB_ITEM aField = hb_arrayGetItemPtr( aDesc, j + 1 );
|
||||
ULONG u;
|
||||
|
||||
bNotArray = HB_TRUE;
|
||||
|
||||
for( u = 0; u < hb_arrayLen( aField ); u++ )
|
||||
{
|
||||
PHB_ITEM _pF = hb_arrayGetItemPtr( aField, u + 1 );
|
||||
char * szField = ( char * ) hb_xgrab( 256 );
|
||||
char * FName = hb_arrayGetC( _pF, 1 );
|
||||
char * FType = hb_arrayGetC( _pF, 2 );
|
||||
int FSize = ( int ) hb_arrayGetNI( _pF, 3 );
|
||||
int FDec = ( int ) hb_arrayGetNI( _pF, 4 );
|
||||
PHB_ITEM pField = hb_itemNew( NULL );
|
||||
|
||||
hb_snprintf( szField, 255, "{\"%s\", \"%s\", %i, %i}",
|
||||
FName, FType, FSize, FDec );
|
||||
hb_arraySet( aField, u + 1, hb_itemPutC( pField, szField ) );
|
||||
hb_xfree( szField );
|
||||
hb_xfree( FName );
|
||||
hb_xfree( FType );
|
||||
hb_itemRelease( pField );
|
||||
}
|
||||
} /* hb_arrayGetType( aDesc, j + 1 ) & HB_IT_ARRAY */
|
||||
|
||||
if( ! bNotArray )
|
||||
hb_arraySet( aDesc, j + 1, hb_itemPutC( pData, szDesc ) );
|
||||
|
||||
hb_xfree( szDesc );
|
||||
hb_itemRelease( pData );
|
||||
} /* for( j = 0; j < hb_arrayLen( aDesc ); j++ ) */
|
||||
} /* for( i = 0; i< hb_arrayLen( pInfo ); i++ ) */
|
||||
|
||||
hb_itemReturnRelease( pInfo );
|
||||
} /* ( HB_ISLOG( 2 ) && hb_parl( 2 ) ) */
|
||||
else
|
||||
{
|
||||
hb_itemReturn( Opened_DBF_Property );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HB_BOOL _sx_Used( void )
|
||||
{
|
||||
return Opened_DBF_Property ? hb_arrayLen( Opened_DBF_Property ) > 0 : HB_FALSE;
|
||||
}
|
||||
|
||||
HB_FUNC( SX_USED )
|
||||
{
|
||||
hb_retl( Opened_DBF_Property ? hb_arrayLen( Opened_DBF_Property ) > 0 : HB_FALSE );
|
||||
}
|
||||
|
||||
int _sx_CheckOpenMode( const char * sSetDefault )
|
||||
{
|
||||
const char * sxOpenMode[] = { "READWRITE", "READONLY", "EXCLUSIVE" };
|
||||
int ui;
|
||||
int iOpenMode = READWRITE;
|
||||
|
||||
for( ui = 0; ui < 3; ui++ )
|
||||
{
|
||||
if( strcmp( sxOpenMode[ ui ], sSetDefault ) == 0 )
|
||||
{
|
||||
iOpenMode = ui;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return iOpenMode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user