Ergebnis von Select Anweisung in calc Sheet schreiben
Moderator: Moderatoren
Ergebnis von Select Anweisung in calc Sheet schreiben
Hallo,
ich habe ein Makro, das eine Select Anweisung ausführt, dessen Ergebnis dann in ein Calc Sheet geschrieben werden soll.
Alles kein Problem, solange man das Ergebnis der Select Anweisung spaltenweise in ein Array und dann ins Calc Sheet schreiben kann.
Ich brauche das Ergebnis der Select Anweisung im calc Sheet aber in anderer Form. Ich erhalte als Ergebnis 3 Spalten (mehrere Monate, mehrere Tasknamen, dazugehörige Stundenanzahl),
wobei die Monate in die Spalte geschrieben werden sollen, die Tasknamen in die Zeile und die Stundenanzahl eben in die entsprechende Spalte+Zeile.
Ich habe ein Datei angehängt, die ein Beispiel enthält wie es ausschauen soll.
Als Ergebnis der Select Anweisung erhalte ich beispielsweise folgende Datensätze, wobei jeder Datensatz aus 3 Spalten besteht:
06 Krank 4,5
06 Besprechung 3,25
07 Controlling 25,5
ich habe ein Makro, das eine Select Anweisung ausführt, dessen Ergebnis dann in ein Calc Sheet geschrieben werden soll.
Alles kein Problem, solange man das Ergebnis der Select Anweisung spaltenweise in ein Array und dann ins Calc Sheet schreiben kann.
Ich brauche das Ergebnis der Select Anweisung im calc Sheet aber in anderer Form. Ich erhalte als Ergebnis 3 Spalten (mehrere Monate, mehrere Tasknamen, dazugehörige Stundenanzahl),
wobei die Monate in die Spalte geschrieben werden sollen, die Tasknamen in die Zeile und die Stundenanzahl eben in die entsprechende Spalte+Zeile.
Ich habe ein Datei angehängt, die ein Beispiel enthält wie es ausschauen soll.
Als Ergebnis der Select Anweisung erhalte ich beispielsweise folgende Datensätze, wobei jeder Datensatz aus 3 Spalten besteht:
06 Krank 4,5
06 Besprechung 3,25
07 Controlling 25,5
- Dateianhänge
-
- Beispiel.ods
- (10.06 KiB) 62-mal heruntergeladen
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
Eine Ausgabe der Daten im gewünschten Format lässt sich bestimmt auch mit der SQL-Abfrage erzielen (DISTINCT, GROUP BY, SUM, Sub-SELECTs), das kann bei variabler Anzahl der Tätigkeiten aber recht schnell unübersichtlich werden.
wie wäre es mit:
Ausgabe der SQL_Abfrage wie bekannt(Tabelle3), dann erzeuge mit dem Datenpilot die gewünschte Ausgabe (Tabelle2).
Die "Tabelle3" kannst Du ausblenden,
Ist das unsere nächste Basic-Übung?
wie wäre es mit:
Ausgabe der SQL_Abfrage wie bekannt(Tabelle3), dann erzeuge mit dem Datenpilot die gewünschte Ausgabe (Tabelle2).
Die "Tabelle3" kannst Du ausblenden,
Ist das unsere nächste Basic-Übung?
- Dateianhänge
-
- de.18962.ods
- Ausgabe mit Datenpilot(Entwurf)
- (10.39 KiB) 54-mal heruntergeladen
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)
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)
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
Hallo Winfried,
Bei der SQL Abfrage kann man hier leider nicht mehr erreichen, die Stunden pro Monat für einen bestimmten Task werden schon nur einmal selektiert und summiert. D.h. es gibt sowieso schon nur mehr einen Datensatz für ein bestimmtes Monat und einen bestimmten Task, natürlich kann es vom gleichen Monat aber auch noch andere Tasks geben.
Die Lösung mit dem Datenpilot gefällt mir insofern nicht, da ich alles mit einem Makro lösen sollte - und es für den späteren Benutzer wirklich so einfach sein sollte, dass er nur auf die Schaltfläche klickt, die das Makro auslöst und schon hat er das Ergebnis der SQL Abfrage im Calc Sheet stehen.
Gibt es da nicht noch mehr Möglichkeiten das Ergebnis per Makrocode in ein Calc Sheet zu schreiben? (also halt nicht nur spaltenweise in ein Array, sondern halt irgendwie anders)
An dieser Stelle möchte ich mich noch einmal bei dir für deine Geduld und deinen Einsatz bedanken
Bei der SQL Abfrage kann man hier leider nicht mehr erreichen, die Stunden pro Monat für einen bestimmten Task werden schon nur einmal selektiert und summiert. D.h. es gibt sowieso schon nur mehr einen Datensatz für ein bestimmtes Monat und einen bestimmten Task, natürlich kann es vom gleichen Monat aber auch noch andere Tasks geben.
Die Lösung mit dem Datenpilot gefällt mir insofern nicht, da ich alles mit einem Makro lösen sollte - und es für den späteren Benutzer wirklich so einfach sein sollte, dass er nur auf die Schaltfläche klickt, die das Makro auslöst und schon hat er das Ergebnis der SQL Abfrage im Calc Sheet stehen.
Gibt es da nicht noch mehr Möglichkeiten das Ergebnis per Makrocode in ein Calc Sheet zu schreiben? (also halt nicht nur spaltenweise in ein Array, sondern halt irgendwie anders)
An dieser Stelle möchte ich mich noch einmal bei dir für deine Geduld und deinen Einsatz bedanken

- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
You're welcome.
Natürlich kannst Du Zellen einzeln setzen, adressiere eine Zelle und setze Wert, Formel oder Zeichenkette:
Dabei musst Du den Gruppenwechsel für die Zeilen (Monat ändert sich) halt selbst programmieren und Dir die Ausgabespalten aufbereiten (:= merken, welche Tätigkeit in welche Spalte kommt).
Natürlich kannst Du Zellen einzeln setzen, adressiere eine Zelle und setze Wert, Formel oder Zeichenkette:
Code: Alles auswählen
oBlatt = ThicComponent.Sheets().getByName(" Jahr2008" )
oZelle1 = oBlatt.getCellRangeByName( "F2" )
oZelle2 = oBlatt.getCellByPosition( 3, 6 )
oZelle1.setString( "Datum" )
oZelle2.setValue( 39661 )
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)
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)
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
hm ok ich glaube das würde zu kompliziert werden.
Also bei deinem Vorschlag mit dem Datenpilot müsste man ja nur auf Daten/Datenpilot gehen, dort "aktuelle Selektion" auswählen, das Layout einstellen und auf "OK" klicken und schon
hat man die gewünscht Ansicht.
Nun meine Frage: kann man das mit dem Makro automatisieren, so dass es der User den Datenpilot nicht händisch aufrufen und einstellen muss, sondern die Arbeit auch gleich vom Makro erledigt wird?
Also bei deinem Vorschlag mit dem Datenpilot müsste man ja nur auf Daten/Datenpilot gehen, dort "aktuelle Selektion" auswählen, das Layout einstellen und auf "OK" klicken und schon
hat man die gewünscht Ansicht.
Nun meine Frage: kann man das mit dem Makro automatisieren, so dass es der User den Datenpilot nicht händisch aufrufen und einstellen muss, sondern die Arbeit auch gleich vom Makro erledigt wird?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
Aufwändig sind beide Lösungen.
Wobei das "manuelle Setzen" (Ansteuern der einzelnen Zellen) der Tabelle eben "nur" Fleissarbeit (Gruppenwechsel!) ist.
Ich selbst habe noch keinen DatenPiloten per Makro erstellt. Prinzipiell sollte aber alles, was "per Hand" er-/eingestellt werden kann, auch per Makro zu programmieren sein. Hat den Vorteil der Wiederverwendbarkeit und der Fehlervermeidung....
Zu viel mehr werde ich heute nicht kommen.... Viel Erfolg!
Wobei das "manuelle Setzen" (Ansteuern der einzelnen Zellen) der Tabelle eben "nur" Fleissarbeit (Gruppenwechsel!) ist.
Ich selbst habe noch keinen DatenPiloten per Makro erstellt. Prinzipiell sollte aber alles, was "per Hand" er-/eingestellt werden kann, auch per Makro zu programmieren sein. Hat den Vorteil der Wiederverwendbarkeit und der Fehlervermeidung....
Code: Alles auswählen
oDok = ThisDocument.Sheets()
oBlatt = oDok.getByName( "Tabelle1" )
oPilotTabellen = oBlatt.getDataPilotTables()
If oPilotTabellen.hasByName( "Jahr2008" ) Then
' refresh ?
Else
' erstellen
xray oPilotTabellen
' Methoden: .insertNewByName( name, datapilotdescriptor )
End If
Zu viel mehr werde ich heute nicht kommen.... Viel Erfolg!
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)
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)
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
Hört sich gut an, dass man das auch alles per Makro programmieren kann, was man per Hand einstellen kann... dann würde ich das mit dem Datenpiloten gerne so machen, bin aber leider ein
wenig hilflos und habe keinen brauchbaren Code gefunden bis jetzt
Hat jemand von euch so etwas vielleicht schon mal programmiert oder kann mir weiter helfen?
wenig hilflos und habe keinen brauchbaren Code gefunden bis jetzt

Hat jemand von euch so etwas vielleicht schon mal programmiert oder kann mir weiter helfen?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
wollte mich am Wochenende damit beschäftigen***, und dann war das Wetter zu gut...
Nun regnet es, mal schauen, ob ich ein Beispiel hinbekomme...
*** (bedeutet auch: ich kenne keinen Demo-Code im Netz)
Nun regnet es, mal schauen, ob ich ein Beispiel hinbekomme...
*** (bedeutet auch: ich kenne keinen Demo-Code im Netz)
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)
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)
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
das wäre super, wenn du mir helfen könntest 
ich sehe da 2 Möglichkeiten, entweder das SQL statement direkt vom Datenpiloten auswerten lassen (also den Datenpiloten auf eine SQL Abfrage aufrufen), oder das Ergebnis im Calc sheet ausgeben (dann ausblenden) und dann den Datenpiloten auf diese (aktuelle Selektion) aufrufen. Wobei ich wie gesagt nicht weiß inwiefern das alles programmiertechnisch effizient lösbar ist.

ich sehe da 2 Möglichkeiten, entweder das SQL statement direkt vom Datenpiloten auswerten lassen (also den Datenpiloten auf eine SQL Abfrage aufrufen), oder das Ergebnis im Calc sheet ausgeben (dann ausblenden) und dann den Datenpiloten auf diese (aktuelle Selektion) aufrufen. Wobei ich wie gesagt nicht weiß inwiefern das alles programmiertechnisch effizient lösbar ist.
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
Hilft dieser Link weiter?sg1985 hat geschrieben:Nun meine Frage: kann man das mit dem Makro automatisieren, so dass es der User den Datenpilot nicht händisch aufrufen und einstellen muss, sondern die Arbeit auch gleich vom Makro erledigt wird?
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
Bei Ian aus Neuseeland findet sich eine Beispieldatei, die ich aber noch nicht untersucht habe: http://homepages.paradise.net.nz/hillvi ... Pilot3.ods
Viel Erfolg!
Viel Erfolg!
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)
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)
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
auf den Link von turtle bin ich vorher auch schon gestoßen, aber ich komme irgendwie nicht zu Recht mit dem Code 
Das Beispiel vom Ian ist mir ein bisschen zu viel, vor allem soll der spätere User ja nicht wieder etwas einstellen müssen bei einem Dialog für den Datenpiloten.
Ich brauche ja immer nur das gleiche Layout des Datenpiloten (Monat als Zeilenfeld, Taskname als Spaltenfeld und Stunden als Datenfeld.
@winfried: versuchst du dich auch noch an einem Demo-Code Beispiel für den Datenpiloten?

Das Beispiel vom Ian ist mir ein bisschen zu viel, vor allem soll der spätere User ja nicht wieder etwas einstellen müssen bei einem Dialog für den Datenpiloten.
Ich brauche ja immer nur das gleiche Layout des Datenpiloten (Monat als Zeilenfeld, Taskname als Spaltenfeld und Stunden als Datenfeld.
@winfried: versuchst du dich auch noch an einem Demo-Code Beispiel für den Datenpiloten?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
ja, versuchen will ich das schon. Der erste Blick auf den Code von Ian lässt mich hoffen, dass ich das schaffe.
Die Woche ist allerdings schon arg belegt bei mir.
Die Woche ist allerdings schon arg belegt bei mir.
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)
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)
Re: Ergebnis von Select Anweisung in calc Sheet schreiben
schade, ich muss es nämlich bis spätestens Mittwoch so hinbringen mit dem einfachen Datenpiloten. Ich hoffe, ich schaff das irgendwie 

Re: Ergebnis von Select Anweisung in calc Sheet schreiben
ich glaube übrigens der Code vom Link von turtle ist einfach zu verstehen, obwohl ich da auch schon hänge...