Seite 1 von 1

Formular in entfernter Datenbank öfnen

Verfasst: Mo 14. Apr 2014, 11:45
von Acco
Guten Tag,

ich habe zwei eingebettete Base-Datenbanken erstellt. Nun möchte ich von einer (Kurse) auf die Andere (Rechnungen) zugreifen und dort ein Formular öffnen.

Der Zugriff auf die Tabellen in "Rechnungen" funktioniert, ich kann Daten abrufen und in "Kurse" verarbeiten. Jedoch das Öffnen eines Formulars in "Rechnungen" kriege ich nicht hin.

Mit

Code: Alles auswählen

 ThisDatabaseDocument.FormDocuments.getByName(Trim(oFormular(0))).open 

komme ich nicht weiter, weil über "ThisDatabaseDocument" auf "Kurse" und nicht auf "Rechnungen" zugegriffen wird.

Gibt es für mein Vorhaben eine Lösung?

Gruß

acco

Re: Formular in entfernter Datenbank öfnen

Verfasst: Mo 14. Apr 2014, 16:52
von RobertG
Hallo Acco,

Ich antworte einmal stumpf mit dem Inhalt aus dem Handbuch:
Der Zugriff auf Datenbanken außerhalb der aktuellen Datenbank ist folgendermaßen möglich:
DIM oDatabaseContext AS OBJECT
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
oDatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDatasource = oDatabaseContext.getByName("angemeldeter Name der Datenbank in LO")
oConnection = oDatasource.GetConnection("","")
Auch die Verbindung zu nicht in LO angemeldete Datenbanken ist möglich. Hier muss dann ledig-
lich statt des angemeldeten Namens der Pfad zur Datenbank mit «file:///..../Datenbank.odb» ange-
geben werden.
Du musst ja auf die Zieldatenbank kommen. Mit ThisDatabaseDocument ist Dein Ziel die Datenbankdatei, in der das Makro ausgelöst wird.
Ich habe so eine Verbindung noch nie gesucht (habe immer die Daten, die eine Sache betreffen, in einer Datenbank ...). Ich würde jetzt einfach einmal mit
oDatasource.FormDocuments.getByName ...
weiter versuchen.

Gruß

Robert

Re: Formular in entfernter Datenbank öfnen

Verfasst: Mo 14. Apr 2014, 17:59
von Acco
Hallo Robert,

in der Regel halte ich es wie Du, alle Infos in einer DB. Nur ist der konkrete Fall etwas kompliziert, denn die DB Rechnungen bedient mehr Betriebszweige als nur die Kurse. Die sind in den Kinderschuhen und werden voraussichtlich ein kleinerer Teil des Unternehmenszwecks bleiben. Da wäre es elegant gewesen aus der DB "Kurse" einen kurzen Ausflug in DB "Rechnungen" und Formular "Rechnung" zu machen - und dann in DB "Kurse" zurückzukehren.

Dein Vorschlag

Code: Alles auswählen

oDataSource.DatabaseDocument.FormDocuments.getByName("Formularname").open
funktioniert soweit als das Formular geöffnet wird. Es werden allerdings keinerlei Datensätze darin gezeigt, der Zugriff auf die Daten ist so leider nicht gegeben und scheint nicht ohne Weiteres einzurichten zu sein. Jedenfalls habe ich bei Xray nichts gefunden.

Ich glaube, ich verwerfe die Idee und öffne die DB "Rechnungen" wie bisher manuell. Sonst wird die Brühe teurer als die Brocken.

Danke für Deinen Tipp und die schnelle Reaktion.

Gruß
acco

Re: Formular in entfernter Datenbank öfnen

Verfasst: Mo 14. Apr 2014, 18:11
von RobertG
Hallo Acco,

hast Du denn auch die Verbindung hergestellt?
oConnection = oDatasource.GetConnection("","")
Vielleicht hilft das ja. Für ein Formular innerhalb der Datenbank müsste ja eigentlich auch die Datenbankdatei selbst geöffnet werden.
Ich würde bei so einem Verfahren eher vorziehen, externe Formulare zu nutzen. Da springst Du einfach von Dokument zu Dokument.

Gruß

Robert

Re: Formular in entfernter Datenbank öfnen

Verfasst: Mo 14. Apr 2014, 18:23
von Acco
Hallo Robert,

wie ich oben schrieb:
Acco hat geschrieben:Der Zugriff auf die Tabellen in "Rechnungen" funktioniert, ich kann Daten abrufen und in "Kurse" verarbeiten...
Die Verbindung steht, die DB ist geöffnet, und Daten "rüberholen" kann ich auch. Leider halt das gewünschte Formular nur leer öffnen, ohne Daten.

Vielleicht ist der Tipp mit externen Formularen ein Weg der hier akzeptiert wird.

Danke nochmal und eine erfogreiche Zeit.

Gruß

acco