[Access]Prüfen ob ein anderes Programm eine Verbindung zur Datenbank Hergestelllt hat.
-
Hallo zusammen,
ich möchte prüfen ob ein anderes Programm grade auf einen Access Datenbank zugreift. Ich in der suche schon gesucht nix gefunden.. jemand ne idee.. ??
ich habe mir das so gedacht
if(ob eine verbindung besteht) { WENN JA } else { WENN NEIN }jemand ne idee ? wehr sehr Wichtig.. Datben Bank ist Halt Access und ich arbeite mir Builder 6.0 wenn jemand noch paar infos brauch.. einfach sagen

ich danke für jeden Hilfe...
mfg
|23|
-
das geht soweit ich weiss nicht.
-
Was gibt's denn an meinem Lösungsvorschlag aus Deinem anderen Posting auszusetzen? Hast Du das überhaupt ausprobiert? Wenn ja, wie und mit welchem Ergebnis?
Joe_M. schrieb:
Wenn Du die Tabellen 'exclusive' öffnest, sollte eine entsprechende Fehlermeldung kommen, und der Zugriff verweigert werden.
Versuch mal ADOConnection::Mode auf ShareExclusive zu setzen. Kann sein, dass Du dafür ADOConnection::CursorLocation auf clUseServer setzen mußt, was man bei Access sowieso machen sollte. (Leider habe ich vergessen warum das so ist, ich verwende kein Access...)
Es ging doch nur um den Zugriff von Deinen Programmen aus, oder greifen auch andere Programme auf die DB zu? Aber selbst dann sollte Dein Programm nicht in der Lage sein, die Tabelle exklusiv zu öffnen.
EDTI: Du kannst also nicht feststellen, ob jemand die DB geöffnet hat, aber Du kannst die Tabellen der DB nicht exklusiv öffnen, wenn jemand diese Tabelle schon geöffnet hat, auch wenn es nur ein Lesezugriff ist.
-
Wie prüfe ich den ob Sie exklusiv geöffnet ist `?
-
Indem Du versuchst Sie exklusiv zu öffnen (wie in dem anderen Posting beschrieben). Gelingt Dir dieses, weißt Du, das niemand anderes darauf zugreift, gelingt es dir nicht, weißt Du das die Tabelle(n) in Gebrauch ist / sind.
-
Wie ??
ich öffne meine meine verbindung so:
adoQry->Open();und wie soll ich das prüfen ?:_
if(adoQry->Open() == true )
-
Prinzipiell fast richtig.

Du solltest das Ganze in einem try-catch-Block einschließen, dann erhält der Anwender keine Fehlermeldung, aber Du kannst die EDataBase-Errors abfangen und entsprechend reagieren. Möglicherweise ist es sinnvoll den try-catch-Block noch in einen try-__finally-Block zu legen, damit du auf jeden Fall noch aufräumen kannst.
Wenn den Anwender die Fehlermeldung nicht stört, kannst Du nach dem Open() mit adoQry->Active == true prüfen, ob die Tabelle geöffnet werden konnte
-
Prinzipiell leider doch nicht richtig...
daif(adoQry->Open() == true )ned geht.
FEHLERMELDUNG:
Sie haben einen Typ deklariert, der in C nicht erlaubt ist, beispielsweise eine Funktion, die eine Funktion oder ein Array zurückliefert.
halt open gibt mir kein true oder false zurück

und was ich will ja prüfen ob eine verbindung steht spch ob schon eine ex... verbindung steht..

-
Joe_M. schrieb:
...kannst Du nach dem Open() mit adoQry->Active == true prüfen...