[gelöst] Automation Base Daten in Calc importieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Vanner
**
Beiträge: 27
Registriert: Sa, 14.07.2012 11:37

[gelöst] Automation Base Daten in Calc importieren

Beitrag 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!
Vanner
**
Beiträge: 27
Registriert: Sa, 14.07.2012 11:37

Re: Automation Base Daten in Calc importieren

Beitrag von Vanner »

Hallo? Echo? Cho? Ho? O?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: AW: Automation Base Daten in Calc importieren

Beitrag 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
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: AW: Automation Base Daten in Calc importieren

Beitrag von komma4 »

Habe den Thread dann auch mal ins richtige unterforum verschoben
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Automation Base Daten in Calc importieren

Beitrag 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?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Vanner
**
Beiträge: 27
Registriert: Sa, 14.07.2012 11:37

Re: Automation Base Daten in Calc importieren

Beitrag von Vanner »

:shock: Wat'n dat?
Überhaupt nicht! :roll:
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Automation Base Daten in Calc importieren

Beitrag 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?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Vanner
**
Beiträge: 27
Registriert: Sa, 14.07.2012 11:37

Re: Automation Base Daten in Calc importieren

Beitrag 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?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Automation Base Daten in Calc importieren

Beitrag 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?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Vanner
**
Beiträge: 27
Registriert: Sa, 14.07.2012 11:37

Re: Automation Base Daten in Calc importieren

Beitrag 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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Automation Base Daten in Calc importieren

Beitrag 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
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Vanner
**
Beiträge: 27
Registriert: Sa, 14.07.2012 11:37

Re: Automation Base Daten in Calc importieren

Beitrag 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...
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Automation Base Daten in Calc importieren

Beitrag 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!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Vanner
**
Beiträge: 27
Registriert: Sa, 14.07.2012 11:37

Re: Automation Base Daten in Calc importieren

Beitrag von Vanner »

Hab ich. Oder?
Dateianhänge
Unbenannt3.PNG
Unbenannt3.PNG (90.98 KiB) 2544 mal betrachtet
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Automation Base Daten in Calc importieren

Beitrag 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?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten