Comment gérer les DataBase
Comment gérer les DataBase
Salut à tous!
J'ai PureBasic 4.00 et j'essaie de gérer des bases de données déjà existantes (.dbf créées avec je ne sais quel logiciel) mais PB ne veut pas les ouvrir, pourquoi?
J'ai lu les quelques réponses déjà fournies sur ce forum mais ça ne m'a pas avancé!
J'ai aussi vu que certains d'entre vous étaient super calés alors je ne désespére pas!
Merci d'avance à ceux qui me répondrons!
J'ai PureBasic 4.00 et j'essaie de gérer des bases de données déjà existantes (.dbf créées avec je ne sais quel logiciel) mais PB ne veut pas les ouvrir, pourquoi?
J'ai lu les quelques réponses déjà fournies sur ce forum mais ça ne m'a pas avancé!
J'ai aussi vu que certains d'entre vous étaient super calés alors je ne désespére pas!
Merci d'avance à ceux qui me répondrons!
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Bonjour RV
Moi, je ne suis pas calé, loin de la, mais je peux juste te dire que les ".DBF" sont des bases de donnéees, importable dans EXCEL de mr crosoft et non pas ACCESS comme je l'ai dit precedement (Gnozal a raison)
Tu le trouvera dans la suite bureautique hors de prix d'OFFICE.
Il existe peut etre maintenant d'autres logiciels à part lui qui soit capable de les lire, mais peut etre que quelqu'un pourra t'en dire plus ou bien te donner une combine pour ouvrir un DBF avec PURE, moi je t'ai dit le peu que je savais.
Bonne journée
Moi, je ne suis pas calé, loin de la, mais je peux juste te dire que les ".DBF" sont des bases de donnéees, importable dans EXCEL de mr crosoft et non pas ACCESS comme je l'ai dit precedement (Gnozal a raison)
Tu le trouvera dans la suite bureautique hors de prix d'OFFICE.
Il existe peut etre maintenant d'autres logiciels à part lui qui soit capable de les lire, mais peut etre que quelqu'un pourra t'en dire plus ou bien te donner une combine pour ouvrir un DBF avec PURE, moi je t'ai dit le peu que je savais.

Bonne journée
Dernière modification par Kwai chang caine le sam. 18/nov./2006 18:50, modifié 3 fois.
Sauf erreur, .dbf signe en général un fichier compatible DBASE (dBase, Paradox, etc...)
L'extension utilisée par Access est .mdb.
Une possibilité pour utiliser des dbf sous Purebasic, c'est la DLL Cheetah (maintenant freeware), disponible ici : http://www.planetsquires.com/cheetah.htm (il y a même des examples de code PB [= 'wrappers'] à télécharger).
Une autre possibilité, c'est de passer par ODBC (librairie database de PB).
L'extension utilisée par Access est .mdb.
Une possibilité pour utiliser des dbf sous Purebasic, c'est la DLL Cheetah (maintenant freeware), disponible ici : http://www.planetsquires.com/cheetah.htm (il y a même des examples de code PB [= 'wrappers'] à télécharger).
Une autre possibilité, c'est de passer par ODBC (librairie database de PB).
Justement j'ai Miscosoft Access et même avec je n'arrive pas à ouvrir la DataBase.
A l'ouverture il m'indique :
"Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet 'trucbidule.DBF'. Assurez-vous que l'objet existe et que vous avez correctement saisi son nom et son chemin d'accès."
Bien-sur que le nom et le chemin sont corrects puisque je vais directement cliquer sur le fichier dans son répertoire.
Merci quand même Kwai chang caine, en espérant tout de même qu'un caïd de la programmation me vienne en aide.
A l'ouverture il m'indique :
"Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet 'trucbidule.DBF'. Assurez-vous que l'objet existe et que vous avez correctement saisi son nom et son chemin d'accès."
Bien-sur que le nom et le chemin sont corrects puisque je vais directement cliquer sur le fichier dans son répertoire.
Merci quand même Kwai chang caine, en espérant tout de même qu'un caïd de la programmation me vienne en aide.
Salut gnozal!
J'ai téléchargé et installé Cheetah comme tu me l'as indiqué mais le problème est qu'il plante dans une de ses procédures!
J'ai eu beau chercher pourquoi il plantait mais j'ai pas trouvé.
Tu me disais aussi de passer par l'ODBC de PureBasic mais si c'est en passant par OpenDataBase(), PB ne veut rien savoir!
Au secours, à l'aide!!!
J'ai téléchargé et installé Cheetah comme tu me l'as indiqué mais le problème est qu'il plante dans une de ses procédures!
J'ai eu beau chercher pourquoi il plantait mais j'ai pas trouvé.
Tu me disais aussi de passer par l'ODBC de PureBasic mais si c'est en passant par OpenDataBase(), PB ne veut rien savoir!
Au secours, à l'aide!!!
Je n'utilise pas Cheetah moi-même, je n'ai donc aucune expérience.
J'ai trouvé ce code sur le forum anglais (écrit par Stefan Schnell)
Cheetah2.pbi
Exemple.pb
A propos d'ODBC, avant d'utiliser les fonctions PB, il faut créer une connexion ODBC (outil ODBC dans le panneau de configuration de Windows ou création 'en temps réel' avec PB [il ya des exemples sur le forum]).
Et ensuite ouvrir la base de données avec OpenDatabase(#Database, ODBCDatabaseName$, User$, Password$) où ODBCDatabaseName$ doit correspondre aux infos ODBC créées auparavant (sans oublier InitDatabase()).
J'ai trouvé ce code sur le forum anglais (écrit par Stefan Schnell)
Cheetah2.pbi
Code : Tout sélectionner
;-Begin-----------------------------------------------------------------
;-Global variables----------------------------------------------------
Global xdbhDLL.l
;-Cheetah database constants------------------------------------------
Enumeration
#XDBTRUE = 1
#XDBFALSE = 0
#MAX_INDEXES = 100
#MAX_FIELDS = 1000
#MAX_CONDITIONS = 50
#MAX_INDEXKEYS = 6
#MAX_CHARFIELD_SIZE = 256
#MAX_NUMFIELD_SIZE = 20
#ENCRYPT_NONE = 0
#ENCRYPT_RC4 = 1
#ENCRYPT_KEYEDXOR = 2
#ENCRYPT_SUPERSCRAMBLE = 3
#QUERY_AND = 1
#QUERY_OR = 2
#EQUAL_TO = 1
#NOT_EQUAL_TO = 2
#LESS_THAN = 3
#GREATER_THAN = 4
#LESS_THAN_EQUAL_TO = 5
#GREATER_THAN_EQUAL_TO = 6
#CONTAINS = 7
#BETWEEN = 8
#SUM = 9
#MINIMUM = 10
#MAXIMUM = 11
#AVERAGE = 12
#WILDCARD = 13
#SORT_ASCEND = 1
#SORT_DESCEND = 0
#XDBREADONLY = 0
#XDBWRITEONLY = 1
#XDBREADWRITE = 2
#XDBDENYREADWRITE = 1
#XDBDENYWRITE = 2
#XDBDENYREAD = 3
#XDBDENYNONE = 4
#XDBUNIQUE_CONTINUE = 0
#XDBUNIQUE_ERROR = 1
#FILE_ACCESS_ERROR = 4000
#INVALID_DATE_FORMAT = 4001
#FILE_READ_ONLY = 4002
#FILE_WRITE_ONLY = 4003
#INVALID_FILENAME = 4004
#ENGINE_NOT_INITIALIZED = 5000
#FILE_NOT_FOUND = 5001
#TOO_MANY_FILES_OPEN = 5002
#INVALID_STRUCTURE = 5003
#FILE_NOT_OPEN = 5004
#RECORD_OUT_OF_RANGE = 5005
#FIELD_NOT_FOUND = 5006
#INVALID_FILE_HANDLE = 5007
#INVALID_FIELD_LENGTH = 5008
#DUPLICATE_ALIAS_NAME = 5009
#INVALID_ACCESSMODE = 5010
#INVALID_SHAREMODE = 5011
#RECORD_BUSY = 5012
#INCOMPATIBLE_MEMO_FIELDS = 5013
#RECORDSIZE_EXCEEDED = 5014
#INVALID_ENCRYPTIONKEY = 5015
#DATABASE_NOT_OPEN = 7000
#TOO_MANY_INDEXES_OPEN = 7002
#INVALID_KEY_EXPRESSION = 7003
#INDEX_NOT_OPEN = 7004
#INDEX_UNIQUE_KEYS_ONLY = 7005
#SEEK_NO_INDEX_SET = 7006
#INDEX_NOT_FOUND = 7007
#QUERY_NOT_GENERATED = 9000
#QUERY_INVALID_FIELDNAME = 9001
#QUERY_INVALID_COMPARISON = 9002
#QUERY_MISSING_DELIMITERS = 9003
#QUERY_MISSING_SEARCHSTRING = 9004
#QUERY_TOO_MANY_EXPRESSIONS = 9005
#QUERY_EXPECTED_NUMERIC_STRING = 9006
#QUERY_ERROR_GETRECORD = 9007
#QUERY_INVALID_HANDLE = 9008
#QUERY_INVALID_JOINPHRASE = 9009
#QUERY_NO_WILDCARD_FOUND = 9010
#QUERY_INVALID_PARENTHESIS = 9011
#DLL_EXPIRED = 99999
EndEnumeration
;-Cheetah database functions------------------------------------------
;-------------------------------------------------------------------
Procedure.s xdbCToD(BASICdate.s)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "CTOD_Z", @BASICdate))
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbDToS(CheetahDate.s)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "DTOS_Z", @CheetahDate))
EndProcedure
;-------------------------------------------------------------------
Procedure xdbActivate(RegNumber.l)
CallFunction(xdbhDLL, "XDBACTIVATE_Z", RegNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbAddDate(StartDate.s, NumDays.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBADDATE_Z", @StartDate, NumDays))
EndProcedure
;-------------------------------------------------------------------
Procedure xdbAddField(FieldInfo.s)
CallFunction(xdbhDLL, "XDBADDFIELD_Z", @FieldInfo)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbAddRecord(DBFhandle.l)
CallFunction(xdbhDLL, "XDBADDRECORD_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbAlias(DBFhandle.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBALIAS_Z", DBFhandle))
EndProcedure
;-------------------------------------------------------------------
Procedure xdbAppendRecord(DBFhandle.l)
CallFunction(xdbhDLL, "XDBAPPENDRECORD_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbAppPath()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBAPPPATH_Z"))
EndProcedure
;-------------------------------------------------------------------
Procedure xdbAssignField(DBFhandle.l, FieldName.s, FieldNumber.l, FieldString.s)
CallFunction(xdbhDLL, "XDBASSIGNFIELD_Z", DBFhandle, @FieldName, FieldNumber, @FieldString)
EndProcedure
;-Currency: 8byte float---------------------------------------------
;-
;- This function does not work with PureBASIC, because PureBASIC
;- supports only 4byte floating point
;-
;-------------------------------------------------------------------
;Procedure xdbAssignFieldCUR(DBFhandle.l, FieldName.s, FieldNumber.l, CurrencyValue.f)
; CallFunction(xdbhDLL, "XDBASSIGNFIELDCUR_Z", DBFhandle, @FieldName, FieldNumber, @CurrencyValue)
;EndProcedure
;-Double: 8byte float-----------------------------------------------
;-
;- This function does not work with PureBASIC, because PureBASIC
;- supports only 4byte floating point
;-
;-------------------------------------------------------------------
;Procedure xdbAssignFieldDBL(DBFhandle.l, FieldName.s, FieldNumber.l, DoubleValue.f)
; CallFunction(xdbhDLL, "XDBASSIGNFIELDDBL_Z", DBFhandle, @FieldName, FieldNumber, @DoubleValue)
;EndProcedure
;-Integer: From -32768 to +32767------------------------------------
Procedure xdbAssignFieldINT(DBFhandle.l, FieldName.s, FieldNumber.l, IntValue.w)
CallFunction(xdbhDLL, "XDBASSIGNFIELDINT_Z", DBFhandle, @FieldName, FieldNumber, IntValue)
EndProcedure
;-Long: From -2147483648 to +2147483647-----------------------------
Procedure xdbAssignFieldLNG(DBFhandle.l, FieldName.s, FieldNumber.l, LongValue.l)
CallFunction(xdbhDLL, "XDBASSIGNFIELDLNG_Z", DBFhandle, @FieldName, FieldNumber, LongValue)
EndProcedure
;-Single: 4byte float-----------------------------------------------
Procedure xdbAssignFieldSNG(DBFhandle.l, FieldName.s, FieldNumber.l, SingleValue.f)
CallFunction(xdbhDLL, "XDBASSIGNFIELDSNG_Z", DBFhandle, @FieldName, FieldNumber, @SingleValue)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbAssignMemo(DBFhandle.l, FieldName.s, FieldNumber.l, MemAddress.l, StringLength.l)
CallFunction(xdbhDLL, "XDBASSIGNMEMO_Z", DBFhandle, @FieldName, FieldNumber, MemAddress, StringLength)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbBOF(DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBBOF_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbClearBuffer(DBFhandle.l)
CallFunction(xdbhDLL, "XDBCLEARBUFFER_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbClose(DBFhandle.l)
CallFunction(xdbhDLL, "XDBCLOSE_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbCloseAllIndexes(DBFhandle.l)
CallFunction(xdbhDLL, "XDBCLOSEALLINDEXES_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbCloseIndex(DBFhandle.l, idxHandle.l)
CallFunction(xdbhDLL, "XDBCLOSEINDEX_Z", DBFhandle, idxHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbCreate(FileName.s, FieldArray.s)
CallFunction(xdbhDLL, "XDBCREATE_Z", @FileName, @FieldArray)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbCreateExtended(FileName.s, FieldArray.s, MemoBlockSize.l, Algorithm.l, EncryptionKey.s)
CallFunction(xdbhDLL, "XDBCREATEEXTENDED_Z", @FileName, @FieldArray, MemoBlockSize, Algorithm, @EncryptionKey)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbCreateFields(DBFname.s)
CallFunction(xdbhDLL, "XDBCREATEFIELDS_Z", @DBFname)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbCreateFieldsExtended(FileName.s, MemoBlockSize.l, Algorithm.l, EncryptionKey.s)
CallFunction(xdbhDLL, "XDBCREATEFIELDSEXTENDED_Z", @FileName, MemoBlockSize, Algorithm, @EncryptionKey)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbCreateIndex(IndexFileName.s, DBFhandle.l, IndexExpression.s, Duplicates.l)
CallFunction(xdbhDLL, "XDBCREATEINDEX_Z", @IndexFileName, DBFhandle, @IndexExpression, Duplicates)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbCreateQuery(DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBCREATEQUERY_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbDatabaseHandles(DBFileName.s, CheetahHandle.l, WindowsHandle.l)
CallFunction(xdbhDLL, "XDBDATABASEHANDLES_Z", @DBFileName, CheetahHandle, WindowsHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbDateToJulian(DateString.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBDATETOJULIAN_Z", @DateString)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbDaysApart(DateFrom.s, DateTo.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBDAYSAPART_Z", @DateFrom, @DateTo)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbDaysInMonth(Year.l, Month.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBDAYSINMONTH_Z", Year, Month)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbDebugMode(TrueFalse.l)
CallFunction(xdbhDLL, "XDBDEBUGMODE_Z", TrueFalse)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbDeleted(DBFhandle.l, RecordNumber.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBDELETED_Z", DBFhandle, RecordNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbDeleteRecord(DBFhandle.l, RecordNumber.l)
CallFunction(xdbhDLL, "XDBDELETERECORD_Z", DBFhandle, RecordNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbDestroyQuery(QueryHandle.l)
CallFunction(xdbhDLL, "XDBDESTROYQUERY_Z", QueryHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbEncryptionMethod(DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBENCRYPTIONMETHOD_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbEOF(DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBEOF_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbError()
ProcedureReturn CallFunction(xdbhDLL, "XDBERROR_Z")
EndProcedure
;-------------------------------------------------------------------
Procedure xdbFailedLockInfo(DBFhandle.l, Reason.s, Username.s, Workstation.s, LockDate.s, LockTime.s)
CallFunction(xdbhDLL, "XDBFAILEDLOCKINFO_Z", DBFhandle, @Reason, @Username, @Workstation, @LockDate, @LockTime)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbFieldCount(DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBFIELDCOUNT_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbFieldDecimals(DBFhandle.l, FieldNumber.l, FieldName.s, FieldType.s, FieldLength.l, FieldDecimals.l)
CallFunction(xdbhDLL, "XDBFIELDDECIMALS_Z", DBFhandle, FieldNumber, @FieldName, @FieldType, FieldLength, FieldDecimals)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbFieldInfo(DBFhandle.l, FieldNumber.l, FieldName.s, FieldType.s, FieldLength.l, FieldDecimals.l)
CallFunction(xdbhDLL, "XDBFIELDINFO_Z", DBFhandle, FieldNumber, @FieldName, @FieldType, FieldLength, FieldDecimals)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbFieldLength(DBFhandle.l, FieldNumber.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBFIELDLENGTH_Z", DBFhandle, FieldNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbFieldName(DBFhandle.l, FieldNumber.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBFIELDNAME_Z", DBFhandle, FieldNumber))
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbFieldNumber(DBFhandle.l, FieldName.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBFIELDNUMBER_Z", DBFhandle, @FieldName)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbFieldPadding(DBFhandle.l, TrueFalse.l)
CallFunction(xdbhDLL, "XDBFIELDPADDING_Z", DBFhandle, TrueFalse)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbFieldType(DBFhandle.l, FieldNumber.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBFIELDTYPE_Z", DBFhandle, FieldNumber))
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbFieldValue(DBFhandle.l, FieldName.s, FieldNumber.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBFIELDVALUE_Z", DBFhandle, @FieldName, FieldNumber))
EndProcedure
;-Currency: 8byte float---------------------------------------------
;-
;- This function does not work with PureBASIC, because PureBASIC
;- supports only 4byte floating point
;-
;-------------------------------------------------------------------
;Procedure.f xdbFieldValueCUR(DBFhandle.l, FieldName.s, FieldNumber.l)
; ProcedureReturn CallFunction(xdbhDLL, "XDBFIELDVALUECUR_Z", DBFhandle, @FieldName, FieldNumber)
;EndProcedure
;-Double: 8byte float-----------------------------------------------
;-
;- This function does not work with PureBASIC, because PureBASIC
;- supports only 4byte floating point
;-
;-------------------------------------------------------------------
;Procedure.f xdbFieldValueDBL(DBFhandle.l, FieldName.s, FieldNumber.l)
; ProcedureReturn CallFunction(xdbhDLL, "XDBFIELDVALUEDBL_Z", DBFhandle, @FieldName, FieldNumber)
;EndProcedure
;-Integer: From -32768 to +32767------------------------------------
Procedure.w xdbFieldValueINT(DBFhandle.l, FieldName.s, FieldNumber.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBFIELDVALUEINT_Z", DBFhandle, @FieldName, FieldNumber)
EndProcedure
;-Long: From -2147483648 to +2147483647-----------------------------
Procedure.l xdbFieldValueLNG(DBFhandle.l, FieldName.s, FieldNumber.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBFIELDVALUELNG_Z", DBFhandle, @FieldName, FieldNumber)
EndProcedure
;-Single: 4byte float-----------------------------------------------
Procedure.f xdbFieldValueSNG(DBFhandle.l, FieldName.s, FieldNumber.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBFIELDVALUESNG_Z", DBFhandle, @FieldName, FieldNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbFlushDatabase(DBFhandle.l)
CallFunction(xdbhDLL, "XDBFLUSHDATABASE_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbGetRecord(DBFhandle.l, RecordNumber.l)
CallFunction(xdbhDLL, "XDBGETRECORD_Z", DBFhandle, RecordNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbHtmlStripTag(QueryHandle.l, TrueFalse.l)
CallFunction(xdbhDLL, "XDBHTMLSTRIPTAG_Z", QueryHandle, TrueFalse)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbIndexHandles(IndexFileName.s, CheetahHandle.l, WindowsHandle.l)
CallFunction(xdbhDLL, "XDBINDEXHANDLES_Z", @IndexFileName, CheetahHandle, WindowsHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbIsEditLock(DBFhandle.l, RecordNumber.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBISEDITLOCK_Z", DBFhandle, RecordNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbIsEncrypted(DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBISENCRYPTED_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbJulianToDate(JulianNumber.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBJULIANTODATE_Z", JulianNumber))
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbKeyCount(DBFhandle.l, idxHandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBKEYCOUNT_Z", DBFhandle, idxHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbKeyExpression(DBFhandle.l, idxHandle.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBKEYEXPRESSION_Z", DBFhandle, idxHandle))
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbKeyLength(DBFhandle.l, idxHandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBKEYLENGTH_Z", DBFhandle, idxHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbKeyPosition(idxHandle.l, KeyPosition.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBKEYPOSITION_Z", idxHandle, KeyPosition)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbKeyUnique(DBFhandle.l, idxHandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBKEYUNIQUE_Z", DBFhandle, idxHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbLastUpdated(DBFhandle.l, YearNr.l, MonthNr.l, DayNr.l)
CallFunction(xdbhDLL, "XDBLASTUPDATED_Z", YearNr, MonthNr, DayNr)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbMemoValueAddr(DBFhandle.l, FieldName.s, FieldCode.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBMEMOVALUEADDR_Z", DBFhandle, @FieldName, FieldCode)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbMemoValueLen(DBFhandle.l, FieldName.s, FieldCode.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBMEMOVALUELEN_Z", DBFhandle, @FieldName, FieldCode)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbMKI(IntValue.w)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBMKI_Z", IntValue))
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbMKL(LongValue.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBMKL_Z", LongValue))
EndProcedure
;-------------------------------------------------------------------
Procedure xdbMoveFirst(DBFhandle.l, idxHandle.l)
CallFunction(xdbhDLL, "XDBMOVEFIRST_Z", DBFhandle, idxHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbMoveLast(DBFhandle.l, idxHandle.l)
CallFunction(xdbhDLL, "XDBMOVELAST_Z", DBFhandle, idxHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbMoveNext(DBFhandle.l, idxHandle.l)
CallFunction(xdbhDLL, "XDBMOVENEXT_Z", DBFhandle, idxHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbMovePrev(DBFhandle.l, idxHandle.l)
CallFunction(xdbhDLL, "XDBMOVEPREV_Z", DBFhandle, idxHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbMultiUser(TrueFalse.l, NumRetries.l, WaitTimes.l)
CallFunction(xdbhDLL, "XDBMULTIUSER_Z", TrueFalse, NumRetries, WaitTimes)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbNameOfDay(DateCheck.s)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBNAMEOFDAY_Z", @DateCheck))
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbOpen(FileName.s, EncryptionKey.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBOPEN_Z", @FileName, @EncryptionKey)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbOpenEx(FileName.s, AccessMode.l, ShareMode.l, EncryptionKey.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBOPENEX_Z", @FileName, AccessMode, ShareMode, @EncryptionKey)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbOpenIndex(IndexFilename.s, DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBOPENINDEX_Z", @IndexFilename, DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbPack(DBFhandle.l)
CallFunction(xdbhDLL, "XDBPACK_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbPutRecord(DBFhandle.l, RecordNumber.l)
CallFunction(xdbhDLL, "XDBPUTRECORD_Z", DBFhandle, @RecordNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbQueryAVG(QueryHandle.l, FieldName.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBQUERYAVG_Z", QueryHandle, @FieldName)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbQueryCondition(QueryHandle.l, JoinPhrases.l, FieldName.s, Equality.l, vParameter1.s, vParameter2.s)
CallFunction(xdbhDLL, "XDBQUERYCONDITION_Z", QueryHandle, JoinPhrases, @FieldName, Equality, @vParameter1, @vParameter2)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbQueryDistinct(QueryHandle.l, FieldName.s)
CallFunction(xdbhDLL, "XDBQUERYDISTINCT_Z", QueryHandle, @FieldName)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbQueryExecute(QueryHandle.l)
CallFunction(xdbhDLL, "XDBQUERYEXECUTE_Z", QueryHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbQueryIndex(QueryHandle.l)
CallFunction(xdbhDLL, "XDBQUERYINDEX_Z", QueryHandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbQueryMAX(QueryHandle.l, FieldName.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBQUERYMAX_Z", QueryHandle, @FieldName)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbQueryMIN(QueryHandle.l, FieldName.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBQUERYMIN_Z", QueryHandle, @FieldName)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbQuerySort(QueryHandle.l, FieldName.s, SortDirection.l)
CallFunction(xdbhDLL, "XDBQUERYSORT_Z", QueryHandle, @FieldName, SortDirection)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbQuerySUM(QueryHandle.l, FieldName.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBQUERYSUM_Z", QueryHandle, @FieldName)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbRecallRecord(DBFhandle.l, RecordNumber.l)
CallFunction(xdbhDLL, "XDBRECALLRECORD_Z", DBFhandle, RecordNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbRecordBuffer(DBFhandle.l)
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBRECORDBUFFER_Z", DBFhandle))
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbRecordCount(DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBRECORDCOUNT_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbRecordNumber(DBFhandle.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBRECORDNUMBER_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbRegisteredTo()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBREGISTEREDTO_Z"))
EndProcedure
;-------------------------------------------------------------------
Procedure xdbReindex(DBFhandle.l, idxHandle.l, UniqueContinueOrError.l)
CallFunction(xdbhDLL, "XDBREINDEX_Z", DBFhandle, idxHandle, UniqueContinueOrError)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbReindexAll(DBFhandle.l, UniqueContinueOrError.l)
CallFunction(xdbhDLL, "XDBREINDEXALL_Z", DBFhandle, UniqueContinueOrError)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbRemoveEditLock(DBFhandle.l, Lock_Num.l)
CallFunction(xdbhDLL, "XDBREMOVEEDITLOCK_Z", DBFhandle, Lock_Num)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbRemoveExclusiveLock(DBFhandle.l, Lock_Num.l)
CallFunction(xdbhDLL, "XDBREMOVEEXCLUSIVELOCK_Z", DBFhandle, Lock_Num)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbResetError()
CallFunction(xdbhDLL, "XDBRESETERROR_Z")
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbSeek(DBFhandle.l, idxHandle.l, KeyToLookFor.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBSEEK_Z", DBFhandle, idxHandle, @KeyToLookFor)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbSeekNext(DBFhandle.l, idxHandle.l, KeyToLookFor.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBSEEKNEXT_Z", DBFhandle, idxHandle, @KeyToLookFor)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbSeekPartial(DBFhandle.l, idxHandle.l, PartialKeyToLookFor.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBSEEKPARTIAL_Z", DBFhandle, idxHandle, @PartialKeyToLookFor)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbSeekPartialNext(DBFhandle.l, idxHandle.l, PartialKeyToLookFor.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBSEEKPARTIALNEXT_Z", DBFhandle, idxHandle, @PartialKeyToLookFor)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbSetAlias(DBFhandle.l, NewAliasName.s)
CallFunction(xdbhDLL, "XDBSETALIAS_Z", DBFhandle, @NewAliasName)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbSetCallBack(hWnd.l)
CallFunction(xdbhDLL, "XDBSETCALLBACK_Z", hWnd)
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbSetEditLock(DBFhandle.l, RecordNumber.l)
ProcedureReturn CallFunction(xdbhDLL, "XDBSETEDITLOCK_Z", DBFhandle, RecordNumber)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbSetExclusiveLock(DBFhandle.l)
CallFunction(xdbhDLL, "XDBSETEXCLUSIVELOCK_Z", DBFhandle)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbSkipDeleted(DBFhandle.l, OnOff.l)
CallFunction(xdbhDLL, "XDBSKIPDELETED_Z", DBFhandle, OnOff)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbSpeedAppend(DBFhandle.l, OnOff.l)
CallFunction(xdbhDLL, "XDBSPEEDAPPEND_Z", DBFhandle, OnOff)
EndProcedure
;-------------------------------------------------------------------
Procedure xdbTempFileName()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBTEMPFILENAME_Z"))
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbTodaysDate()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBTODAYSDATE_Z"))
EndProcedure
;-------------------------------------------------------------------
Procedure.l xdbValidDate(DateCheck.s)
ProcedureReturn CallFunction(xdbhDLL, "XDBVALIDDATE_Z", @DateCheck)
EndProcedure
;-------------------------------------------------------------------
Procedure.s xdbVersion()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBVERSION_Z"))
EndProcedure
;-------------------------------------------------------------------
Procedure xdbZap(DBFhandle.l)
CallFunction(xdbhDLL, "XDBZAP_Z", DBFhandle)
EndProcedure
;-Procedure xdbUseDLL-------------------------------------------------
;-
;- Procedure to load CHEETAH2.DLL permanently
;-
;---------------------------------------------------------------------
Procedure xdbUseDLL()
xdbhDLL = OpenLibrary(#PB_ANY, "CHEETAH2.DLL")
EndProcedure
;-Procedure xdbFreeDLL------------------------------------------------
;-
;- Procedure to unload CHEETAH2.DLL after xdbUseDLL
;-
;---------------------------------------------------------------------
Procedure xdbFreeDLL()
CloseLibrary(xdbhDLL)
EndProcedure
;-End-------------------------------------------------------------------
Code : Tout sélectionner
;-Begin-----------------------------------------------------------------
IncludeFile "Cheetah2.pbi"
;-Occupy resources----------------------------------------------------
xdbUseDLL()
;-FileName------------------------------------------------------------
FileName.s = "Example1.dbf"
;-Create database-----------------------------------------------------
xdbCreate(FileName, "ID,N,9,0;NAME,C,50,0;VORNAME,C,50,0")
;-Open database-------------------------------------------------------
hdb.l = xdbOpen(FileName, "")
;-Add an index--------------------------------------------------------
xdbCreateIndex("Name.idx", hdb, "NAME + VORNAME", #XDBTRUE)
;-Open the index------------------------------------------------------
hidx.l = xdbOpenIndex("Name.idx", hdb)
;-Add 20 records with a name------------------------------------------
For i = 1 To 20
xdbClearBuffer(hdb)
Loop.s = Str(i)
xdbAssignField(hdb, "ID", 0, Loop)
xdbAssignField(hdb, "NAME", 0, "Mustermann")
xdbAssignField(hdb, "VORNAME", 0, "Max")
xdbAppendRecord(hdb)
Next
;-Change record 6 to 10 to another name-------------------------------
For i = 6 To 10
xdbClearBuffer(hdb)
xdbGetRecord(hdb, i)
xdbAssignField(hdb, "NAME", 0, "Musterfrau")
xdbAssignField(hdb, "VORNAME", 0, "Susan")
xdbPutRecord(hdb, i)
Next
;-Delete records 4 To 7-----------------------------------------------
For i = 4 To 7
xdbDeleteRecord(hdb, i)
Next
xdbPack(hdb)
;-Read records 1 To 10 And print--------------------------------------
OpenConsole()
For i = 1 To 10
xdbClearBuffer(hdb)
xdbGetRecord(hdb, i)
PrintN("ID: " + xdbFieldValue(hdb, "ID", 0))
PrintN("Name: " + xdbFieldValue(hdb, "NAME", 0))
PrintN("Vorname: " + xdbFieldValue(hdb, "VORNAME", 0))
Next
PrintN("")
PrintN("Press any key to exit...")
Input()
CloseConsole()
;-Close index---------------------------------------------------------
xdbCloseIndex(hdb, hidx)
;-Close database------------------------------------------------------
xdbClose(hdb)
;-Free resources------------------------------------------------------
xdbFreeDLL()
;-End-------------------------------------------------------------------
End
Et ensuite ouvrir la base de données avec OpenDatabase(#Database, ODBCDatabaseName$, User$, Password$) où ODBCDatabaseName$ doit correspondre aux infos ODBC créées auparavant (sans oublier InitDatabase()).
Tu es sympa de t'occuper de mon cas, vraiment sympa!
C'est ce fameux fichier ou la procédure ci-dessous plante.
Procedure xdbTempFileName()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBTEMPFILENAME_Z"))
EndProcedure
Message d'erreur : 'ProcedureReturn' expects a numerical value, not a string.
J'ai cherché en vain pourquoi la procédure retournée un texte et pas une valeur, mais j'ai pas trouvé!
C'est ce fameux fichier ou la procédure ci-dessous plante.
Procedure xdbTempFileName()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBTEMPFILENAME_Z"))
EndProcedure
Message d'erreur : 'ProcedureReturn' expects a numerical value, not a string.
J'ai cherché en vain pourquoi la procédure retournée un texte et pas une valeur, mais j'ai pas trouvé!
-
- Messages : 8
- Inscription : lun. 16/oct./2006 14:14
Et comme çà ?RV a écrit :Tu es sympa de t'occuper de mon cas, vraiment sympa!
C'est ce fameux fichier ou la procédure ci-dessous plante.
Procedure xdbTempFileName()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBTEMPFILENAME_Z"))
EndProcedure
Message d'erreur : 'ProcedureReturn' expects a numerical value, not a string.
J'ai cherché en vain pourquoi la procédure retournée un texte et pas une valeur, mais j'ai pas trouvé!
Code : Tout sélectionner
Procedure.s xdbTempFileName()
ProcedureReturn PeekS(CallFunction(xdbhDLL, "XDBTEMPFILENAME_Z"))
EndProcedure
Note : on retourne un texte puisque PeekS(*buffer) retourne un texte (chaîne ASCIIZ à l'adresse *buffer).
Dernière modification par gnozal le lun. 20/nov./2006 11:37, modifié 1 fois.
-
- Messages : 8
- Inscription : lun. 16/oct./2006 14:14