🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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 und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten