DataRow-Array Problem!

magic_halli

Erfahrenes Mitglied
Hi,

ich habe ein DataRow-Array, welches ich for i=0
to 'Variable' durchgehe und mir entsprechende Werte
auslese. Wenn jetzt das Array aber kleiner ist, als die
For-Schleife läuft, bekomme ich eine Fehlermeldung
bezüglich der Länge - ist ja logisch!
Kann ich, wenn das Ende des Arrays erreicht ist, wieder
auf dessen Anfang springen und erneut durchgehen, bis die
For-Schleife zum Ende gekommen ist?
Hier mal mein Code:

Code:
For i = 0 To (vor * 2) - 1
Dim dr_raum() As DataRow = ds_raum.Tables("raum").Select("kurz = 'V' AND sitze >= '" & anzahl & "'  ")
idraum = dr_raum(i)("IDraum")
Next

Ich will das so haben, wenn das dr_raum(i)("IDraum") am
Ende ist (und vom Index her kürzer als die For-Schleife
läuft), wieder von 0 beginnt durch das DataRow-Array zu
laufen und ganz normal hochzählt.
Erst wenn die For-Schleife fertig ist, ist auch die
Zuweisung der Werte auf die Variable idraum beendet.

Wie kann ich das lösen - mir fehlen hier echt die
Kenntnisse!

Danke, Rico.
 
Hallo.

Ja, geht.

Aber zuerst was anders. Deine Select-Anfrage ans DataTable mach doch bitte ausserhalb der Schleife! Es reicht doch wenn du das Array einmal abfragst. So wie du es im Moment hast, holt er sich bei jedem Schleifendurchlauf das Array neu. Es wird sich doch darin in dieser kurzen Zeit nichts ändern, oder?!
Ist etwas unperformant, so wie du es machst.

Nun zu deinem Problem. Erstelle dir eine neue Variable vom Typ int, diese wird nun für den Zugriff auf dein Array verantwortlich sein.
Startwert ist 0, und mit jedem Schleifendurchlauf erhöhst du sie, sollte, das Ende des DataRow-Arrays erreicht worden sein, setzt du den Wert der Variable wieder auf 0, und schon holst du dir wieder die Daten vom Anfang.

Code:
Dim dr_raum() As DataRow = ds_raum.Tables("raum").Select("kurz = 'V' AND sitze >= '" & anzahl & "'  ")
Dim rowCount As Integer
rowCount = 0
For i = 0 To (vor * 2) - 1
	
	if dr_raum.Length == rowCount then
		rowCount = 0
	end if
	
	idraum = dr_raum(rowCount)("IDraum")
	rowCount = rowCount + 1
	
Next

Ich hoffe der VB Code stimmt, die Select-Abfrage hab ich aus der Schleife rausgenommen, sollte es bei dir nötig sein, dass sie in der Schleife ist, kannst sie ja wieder reingeben.
Weiters, ins VB.net Forum verschoben, da kein ASP.net Problem.

MfG,
Alex
 
Zurück