🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

[gelöst] Kopieren von Tabellen von DB zu DB per Makro

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

[gelöst] Kopieren von Tabellen von DB zu DB per Makro

Beitrag von Acco » Do 1. Mai 2014, 00:42

Liebe Helfer,

2 Datenbanken (DB) bestehen in LO Base 4.1.5, beide eingebettet. Betriebssystem ist openSUSE 13.1.

Nun sollen in DB „Kurse“ Export-Tabellen mit aufbereiteten Adressdaten erstellt werden. Aus einer Tabelle müssen 3 erstellt werden, wegen unterschiedlicher Datenstrukturen in der Ziel-DB. Das funktioniert bereits. Diese Tabellen sollen in die Ziel-DB „Adressen“ kopiert werden, das klappt nicht. Dort sollen dann die Daten dieser exportierten Tabellen automatisch in die entsprechenden Tabellen eingefügt werden, das funktioniert auch.

Es klappt also alles, bis auf das kopieren der Tabelle von DB zu Ziel-DB. Per Hand, also mit „ziehen und einfügen“ ist das kein Problem, so machen wir es derzeit. Das soll jedoch per Makro automatisiert werden, um Bedienfehler weitgehend auszuschließen. Das kriege ich nicht hin.

Entweder habe ich die Verbindung in der ersten DB mit

Code: Alles auswählen

	oDatenquelle = ThisComponent.Parent.DataSource
	oVerbindung = oDatenquelle.GetConnection("","")
	oStatement = oVerbindung.createStatement
oder die Verbindung zur zweiten, entfernten DB mit

Code: Alles auswählen

	oDatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
	oDatasource = oDatabaseContext.getByName("Adressen_1_2")
	oConnection = oDatasource.GetConnection("","")
	oSQL_Statement = oConnection.createStatement()
Die Verbindung zur zweiten DB funktioniert, ich kann mir Daten daraus anzeigen lassen, aber eben keine Daten (Tabellen) dahin übertragen. Ich stehe auf dem Schlauch.

Kann mir jemand auf die Sprünge helfen?

Herzlichst
acco
Zuletzt geändert von Acco am Do 1. Mai 2014, 10:43, insgesamt 1-mal geändert.
openSUSE Tumbleweed - LibreOffice 24.8.2.1

RobertG
* LO-Experte *
Beiträge: 2957
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Kopieren von Tabellen von DB zu DB per Makro

Beitrag von RobertG » Do 1. Mai 2014, 09:48

Hallo Acco,

ist natürlich so schlecht zu sagen, wo bei Dir genau der Fehler liegt. Ich habe das einfach einmal zusammengebaut: Quelldatenbank, Zieldatenbank und ein Formular in der Quelldatenbank mit einem Button. Drückst Du den Button, so wird die Tabelle aus der Quelldatenbank in die Tabelle der Zieldatenbank kopiert.

Gruß

Robert
Dateianhänge
Datenkopie_Quelle_Ziel.zip
Datenkopie von einer Datenbank zur anderen Datenbank
(12.88 KiB) 240-mal heruntergeladen
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: Kopieren von Tabellen von DB zu DB per Makro

Beitrag von Acco » Do 1. Mai 2014, 10:42

Hallo Robert,

vielen Dank für die schnelle und problemlösende Antwort.

Dein Beispiel funktioniert so, wie ich es mir erwünscht habe. Meine Schwierigkeiten waren an 2 Stellen:

Code: Alles auswählen

	oDatenquelle = ThisComponent.Parent.CurrentController
Da hatte ich den Bezug auf CurrentController nicht,
sowie

Code: Alles auswählen

	oVerbindung = oDatenquelle.ActiveConnection()
da war mir ActiveConnection nicht klar.

Meine Probleme waren genau an den Stellen, die Du in Deinem Makrocode auskommentiert hast.

Nochmal herzlichen Dank für die Lösung und einen schönen 1.Mai.

Gruß

acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1


An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten