Formulare, die Datenbankänderungen durchführen, werden als Transaktionen behandelt. In Abhängigkeit von dem Ergebnis des Formulars wird nach Beendigung die Transaktion bestätigt (Returnwert == 0) oder alle Datenbankänderungen werden Rückgängig gemacht (Returnwert != 0).
Treten während der Abarbeitung von Formularen Datenbankfehler auf, so werden diese protokolliert und in gekürzter Form in der Statuszeile angezeigt.
int dbreadlock (mask para_1)
Setzt eine Lesesperre auf alle Tabellen die in der Maske para_1 enthalten sind. Nach Beendigung des Formulars werden die Sperren automatisch aufgehoben.
0 bei Erfolg
-1 bei Datenbankfehler
... dbreadlock (arti); ...
int dbopencursor (mask para_1)
Setzt eine Abgrenzung auf die Maske para_1 und positioniert den Cursor auf den ersten Datensatz. Der Rückgabewert sagt nichts darüber aus, ob sich Datensätze innerhalb der Abgrenzung befinden.
0 - Erfolg
-1 - Datenbankfehler
arti.ART_ARTI_ARTI.o = 1; /* 1. Ordnungskriterium ist das Feld ART_ARTI_ARTI */ arti.BEZ1_ARTI_ARTI.o = 2; /* 2. Ordnungskriterium ist das Feld BEZ1_ARTI_ARTI */ if (dbopencursor (arti)) { ret = -1; } else { while (! (i = dbfetchcursor (arti))) { /* Zugriff auf Datensatz über artikel.feldname.m */ ... ... } dbclosecursor (arti); } if (i < 0) { ret = -1; } ...
int dbfetchcursor (mask para_1)
Kopiert den Datensatz der aktuellen Cursorposition in die Felder der Maskenvariablen para_1 (Feldinhalte werden nach Maskenfeldtyp 'm' kopiert), und positioniert auf der Datenbank um einen Datensatz weiter.
0 - Erfolg
100 - es befindet sich kein Datensatz an der aktuellen Cursorposition - der Cursor wurde
außerhalb der Abgrenzung positioniert oder es existiert kein Datensatz innerhalb
der Abgrenzung
-1 - Datenbankfehler
siehe dbopencursor
int dbclosecursor (mask para_1)
Schließt den Cursor der Maskenvariablen para_1.
0 - Erfolg
-1 - Datenbankfehler
siehe dbopencursor
int dbdelete (mask para_1)
Löscht einen Datensatz aus der Haupttabelle von para_1. Es wird automatisch dblock (para_1) ausgeführt. Die Funktion ist nur im Funktionsformularkompiler verfügbar.
0 - Erfolg
-1 - Datenbankfehler
arti.ART_ARTI_ARTI.s = "ART-00001"; /* Abgrenzungskriterium ist Artikelnummer, ART-00001 */
if (dbopencursor (arti)) { return -1; } else { if (!(i = dbfetchcursor (arti))) { /* Datensatz aus Tabelle ARTI wird gelöscht */ ret = dbdelete (arti); } dbclosecursor (arti); if (rc < 0) { return -1; } }
int dbinsert (mask para_1)
Fügt einen Datensatz in die Haupttabelle von para_1 ein. Es wird automatisch dblock (para_1) ausgeführt. Die Funktion ist nur im Funktionsformularkompiler verfügbar.
0 - Erfolg
-1 - Datenbankfehler
/* Sperrkennzeichen ist 0 */ arti.SPKZ_ARTI_ARTI.m = 0;
/* Datensatz aus der aktuellen Maske wird eingefügt */ ret = dbinsert (arti); setcurmaskcont (arti);
return ret;
int dbupdate (mask para_1)
Ändert einen Datensatz in die Haupttabelle von para_1. Es wird automatisch dblock (para_1) ausgeführt. Die Funktion ist nur im Funktionskompiler verfügbar.
0 - Erfolg
-1 - Datenbankfehler
atrk.ADNR_ATRK_ATRK.m = deb.ADNR_DEB_DEB.m; .... ret = dbupdate (atrk);