🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

Arraydeklaration stoppt die Programmausführung

Alles zur Programmierung im LibreOffice.
Antworten
arkadiuszpaluszek
Beiträge: 39
Registriert: Sa 17. Mär 2012, 22:39

Arraydeklaration stoppt die Programmausführung

Beitrag von arkadiuszpaluszek » So 18. Mär 2012, 00:22

Code: Alles auswählen

	
mySQL="SELECT * FROM ""kunden_leistungen"" WHERE (""abgerechnet""<>1 OR ""abgerechnet"" IS NULL) AND ""id_kunde""='"+kunde_id+"'"

oErgSet=oStatement.executeQuery(mySQL)
	
		if not isNull(oErgSet) then
		
		dim id_datensatz()
		x=0
			Do while oErgSet.Next()
				On Error Resume Next
				' Die ID des Datensatzes, welcher anschließend als abgerechnet markiert werden soll, wird im Array gespeichert.
				id_datensatz(x)=oErgSet.getInt(1)
				msgbox ("Datensatz id="+id_datensatz(x))
				x=x+1	
			loop
oErgSet hat eine für mich zunächst unbekannte Größe, von daher möchte mich mich bei der Deklaration des Arrays id_datensatz in welchem die IDs aller Datensätze aus der Abfrage gespeichert werden noch auf keine bestimmte Größe festlegen.

Die Deklaration "dim id_datensatz()" stoppt aber die Programmausführung! Deklariere ich mit einer bestimmten Größe, z.B. dim id_datensatz(1000) - gibt es kein Problem. Hat jemand dafür eine Erklärung?

LibreOffice 3.5 auf Win7

Grüße

Arek

P.S.: die gleiche Frage habe ich auch hier gestellt:
http://de.openoffice.info/viewtopic.php?f=18&t=52669

Pegaso
Beiträge: 1
Registriert: Sa 2. Jun 2012, 11:07

Re: Arraydeklaration stoppt die Programmausführung

Beitrag von Pegaso » Sa 2. Jun 2012, 11:38

Hi Arek,

spät, aber ich versuchs trotzdem.

Wenn Sie solche "leeren" dynamischen Arrays deklarien, müssen Sie mit der Redim - Anweisung
den Speicherplatz immer wieder erweitern.
Ihr Fehler entsteht also weil zu Anfang gar kein Speicherplatz vorhanden ist.

Erst nach einem
dim a() as integer
..
redim a(4) // alle Werte werden gelöscht
redim preserve a(4) // Werte bleiben im Array
..

Sonst einfach mal mit F8 durchdebuggen.

Viel Erfolg
Pegaso


An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten