Base-Abfrage in Calc ausgeben

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

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Abfrage anzeigen lassen

Beitrag von komma4 »

Moin Hein,

JEIN - Du brauchst schon die Schleife, da Du immer nur eine Zeile des ResultSets bekommst.
Was Deinen Code langsam macht (bei mehr als ein Paar Werten) ist das Setzen der einzelnen Werte pro Zelle.

Fülle erst ein Array und nehme dann .setDataArray um alles auf einmal in einen Bereich zu schreiben.

Beispiele für die Array-Bearbeitung mit der Forensuche und in meiner Extension OOoDIL - DoumentInfoListe

Noch ein Tipp: erzeuge das Calc-Doument im Hintergrund (Suchbegriff: HIDDEN) und zeige es erst nach Ende des Füllvorgangs an (auch in OOoDIL).

Hilft das weiter?


Was meinst Du mit "Ausgabe in Base"?
Du kannst auch eine Abfrage definieren und die aufrufen... hab' ich aber noch nicht probiert.
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: Base-Abfrage in Calc ausgeben

Beitrag von komma4 »

Lade Dir OOoDIL und schau den Code an.

Beide Antworten sind da drinn:

HIDDEN bei den DateiEigenschaften des Öffnens FileProperties

Code: Alles auswählen

myCell.setDataArray( Datenarray )

Leider keine Zeit mir das näher anzuschauen... kommst Du so schon weiter?
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)
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Base-Abfrage in Calc ausgeben

Beitrag von bst »

Auch Hallo,

Dein Array ist M.E. falsch dimensioniert. Am einfachsten, M.E., nimm zuvor ein:

Code: Alles auswählen

Datenarray = myCell.getDataArray 
dann hast Du ein Array mit der richtigen Dimensionierung. Alternativ scheint auch dieses zu funktionieren.

Beachte dass hier der ReDim innerhalb der Schleife steht!! Wenn ich das hier nicht mache bekommen alle Zellen einer Spalte den gleichen Inhalt?

cu, Bernd
--

Code: Alles auswählen

Sub Main
   Dim Datenarray(1 To 66) As Variant
   
   for i = 1 to 66
      redim arHilf(1 to 128)
      for j = 1 to 128
         arHilf(j) = 100*j+i
      next
      Datenarray(i) = arHilf
   next
   Dim mArgs()
   oDocument = StarDesktop.loadComponentFromURL ("private:factory/scalc","_blank", 0, mArgs())
   mySheet = oDocument.sheets(0)
   myCell = mySheet.getCellRangeByPosition(1,1,128,66)
   myCell.setDataArray Datenarray
End Sub
Antworten