Datenbankverbindungen per Makro beenden

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

max23
**
Beiträge: 23
Registriert: Fr, 06.08.2004 12:35

Datenbankverbindungen per Makro beenden

Beitrag von max23 »

Hallo zusammen,

Gibt es eine Möglichkeit in einem Makro zu überprüfen, ob gerade eine verbindung besteht oder nicht??
Und diese dann zu schließen??

Mein Problem ist folgendes:
Mein Makro formt eine dbase-Datei in ein Tabellendokument um. Wenn der Benutzer allerdings. Die dBase-Datei wird von einem anderen Programm bereitgestellt. Sobald eine Vorlage gestartet wird, wird nach einer neuen dBase gesucht und diese wenn nötig umgeformt.
Wenn keine dBase vorliegt kann aber mit dem bereits umgeformten Tabellendokument gearbeitet werden.
Folglich stellt oo eine Verbindung zu diesem tabellendokument her.
Wenn der Benutzer jetzt feststellt, dass er aktuellere Daten benötigt und eine dBase erzeugt, kann er mein Makro nicht benutzen, da ein Zugriff auf das Tabellendokument besteht.
Und eine Datei auf die ein Zugriff ist, kann man nun mal nicht überschreiben.

Kann mir jemand weiterhelfen?

Danke

Grüße
Max
max23
**
Beiträge: 23
Registriert: Fr, 06.08.2004 12:35

Beitrag von max23 »

Hi nochmal,

Weiß denn keiner, wie ich sämtliche verbindungen zu einer Datenquelle kappen kann???

Grüße
max
zap
**
Beiträge: 20
Registriert: Di, 11.01.2005 13:18
Wohnort: Hannover

Beitrag von zap »

Hi Max,

ich verstehe nicht so genau, was du moechtest. Wenn du eine Verbindung mit Basic aufbaust, kannst du close() fuer die Verbindung aufrufen:

Code: Alles auswählen

option compatible

sub datenquellen
  Manager = GetProcessServiceManager()
  dbctx = Manager.createInstance("com.sun.star.sdb.DatabaseContext")
  namen = dbctx.getElementNames()
  msgbox join(namen, vbLf)
  
  datenquelle = dbctx.getByName("Bibliography")
  conn = datenquelle.getConnection("", "")
  msgbox conn.isClosed()
  conn.close()
end sub
Dannach darf man "conn" nicht mehr benutzen, sonst stirbt OOo wahrscheinlich. Vllt kannst du mal dein bisheriges Makro oder Teile davon schicken, damit ich besser verstehem, was du meinst.

zap
max23
**
Beiträge: 23
Registriert: Fr, 06.08.2004 12:35

Beitrag von max23 »

Hallo,

Ich weiß ich hab mich doof ausgedrückt.

Der Sachverhalt den du beschreibst ist mir klar!
Das Problem ist, mein Makro öffnet die Datenbankverbindung nicht.
Sondern der benutzer.

Und zu dem Zeitpunkt an dem mein Makro abläuft besteht dann eine vom Benutzer aufgebaute Verbindung zur Datenquelle XY.
Wenn ich in meinem Makro dann versuche, die Datei der Datenquelle XY auszutauschen, bekomme ich natürlich eine Exeption.
Klar geöffnete dateien können nicht überschrieben werden.

Daher frage ich ob es eine Möglichkeit gibt abzufragen: "Hat der Benutzer eine Verbindung zur Datenquelle aufgebaut?"
Wenn ja -> Schließen
Nein -> Makro läuft weiter

Trotzdem Danke für die Antwort!

Grüße
Max
Antworten