Zum Hauptinhalt springen

C16_OpenArea

C16_OpenArea(const vPHANDLE aInstHdl, const vCHAR* aServerName, const vCHAR* aServerPassword, const vCHAR* aAreaName, const vCHAR* aUserName, const vCHAR* aUserPassword, const vCHAR* aReserved, const vCHAR* aLocalDSPath, const vINT aProcCacheKB) : vERROR

Datenbank öffnen

Details

  • aInstHdl: Instanz-Handle
  • aServerName: Protokoll und Name des Servers
  • aServerPassword: Kennwort des Servers
  • aAreaName: Pfad der Datenbank (ohne .CA1)
  • aUserName: Benutzer
  • aUserPassword: Kennwort des Benutzers
  • aReserved: Reserviert
  • aLocalDSPath: Pfad für lokale Datenstruktur
  • aProcCacheKB: Größe des Prozedurcaches
  • Resultat: vERROR Fehlerwert
  • Siehe: Befehle der Programmierschnittstelle , C16_CloseArea() , C16_InitInstance()

Mit diesem Befehl wird eine Verbindung zum Server aufgebaut, die angegebene Datenbank geöffnet und ihre Datenstruktur in den Hauptspeicher geladen.

Im Parameter (aInstHdl) ist der von C16_InitInstance() bereitgestellte Instanz-Handle zu übergeben. Die Anmeldung an den Server geschieht über die Parameter (aServerName) und (aServerPassword). Der Servername setzt sich aus dem Protokoll ("TCP") und dem Servernamen zusammen (TCP:<Servername>).

Wurde keine Host-Tabelle angelegt, kann sich eine externe Programmierschnittstelle, nur mit diesem Server verbinden. Die Host-Tabelle wird im gleichen Verzeichnis, in dem sich die Datei C16_PGXW.DLL befindet, angelegt. Bei der Tabelle handelt es sich um eine Text-Datei mit dem Namen C16_PGXW.HST. In dieser Datei wird das Protokoll und der Name oder die IP-Adresse des Servers angegeben, auf den die Schnittstelle geschützt ist.

Beispiel:

TCP: 10.0.0.1

Der Parameter (aServerPassword) beinhaltet einen Zeiger auf das Passwort der Datenbank. Dieses Passwort kann über die Schaltfläche [Kennwort] im Dialog "Kennwortabfrage" angegeben werden. Die Angabe ist nur notwendig, wenn die Datenbank über das Passwort geschützt worden ist. Ist dies nicht der Fall bzw. ist die Datenbank nicht passwortgeschützt, wird NULL übergeben.

(aAreaName) enthält einen Zeiger auf eine Zeichenkette, in welcher der komplette Pfad der Datenbank angegeben wird (der Datenbankname ist ohne .CA1-Erweiterung anzugeben). Dies ist der gleiche Pfad, der auch zur Anmeldung der Datenbank beim Server angegeben wurde. Alternativ kann hier auch der symbolische Name der Datenbank angegeben werden.

Bei der Verwendung der Hot-Standby -Option des Servers muss der symbolische Name angegeben werden. In dem Übergabeparameter (aServerName) werden beide Server (der Primär- und der Sekundärserver) angegeben. Die beiden Server werden durch "+" voneinander getrennt (<Protokoll>:<Servername>+<Servername>).

Zur Anmeldung in der Datenbank wird ein Benutzer und das zugehörige Passwort benötigt. Der Benutzer wird in (aUserName) (Zeiger auf eine String-Konstante oder -Variable) übergeben. Das Passwort steht in (aUserPassword) (Zeiger auf eine String-Konstante oder -Variable). Hat der Benutzer kein Passwort, wird NULL übergeben.

info

Der angegebene Benutzer (aUserName) benötigt für einen Zugriff auf die Datenbank eine entsprechende Berechtigung. Dazu muss die Option "Externer Zugriff" in den Programmrechten des Benutzers gesetzt sein.

Im Parameter (aReserved) muss NULL übergeben werden.

Mit dem Parameter (aLocalDSName) wird ein Zeiger auf eine Zeichenkette, in welcher der Pfad der lokalen Datenstruktur, angegeben wird, übergeben (nur in Verbindung mit der WAN-Option des Servers). Ist keine lokale Datenstruktur vorhanden, wird NULL übergeben.

Der Parameter (aProcCacheKB) enthält die Größe des Prozedurpuffers für die Datenbank in Kilobyte. Der Puffer muss größer 0 sein, wenn eine CONZEPT 16-Prozedur ausgeführt werden soll. Alternativ kann die Option _OpenMode5x angegeben werden, um Datenbanken zu öffnen, deren Stand kleiner als 5.8 ist.

Der Rückgabewert vom Typ vERROR beinhaltet entweder 0 (kein Fehler) oder einen negativen Fehlerwert (siehe Fehlerwerte ).

Es können mehrere Datenbanken gleichzeitig geöffnet sein. Für jede geöffnete Datenbank muss eine eigene Datenbank-Instanz initialisiert werden (siehe C16_InitInstance() ).

Beispiel:

void main(void)
{
char pszMsgText[80];
vERROR nErg; // Funktionsergebnis
vPHANDLE hModule; // Modul-Handle
vPHANDLE hInstance; // Instanz-Handle

// Modul initialisieren und 4MB Speicher reservieren
nErg = C16_InitPgif(0x00400000, &hModule);
// vInstanz initialisieren
nErg = nErg + C16_InitInstance(hModule, &hInstance);
// Datenbank öffnen
nErg = nErg + C16_OpenArea(hInstance, "TCP:10.1.0.2+10.1.0.1", NULL,
"T40", "USER", "UserPassword",
NULL, NULL, 32);
if(nErg <> 0)
{
sprintf(pszMsgText
"Error %d at opening database\n", nErg);
MsgBox(pszMsgText);
}
// Verarbeitung fortsetzen
C16_CloseArea(hInstance); // Datenbank schließen
C16_TermInstance(hInstance); // Instanz beenden
C16_TermPgif(hModule); // Modul beenden
}