Hallo,
ich arbeite zwar jetzt mit LO denke aber, dass dieses Thema für OO und LO gleich ist.
Ich habe eine Datenquelle zu einer SQLEXPRESS-Datenbank definiert und lese Tabellen aus der Datenbank in Calc-Tabellen ein. Es wäre schön, wenn man das mittels Makro machen kann. Leider hat es mit "aufzeichnen" nicht funktioniert (hab es ehrlich gesagt auch nicht erwartet aber probiert).
Kann mir wer dabei helfen oder eine Quelle nennen bei der ich nachsehen kann?
[gelöst] Makro zum Importieren einer Datenbanktabelle in Calc
Moderator: Moderatoren
[gelöst] Makro zum Importieren einer Datenbanktabelle in Calc
Zuletzt geändert von kilix am Sa, 28.10.2023 18:23, insgesamt 3-mal geändert.
Grüße
kilix
kilix
Re: Makro zum Importieren einer Datenbanktabelle in Calc
Hallo,
ich konnte das Problem selbst lösen:
bei meinen früheren versuchen das Makro aufzuzeichnen habe ich die Datenquelle mit F4 geöffnet. Das funktionierte nicht. Nun habe ich es über das Menü - Ansicht - Datenquelle gemacht und das funktionierte!
ich konnte das Problem selbst lösen:
bei meinen früheren versuchen das Makro aufzuzeichnen habe ich die Datenquelle mit F4 geöffnet. Das funktionierte nicht. Nun habe ich es über das Menü - Ansicht - Datenquelle gemacht und das funktionierte!
Grüße
kilix
kilix
Re: Makro zum Importieren einer Datenbanktabelle in Calc
Hallo,
die oben genannte Lösung funktioniert gut solange ich in der Abfrage kein Kriterium habe. Ich habe aber in der Abfrage ein Kriterium definiert. Im Makro öffnet sich auch das Kriterienfenster und wartet bis ich meine Eingabe gemacht und mit OK bestätigt habe. Allerdings wird dann nicht nach meiner Eingabe gefiltert.
Der manuelle Vorgang ist wie folgt:
1) Aufruf der Datenquelle mit Menü-Ansicht-Datenquelle: damit wird die früher verwendete Abfrage markiert
2) Frage nach der Eingabe des Kriteriums diese Frage beantworte ich mit Abbrechen (da sie später nochmals kommt)
3) ich markiere die Abfrage (im Explorerfenster) und ziehe sie mit der Maus in die Calc-Tabelle
4) dabei wird wieder nach der Eingabe des Kriteriums gefragt, nun mache ich die Eingabe
5) die gewünschte Selektion wird in die Calc-Tabelle übernommen.
Wenn ich diesen Vorgang aufzeichne werde ich nur einmal nach dem Kriterium gefragt aber danach nichts mehr gemacht. Ich nehme an, dass das Ziehen mit der Maus der Abfrage in die Calc-Tabelle nicht richtig aufgezeichnet wird. Wahrscheinlich dürfte ich nicht "ziehen" sondern müsste es mit "kopieren" und "einfügen". Allerdings erhalte ich dabei immer Fehlermeldungen, egal ob ich "kopieren" aus dem Menü oben oder dem DB-Menü nehme. Für "einfügen" habe ich keine alternativen Möglichkeiten gefunden.
Das aufgezeichnete Makro sieht so aus:
die oben genannte Lösung funktioniert gut solange ich in der Abfrage kein Kriterium habe. Ich habe aber in der Abfrage ein Kriterium definiert. Im Makro öffnet sich auch das Kriterienfenster und wartet bis ich meine Eingabe gemacht und mit OK bestätigt habe. Allerdings wird dann nicht nach meiner Eingabe gefiltert.
Der manuelle Vorgang ist wie folgt:
1) Aufruf der Datenquelle mit Menü-Ansicht-Datenquelle: damit wird die früher verwendete Abfrage markiert
2) Frage nach der Eingabe des Kriteriums diese Frage beantworte ich mit Abbrechen (da sie später nochmals kommt)
3) ich markiere die Abfrage (im Explorerfenster) und ziehe sie mit der Maus in die Calc-Tabelle
4) dabei wird wieder nach der Eingabe des Kriteriums gefragt, nun mache ich die Eingabe
5) die gewünschte Selektion wird in die Calc-Tabelle übernommen.
Wenn ich diesen Vorgang aufzeichne werde ich nur einmal nach dem Kriterium gefragt aber danach nichts mehr gemacht. Ich nehme an, dass das Ziehen mit der Maus der Abfrage in die Calc-Tabelle nicht richtig aufgezeichnet wird. Wahrscheinlich dürfte ich nicht "ziehen" sondern müsste es mit "kopieren" und "einfügen". Allerdings erhalte ich dabei immer Fehlermeldungen, egal ob ich "kopieren" aus dem Menü oben oder dem DB-Menü nehme. Für "einfügen" habe ich keine alternativen Möglichkeiten gefunden.
Das aufgezeichnete Makro sieht so aus:
Code: Alles auswählen
sub DB_importieren
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ViewDataSourceBrowser"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:ViewDataSourceBrowser", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ViewDataSourceBrowser"
args2(0).Value = true
dispatcher.executeDispatch(document, ".uno:ViewDataSourceBrowser", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ViewDataSourceBrowser"
args3(0).Value = false
dispatcher.executeDispatch(document, ".uno:ViewDataSourceBrowser", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ViewDataSourceBrowser"
args4(0).Value = false
dispatcher.executeDispatch(document, ".uno:ViewDataSourceBrowser", "", 0, args4())
end sub
Grüße
kilix
kilix
Re: Makro zum Importieren einer Datenbanktabelle in Calc
@Admin
bitte verschieben sie diesen beitrag wenn er eher unter Makros und allgemeine Programmierung gehört, danke.
edit: Moderationsbemerkung: Thema verschoben
bitte verschieben sie diesen beitrag wenn er eher unter Makros und allgemeine Programmierung gehört, danke.
edit: Moderationsbemerkung: Thema verschoben
Grüße
kilix
kilix
Re: Makro zum Importieren einer Datenbanktabelle in Calc
Hallo,
eine interessante Frage, für die ich hier fündig wurde:
http://de.openoffice.info/viewtopic.php?t=57964
Etwas abgewandelt:
Bei meinem Test kam der Dialog zur EIngabe des Kriterium und dann wurde die Daten in Tabelle3 ab Zelle A1 importiert.
eine interessante Frage, für die ich hier fündig wurde:
http://de.openoffice.info/viewtopic.php?t=57964
Etwas abgewandelt:
Code: Alles auswählen
Sub Main
Dim aImportDesc(2) as new com.sun.star.beans.PropertyValue
aImportDesc(0).Name = "DatabaseName"
aImportDesc(0).Value = "test_datenquelle" 'hier: Name der angemeldeten Datenquelle
aImportDesc(1).Name = "SourceType"
aImportDesc(1).Value = com.sun.star.sheet.DataImportMode.QUERY
aImportDesc(2).Name = "SourceObject"
aImportDesc(2).Value = "Abfrage1" 'hier: Name der Abfrage
oBereich= thiscomponent.sheets(2).getCellRangeByName("A1")
obereich.doImport(aImportDesc)
End Sub
Gruß,
mikeleb
mikeleb
Re: Makro zum Importieren einer Datenbanktabelle in Calc
Hallo mikeleb,
vielen, vielen Dank! Dieses Makro macht exakt was ich wollte!
Danke!
vielen, vielen Dank! Dieses Makro macht exakt was ich wollte!
Danke!
Grüße
kilix
kilix