_DBWrite( ), API-Bibliotheksroutine
Schreibt den aktuellen Datensatz im angegebenen Arbeitsbereich auf den Datenträger und aktualisiert alle betroffenen Indizes.
int _DBWrite(int workarea)
int workarea; /* Work area. */
Hinweise
Diese Aktualisierung erfolgt automatisch, und zwar immer dann, wenn der Datensatzzeiger auf einen anderen Datensatz verschoben wird. Wenn keine Felddaten ersetzt wurden, hat _DBWrite( ) keine Auswirkungen. _DBWrite( ) gibt 0 zurück, wenn die Routine ausgeführt wurde. Konnte die Routine nicht ausgeführt werden, gibt _DBWrite( ) eine negative ganze Zahl zurück, deren absoluter Wert eine Visual FoxPro-Fehlernummer darstellt.
Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.
Beispiel
Im folgenden Beispiel wird _DBReplace( ) mit den beiden aufrufenden Parametern ausgeführt, d. h. mit einem als Verweis übergebenen Tabellenfeld und mit einem Wert vom entsprechenden Typ. Der Visual FoxPro-Befehl LIST NEXT 1 wird vor und nach einem Aufruf von _DBWrite( ) ausgeführt.
Visual FoxPro-Code
SET LIBRARY TO DBWRITE
DO CreateTest
GO 3
=DBWRITE( @ABC, "Replacement Record 1")
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN
C-Code
#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int RetValue;
if (RetValue = _DBReplace(&parm->p[0].loc, &parm->p[1].val)) {
_UserError("\n_DBReplace() failed");
}
if (RetValue = _DBWrite(-1)) {
_Error(-RetValue);
}
_Execute("LIST NEXT 1");
}
FoxInfo myFoxInfo[] = {
{"DBWRITE", (FPFI) Example, 2, "R,?"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
Siehe auch
_DBLock( ), API-Bibliotheksroutine | _DBReplace( ), API-Bibliotheksroutine | _DBUnlock( ), API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API