🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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: 2884
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) 227-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 und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten