Datenbankinhalt in Calc-Dokument

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Datenbankinhalt in Calc-Dokument

von Mihilist » Mi, 26.04.2006 16:26

Also, um nochmal Laut zu geben: Laut DevelopersGuide (dieses 1141-Seiten-pdf) besitzt ein Datenformular alle RowSet-Eigfenschaften, war also nicht so daneben, was ich da gestern hingemurkst hab.

Ich dachte mir dann, dass das Problem sein könnte, dass er nach all den .Next's damit durch ist und das nicht kapiert, nu hab ich eben noch am Ende oForm.reload eingefügt, nun geht es.

Aber... Irgendwie find ich die Vorstellung, dass er nach der Aktion die Datenbankabfrage wiederholt nicht sonderlich elegant :cry:

...naja, wenigstens kackt er nichtmehr ab :lol:

von Toxitom » Mi, 26.04.2006 07:53

hey Mihilist,
das oForm ist das Formular, das mit der entsprechenden Datenbankabfrage verwurstet ist. Wundert mich, dass das überhaupt getString und Next besitzt, aber anscheinend tut's das
Hmm, ich denke, hier liegt der Fehler. Ich kann die zwar nicht sagen, warum dein Formular diese Eigenschaften und Methoden unterstützt (wundert mich auch), kann mir aber nur vorstellen, dass dieses Formular quasi den Resultset beinhaltet und insofern ähnlich funktioniert. Der richtige Weg ist das aber nicht - daher vielleicht auch die nicht zu erklärenden Abstürze.

Also, wie gesagt, wenn du mit Basic arbeitest, solltest du an sich "nativ" arbeiten (obwohl es auch da noch Fehler und merkwürdige Phänomene gibt :wink: ) und die Methode getString() oder next() wird üblicherweise auf ein sogenanntes ResultSet angewendet .

Gruss
Thomas

von Mihilist » Di, 25.04.2006 21:50

Das is ja das Problem, danach kommt nur End Sub.
Und er stürtzt dort ab, weil er die gesamte Tabelle ins Calc-Sheet schreibt, ich kann auch das Sheet speichern und alles. nur wenn ich zum Formular zurückkehre, dass das Makro gestartet hat, reagiert er erst nichtmehr und nach ein paar Sekunden stürzt er ab :(

das oForm ist das Formular, das mit der entsprechenden Datenbankabfrage verwurstet ist. Wundert mich, dass das überhaupt getString und Next besitzt, aber anscheinend tut's das - bin noch ziemlicher n00b :D

edit: bei "Do... Loop while..." sollte er am Ende die BEdingung testen und bei false nicht mehr durchlaufen. Daran hab ich garnicht gedacht, aber wenn es daran läge müsste er doch eine Fehlermeldung bringen und nicht einfach kommentarlos abstürzen :)

von Toxitom » Di, 25.04.2006 21:08

Hey Mihilist,

hmm, wenig Code. Einzig eins fällt mir auf:
Ich nehme mal an, dass oForm dein ResultSet ist. Wenn dem so währe, so lasse ich meine Schleifen immer andersherum laufen also:

Code: Alles auswählen

do while oForm.next()
...
loop
Das funktioniert. Ich nehme an, dein Code stürzt ab, weil der letzte Durchlauf nicht mehr funktioniert? Nur so eine Idee. Ansonste kann ich wenig finden.
Sicher, er stürzt hier ab? Was kommt denn danach?

Gruss
Thomas

Datenbankinhalt in Calc-Dokument

von Mihilist » Di, 25.04.2006 15:36

Hi!

Ich versuche mich grad in die Wirren von OOo einzufinden, und möchte gerade versuchen, die aus einer Datenbank abgefragten Werte in ein Calc-Dokument zu schreiben.

Dazu hab ich mir das da zusammengebastelt:

Code: Alles auswählen

[...]
for i = 0 to oTable.Count-1
	oNewDoc.Sheets(0).getCellByPosition(i, 0).String = oTable.getByIndex(i).Label
next

j = 1
oForm.getRow(0)
do
	for i = 0 to oTable.Count-1
		oNewDoc.Sheets(0).getCellByPosition(i, j).String = oForm.getString(i+1)
	next
	j = j+1
loop while oForm.Next
Das Problem ist nur, dass OOo abstürzt, sobald er damit fertig ist, und ich hab keine Ahnung warum :(

Hoffe ihr könnt mir helfen.

Nach oben