====== Vordefinierte Datenbankfunktionen ====== 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. ===== dbreadlock ===== ==== Definition ==== int dbreadlock (mask para_1) ==== Beschreibung ==== Setzt eine Lesesperre auf alle Tabellen die in der Maske para_1 enthalten sind. Nach Beendigung des Formulars werden die Sperren automatisch aufgehoben. ==== Rückgabewert ==== 0 bei Erfolg\\ -1 bei Datenbankfehler ==== Beispiel ==== ... dbreadlock (arti); ... ===== dbopencursor ===== ==== Definition ==== int dbopencursor (mask para_1) ==== Beschreibung ==== 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. ==== Rückgabewert ==== 0 - Erfolg\\ -1 - Datenbankfehler ==== Beispiel ==== 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; } ... ===== dbfetchcursor ===== ==== Definition ==== int dbfetchcursor (mask para_1) ==== Beschreibung ==== 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. ==== Rückgabewert ==== 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 ==== Beispiel ==== siehe dbopencursor ===== dbclosecursor ===== ==== Definition ==== int dbclosecursor (mask para_1) ==== Beschreibung ==== Schließt den Cursor der Maskenvariablen para_1. ==== Rückgabewert ==== 0 - Erfolg\\ -1 - Datenbankfehler ==== Beispiel ==== siehe dbopencursor ===== dbdelete ===== ==== Definition ==== int dbdelete (mask para_1) ==== Beschreibung ==== 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. ==== Rückgabewert ==== 0 - Erfolg\\ -1 - Datenbankfehler ==== Beispiel ==== 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; } } ===== dbinsert ===== ==== Definition ==== int dbinsert (mask para_1) ==== Beschreibung ==== 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. ==== Rückgabewert ==== 0 - Erfolg\\ -1 - Datenbankfehler ==== Beispiel ==== /* Sperrkennzeichen ist 0 */ arti.SPKZ_ARTI_ARTI.m = 0; /* Datensatz aus der aktuellen Maske wird eingefügt */ ret = dbinsert (arti); setcurmaskcont (arti); return ret; ===== dbupdate ===== ==== Definition ==== int dbupdate (mask para_1) ==== Beschreibung ==== Ä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. ==== Rückgabewert ==== 0 - Erfolg\\ -1 - Datenbankfehler ==== Beispiel ==== atrk.ADNR_ATRK_ATRK.m = deb.ADNR_DEB_DEB.m; .... ret = dbupdate (atrk);