Seite 1 von 1

Arraydeklaration stoppt die Programmausführung

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

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

Re: Arraydeklaration stoppt die Programmausführung

Verfasst: Sa 2. Jun 2012, 11:38
von Pegaso
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