DbaConnect
DbaConnect(int1, alpha2, alpha3, alpha4, alpha5, alpha6, alpha7) : int
Verbindung zu einer anderen CONZEPT 16-Datenbank herstellen
Details
- int1: Dateinummernbereich
- alpha2: Namenspräfix
- alpha3: Serveradresse
- alpha4: Datenbankname
- alpha5: Benutzername
- alpha6: Benutzerkennwort
- alpha7: Serverkennwort
- Resultat:
int_ErrOkVerbindung erfolgreich hergestellt Fehlerwert (siehe Text) - Siehe: Verwandte Befehle ,
DbaDisconnect (), Verwendung (Blog)
Mit dieser Funktion lassen sich bis zu sieben weitere CONZEPT 16-Datenbanken öffnen. Dabei wird die Datenstruktur einer solchen 'sekundären' Datenbank in einen gesonderten Dateinummernbereich geladen. Dabei stehen sieben Bereiche zur Auswahl (2001-2999, 3001-3999, ... und 8001-8999) die durch Angabe von _Dba2 bis _Dba8 in (int1) ausgewählt werden. Das bedeutet, dass beispielsweise die Datei 122 beim Laden in den Bereich 3 dann die Dateinummer 3122 erhält.
Um einen konfliktfreien Zugriff per Namen auf die Datenstrukturen zu ermöglichen, kann in (alpha2) ein Präfix angegeben werden, das allen Elementnamen aus dieser Datenstruktur vorangestellt wird. Das Präfix sollte so gewählt werden, dass keine Überschneidung mit Namen aus der primären Datenstruktur auftritt.
In (alpha3) wird die IP-Adresse oder der Name des Zielserver angegeben. Als Protokoll wird 'TCP' verwendet.
Bei der Verwendung der Hot-Standby -Option des Servers kann der Hostname oder die IP-Adresse der "normalen" Verbindung angegeben werden. In (alpha3) werden beide Server (der Primär- und der Sekundärserver) angegeben. Die beiden Server werden durch '+' voneinander getrennt (<Protokoll>:<Servername>+<Servername>).
Es folgt der Datenbankname in (alpha4) (inklusive Pfadname) bzw. der symbolische Datenbankname.
In den Parametern (alpha5) und (alpha6) werden der Benutzer und sein Kennwort in der verbundenen Datenbank angegeben. Für einen Zugriff via DbaConnect() muss die Option "Externer Zugriff" in den Programmrechten des Benutzers der zu verbindenden Datenbank gesetzt sein. Existiert der Benutzer in der zu verbindenden Datenbank nicht oder hat er nicht die erforderlichen Rechte, wird _ErrDbaUserInvalid zurückgegeben.
Bei kennwortgeschützten Datenbanken kann in (alpha7) das entsprechende Serverkennwort übergeben werden.
Als Resultat wird ein Fehlerwert zurückgeliefert.
_ErrOk: Kein Fehler_ErrDbaNoServer: Server nicht vorhanden_ErrDbaComm: Verbindung zum Server unterbrochen_ErrDbaNoArea: Datenbank nicht vorhanden_ErrDbaAreaOpen: Datenbank konnte nicht geöffnet werden_ErrDbaAreaLocked: Datenbank ist gesperrt_ErrDbaAreaRollback: Datenbank ist im Rollback-Modus_ErrDbaAreaStandby: Datenbank ist im Standby-Modus_ErrDbaAreaInUse: Die Datenbank ist zur Zeit in exklusiver Benutzung_ErrDbaAreaLockedAdmin: Login gesperrt durch den Administrator_ErrDbaAreaLockedDown: Datenbank wird gerade geschlossen_ErrDbaAreaLockedNoStandbyOpen: Zweites Standby-System nicht gestartet_ErrDbaAreaLockedOpen: Login-Sperre gesetzt_ErrDbaAreaLockedOperation: Datenbank wird exklusive genutzt_ErrDbaAreaLockedRollback: Rollback-Sperre gesetzt_ErrDbaAreaLockedStandby: Datenbank ist im Standby-Modus_ErrDbaAreaType: Datenbankversion ungültig_ErrDbaAreaPassword: Serverkennwort nicht korrekt_ErrDbaUserInvalid: Datenbankbenutzer ungültig_ErrDbaUserLimit: Maximale Benutzeranzahl des Servers erreicht_ErrDbaServerStart: Fehler bei Serverstart_ErrDbaServerRelease: Die Server-Version kleiner als die Client-Version
In einer mit DbaConnect () verbundenen Datenbank können nicht alle CONZEPT 16-Befehle verwendet werden. Folgende Befehle stehen zur Verfügung:
BinDeleteBinDirDeleteBinDirOpenBinDirReadBinExportBinImportBinOpenFileInfoFileInfoByNameFileNameFld...Fld...ByNameFldCompareFldCopyFldDefFldDefByNameFldInfoFldInfoByNameFldNameKeyFldInfoKeyInfoKeyInfoByNameKeyNameLinkFldInfoLinkInfoLinkInfoByNameLinkNameRecBufClearRecBufCompareRecBufCopyRecBufCreateRecBufDefaultRecDeleteRecDeleteAllRecInfoRecInsertRecLinkRecLinkInfoRecReadRecReplaceSbrClearSbrCompareSbrCopySbrInfoSbrInfoByNameSbrNameSbrStatusStoDirOpenStoOpenTextCopyTextCreateTextDeleteTextReadTextRenameTextWrite
Informationen über die verbundene Datenbank können über die Anweisung DbaInfo () durch Angabe der Konstanten _Dba2 bis _Dba8 ermittelt werden.
Texte in der externen Datenbank können über die Konstanten _TextDba2 bis _TextDba8 angesprochen werden.
Beispiele:
// Verbindung ohne HSB
if (DbaConnect(_Dba3, 'BackUp-', 'TCP:Kronos', 'Kunden', 'SU', '', '') = _ErrOk)
{
FldDef(3008, 1, 2, 0);
FldDefByName('BackUp-Kd.Name', 'test');
RecRead(3008, 1, 0);
... # FldInt(3008, 1, 5);
... # FldAlphaByName('BackUp-Kd.Ort');
DbaDisconnect(_Dba3);
}
// Verbindung mit HSB
if (DbaConnect(_Dba2, '', 'TCP:10.0.0.1+10.0.0.2', 'Kunden', 'SU', '', '') = _ErrOk)
{
// ...
DbaDisconnect(_Dba2);
}
Beim Versuch einen bereits belegten Dateinummernbereich zu verwenden oder bei einem ungültigen Wert in (int1) kommt es zu einem Laufzeitfehler.
Kommt es zu einem Verbindungsabbruch zu einer verbundenen Datenbank, führen die Datensatzbefehle im SOA-Service zum Resultat _ErrDbaComm . Beim Standard- und Advanced-Client wird der Client jedoch mit der Meldung "Bereich: Kommunikation / Fehler: Verbindung abgebrochen" beendet. Wird in der Eigenschaft Options des _Sys -Objektes die Option _DbaConnectOpErrorCode gesetzt, wird auch im Standard- und Advanced-Client der Fehlercode _ErrDbaComm zurückgegeben und der Client bleibt bestehen.
Mögliche Laufzeitfehler:
_ErrValueRange: Dateinummernbereich (int1) ungültig_ErrValueInvalid: Dateinummernbereich (int1) bereits belegt