Seite 1 von 2
[gelöst] Automation Base Daten in Calc importieren
Verfasst: Do, 15.11.2012 17:22
von Vanner
Hallo zusammen!
Ich dreh gleich am Rad!
Seit zwei Tagen recherchiere ich im Netz und probiere mein Anliegen zu lösen:
Ich habe ne neue Stelle angefangen und die haben da geschätzte 100 Listen mit Kunden, weil jeder Verkäufer seine eigene Kundenliste führte...
Nun habe ich alle Listen zusammen getragen, in Calc eingepflegt und in Base importiert, aufbereitet und ein Formular gestaltet, damit neue Kunden schön übersichtlich eingepflegt sind.
Nun habe ich für Kundentermine eine Traktandenliste in Calc gestaltet (Tabelle1), welche mit SVERWEIS die Daten mittels Kundennummer in das Formular einfügt.
Die Datenbank und die Tabelle2 in der Traktandenliste sind identisch gegliedert, dass ich (eigentlich) nur die Datenabfrage in Calc kopieren kann...
Nun mein Anliegen:
Ich möchte, dass sich die Tabelle aus der Datenbank beim Öffnen der Traktandenliste automatisch in Tabelle2 aktualisiert, bzw. neue Einträge nach führt.
Mit dem Makrorecorder habe ich bis jetzt nur geschafft, dass sich der Navigator öffnet und sich die Daten aus der Abfrage markieren. Jedoch nicht, dass sie selbstständig in die Tabelle2 importiert werden.
Das heisst, ich muss jedes Mal alle Daten markieren und dann per Drag&Drop in Tabelle2 ziehen...
Geht das nicht einfacher? Vor allem, sollen andere auch mit der Traktandenliste arbeiten können, und mein Verständnis ist schon sehr beschränkt, die andern verstehen aber grad gar nichts davon...
Für die Datenaktualisierung hab ich extra eine Schaltfläche gezaubert, da wärs doch schade wenn die nur Platz raubt. Es sei denn, sie wird gar nicht mehr gebraucht...
Besten Dank schonmal für eure Hilfe!
Re: Automation Base Daten in Calc importieren
Verfasst: Fr, 16.11.2012 13:32
von Vanner
Hallo? Echo? Cho? Ho? O?
Re: AW: Automation Base Daten in Calc importieren
Verfasst: Fr, 16.11.2012 14:08
von komma4
Hallo!
Hier ist ein privat betriebenes Hilfe forum, und keine kostenpflichtige Hotline, die dir innerhalb von Stunden eine komplette Antwort gibt.
Zu deiner Frage :
Das ist relativ einfach mit database range zu machen, aber nicht mit dem recorder.
Habe zu hause ein beispiel, bin jetzt aber essen und danach zu einem Pool turnier.
Auf meine Antwort wirst also warten müssen
Re: AW: Automation Base Daten in Calc importieren
Verfasst: Fr, 16.11.2012 14:10
von komma4
Habe den Thread dann auch mal ins richtige unterforum verschoben
Re: Automation Base Daten in Calc importieren
Verfasst: Fr, 16.11.2012 18:56
von komma4
aus dem englischen Forum
Code: Alles auswählen
Sub importRowSet(oDBRange, dbSourceName$, srcType%, src$ )
Dim oDesc(),i%,oPrp
'on error goto exitErr:
oDesc() = oDBRange.getImportDescriptor() 'array of com.sun.star.beans.PropertyValues
For i = 0 to ubound(oDesc())
oPrp = oDesc(i)
If oPrp.Name = "DatabaseName" then
oPrp.Value = dbSourceName
elseIf oPrp.Name = "SourceType" then
oPrp.Value = srcType
elseIf oPrp.Name = "SourceObject" then
oPrp.Value = src
Endif
oDesc(i) = oPrp
Next
oDBRange.getReferredCells.doImport(oDesc())
exit sub
exitErr:
'raise API-error
error err
End Sub
Kommst Du damit schon zurecht?
Re: Automation Base Daten in Calc importieren
Verfasst: Fr, 16.11.2012 21:20
von Vanner

Wat'n dat?
Überhaupt nicht!

