Seite 1 von 1

ods Datei mit Inhalt aus einer SQL Abfrage füllen

Verfasst: Mi 15. Jun 2016, 10:02
von Kenji
Hallo zusammen,

Problematiken lassen einen irgendwie nicht mehr los....
Nachdem die letzte Schwierigkeit perfekt gelöst worden ist gibt es nun ein weiteres Anliegen.

Kurz zum Hintergrund. Es existiert ein Dialog, der verschiedene Dropdown und Textfelder enthält, welche meist durch SQL Abfragen auf eine Postgre SQL DB gefüllt werden.
Nun möchte ich diese abgefragten Daten in eine ods Datei speichern.

Beispiel:
Dropdown 1 enthält alle Länder
Ich möchte nun für jedes Land ein neues Tabellenblatt in der ods Datei erzeugen und dies entsprechend benennen

Dropdown 2 enthält alle Städte, die zum jeweiligen Land gehören
Ich möchte nun dass alle Städte des jeweiligen Landes in das entsprechende Tabellenblatt untereinander in einer bestimmten Spalte geschrieben werden


Leider habe ich nichtmal einen Ansatz wie das funktionieren könnte. Sicherlich mit einer Schleife, aber ich hoffe Ihr könnt mir hier nochmals auf die Sprünge helfen....

Viele Grüße

Kenji

Re: ods Datei mit Inhalt aus einer SQL Abfrage füllen

Verfasst: Mi 15. Jun 2016, 13:38
von gogo
schau mal hier. http://www.libreoffice-forum.de/viewtop ... 183#p20183
Das Makro das Du brauchst heisst "TOOL_SQLToCalc", da sind alle Funktionalitäten drin um Resultsets in ein Calc-Sheet zu transferieren... muss aber sicher noch umgearbeitet werden, damit Deine speziellen Vorstellungen funktionieren.

Re: ods Datei mit Inhalt aus einer SQL Abfrage füllen

Verfasst: Fr 17. Jun 2016, 07:45
von Kenji
Hallo,

erst einmal vielen Dank für die Rückmeldung. Das Tool und die dazugehörigen Beiträge haben mir schon gut geholfen. Nun bin ich soweit, dass mit in mein erstes Tabellenblatt die gewünschten Daten hineingeschrieben werden.

Außerdem funktioniert bereits, dass für jedes "Land", was in Spalte A steht ein neues Tabellenblatt generiert wird. Nun möchte ich weiter, dass diese neu generierten Tabellenblätter gefüllt werden mit Daten aus einer anderen SQL Abfrage...

Code: Alles auswählen

REM Bibliothek laden
	globalScope.BasicLibraries.loadLibrary("Tools")
	
	REM Dateipfad
	STEUrl = DirectoryNameoutofPath(convertfromurl(thisComponent.url), getPathSeparator())

   	REM Abfrage
   	Testabfrage = SQL_Anweisung.executeQuery("SELECT ""test1"",""test2"",""test3"",""test4"",""test5"" FROM ""laender"" ORDER BY ""test1""")
  
  	aColumns = Testabfrage.Columns.ElementNames
    	AuswDoc = StarDesktop.loadComponentFromURL("file:///" & STEUrl & "\" & "Vorlagen\Auswertung.ods", "_blank", 0, Args()
 	
 	oSheet = AuswDoc.Sheets(0)
   	nColumnCount = UBound(aColumns)
 	Dim aLine(nColumnCount)
   	Dim aData(0)
   	aData(0) = aColumns
   	nUpperBoundary = 0
   	Do While Testabfrage.Next
      	nUpperBoundary = UBound(aData)+1
      	ReDim Preserve aData(nUpperBoundary)
      	ReDim aLine(nColumnCount)
      	For i = 0 To nColumnCount
         aLine(i) = Testabfrage.getString(i+1)
      	Next i
      	aData(nUpperBoundary) = aLine
      	AuswDoc.sheets.insertNewByName(Testabfrage.getString(2), 1)
   	Loop
   	oRange = oSheet.getCellRangeByPosition(0,0,nColumnCount,nUpperBoundary)
   	oRange.setDataArray(aData)
	
	Call Sortieren_steigend
Wäre super wenn mich jemand nochmal auf die richtige Fährte lotsen kann....

Grüße

Kenji

Re: ods Datei mit Inhalt aus einer SQL Abfrage füllen

Verfasst: Fr 17. Jun 2016, 18:57
von gogo
reicht es nicht, "aData()" mit den richtigen Daten zu füllen?

Re: ods Datei mit Inhalt aus einer SQL Abfrage füllen

Verfasst: So 19. Jun 2016, 15:56
von Kenji
Hallo,

ich kann dir leider nicht sagen, ob das das Problem löst, denn ich stehe grade völlig auf dem Schlauch und hab null Ansatz, wie es weitergehen könnte....
Hast du da evtl. einen Beispielcode für mich oder etwas, was mich wieder etwas in die korrekte Richtung führt?

Ich benötige wirklich alles im Makro selber und habe keinen Spielraum, dass die Abfragen in extra InputBoxen oder Ähnlichem eingetragen werden.

Grüße

Kenji

Re: ods Datei mit Inhalt aus einer SQL Abfrage füllen

Verfasst: Do 23. Jun 2016, 11:58
von Kenji
Hallo zusammen,

ist hier niemand mehr, der mir weiterhelfen kann?

Grüße

Kenji