Re: Automation Base Daten in Calc importieren
Verfasst: Sa, 17.11.2012 08:33
von komma4
Du hast "mit dem Makroeditor" eine Lösung versucht - also möchtest Du Dich doch mit BASIC beschäftigen, oder?
Hast Du den Thread im englischen Forum gelesen? Was verstehst Du nicht?
Der Code ist eine Routine um den Import (die Aktualisierung der Daten!) von einer registrierten Datenquelle nach CALC zu automatisieren.
Dazu werden an diese Routine die vier benötigten Parameter übergeben.
Der Aufruf mit Parametern kann dann in einem Modul stehen, welches über den Datei öffnen Ereignis aufgerufen werden kann.
Code: Alles auswählen
Sub de57964
' 2012-11-17
'
oDatabaseRanges = ThisComponent.DatabaseRanges
oDataBaseRange = oDatabaseRanges.getByName( "Import1" )
' automatischer Import DB-Daten
importRowSet( oDataBaseRange , "mysql_jdbc" , com.sun.star.sheet.DataImportMode.TABLE , "resolutions.Tabelle1" )
End Sub
"
mysql_jdbc" ist der Name meiner registrierte Datenquelle
"
resolutions.Tabelle1"
catalogue* und der Tabellenname der zu importierenden Tabelle
[* MySQL spezifische Eigenschaft; bei Dir fehlt bei der Frage ziemlich alles: OOo Version, Betriebssystem, DBMS]
Wurde es damit heller bei Dir?
Re: Automation Base Daten in Calc importieren
Verfasst: Sa, 17.11.2012 18:33
von Vanner
Vielen Dank schonmal!
Das ist alles ziemlich verwirrend für mich... Leider verstehe ich kein Englisch, weshalb ich aus dem englischen Forum nicht schlauer wurde...
Was mach ich denn jetzt mit diesen Codes?
Übrigens:
oO. 3.4.1
Windows 7
Was ist DBMS?
Re: Automation Base Daten in Calc importieren
Verfasst: Sa, 17.11.2012 19:01
von komma4
Wiki kennst Du?
DBMS
1. Schritt:
Du öffnest Deine CALC-Tabelle, Seite 2 ("Tabelle2")
2. Schritt:
F4 öffnet Dir den Datenbankbrowser, Du ziehst Deine Datentabelle in
A1 von
Tabelle2 und lässt sie fallen.
Damit hast Du einen Datenimport definiert.
3. Schritt:
kopiere die beiden Codeschnippsel in Modul
Standard Deiner CALC-Tabelle
http://www.ooowiki.de/MakrosInstallieren
4. Schritt:
passe in der Routine
de57964 die Namen an (letztes Posting von mir, blau gekennzeichnet)
5. Schritt:
In der CALC weist Du unter
Extras>Anpassen...>Ereignisse>Laden des Dokuments beendet diesem Ereignis das Makro
de57964 zu
Kommst Du damit zurecht?
Re: Automation Base Daten in Calc importieren
Verfasst: Sa, 17.11.2012 21:24
von Vanner
Also, ich hab das jetzt versucht mit der Anleitung und deinen Codes, aber es kommen laufend Fehlermeldungen:
zB. BASIC-Laufzeitfehler.
Argument ist nicht optional
und markiert mir dann folgende Zeile:
oDesc() = oDBRange.getImportDescriptor() 'array of com.sun.star.beans.PropertyValues
Re: Automation Base Daten in Calc importieren
Verfasst: So, 18.11.2012 00:55
von komma4
Du hast eine DBRange, wie in Schritt 2 angegeben, eingerichtet?
Du hast die Namen der Datenquelle und den DB-Tabellennamen angepasst?
Du startest Makro de57964 - nicht die Arbeitsroutine importRowSet?
Falls das alles passiert ist/ stimmt, dann:
* Zeige Deinen angepassten Code!
* stelle Beispieldokumente (mit anonymisierten Daten) im Anhang zur Verfügung
Re: Automation Base Daten in Calc importieren
Verfasst: So, 18.11.2012 19:19
von Vanner
Hy! Ja, hab ich gemacht. Danach kommt jeweils die Frage, ob ich die Daten in "Import1" ersetzen möchte...
Was ich noch nicht verstehe ist, ob ich im Code auch die Zeilen wo
bla bla bla "Datenbank"
bla bla bla "SourceObject" und "SourceType" auch ändern muss? Und "Import1"...
Oder wirklich nur die von Dir blau markierten Texte...
Re: Automation Base Daten in Calc importieren
Verfasst: So, 18.11.2012 19:31
von komma4
Bei mir kommt (teste mit "Dokument öffnen"-Ereignis) mal keine Nachfrage...
Ändern musst Du -ausser den zwei Angaben reg.Datenbankname und DB-Tabelle- nichts mehr
Zeige Deinen Code!
Re: Automation Base Daten in Calc importieren
Verfasst: So, 18.11.2012 19:51
von Vanner
Hab ich. Oder?
Re: Automation Base Daten in Calc importieren
Verfasst: So, 18.11.2012 19:57
von komma4
Nein, hast Du nicht!
Du übergibst zwei (leere)
Variablen Kundendatenbank und
Kunden
Du solltest zwei Zeichenketten übergeben:
Code: Alles auswählen
importRowSet( oDataBaseRange , "Kundendatenbank" , com.sun.star.sheet.DataImportMode.TABLE , "Kunden" )
Klappt das jetzt?