For next Schleife zwischen einer Do Loop while

LadySunshine

Grünschnabel
Hi Leute,
ich brauch jetzt mal eure Hilfe ich bekomme es leider einfach nicht hin...

If tb.recordFirst (sqlda) = MBE_Success Then
Do
For i=1 to 5

arrayzweidim(i,1) =""+(sqlda.value(0))+""
arrayzweidim(i,2) =""+(sqlda.value(6))+""

Loop while tb.recordNext (sqlda) = MBE_QueryNotFinished

Next i
End If

Und zwar folgendes, ich möchte jeden Datensatz den er findet in das ZweiDim Array speichern dazu wollte ich die For Schleife benutzen,allerdings bekomme ich es nicht gebacken die richtig zwischen die Do-Loop Schleife zu packen. Entweder ruft er die 1 xmal auf oder sonst was.
By the way ich bin Newbie und benutze das Basic von Microstation

Danke für eure Hilfe
 
Probiers mal so:

Code:
If tb.recordFirst (sqlda) = MBE_Success Then
  Do while tb.recordNext (sqlda) = MBE_QueryNotFinished
    For i=1 to 5

      arrayzweidim(i,1) =""+(sqlda.value(0))+""
      arrayzweidim(i,2) =""+(sqlda.value(6))+""

    Next i
  Loop 
End If

Sollte so passen. Habs aber nicht getestet.
 
Danke für die schnelle Hilfe

Leider zeigt er mir auch mit diesem Code 5 mal das Gleiche an wenn ich es mir so ausgeben lasse

MbeMessageBox ""+arrayzweidim(i,1)+" "+arrayzweidim(i,2)+""

für das i setze ich logischerweise Zahlen zwischen 1 und 5 ein...
 
arrayzweidim(i,1) =""+(sqlda.value(0))+""
arrayzweidim(i,2) =""+(sqlda.value(6))+""


sqlda.value(6))

da übergibt er dem array ja auch immer das gleiche, ne? :-)
 
Er soll ja auch bei jeden Nächsten den er in der Tabelle findet jeweils den value0 un den valu6 ins Array speichern bis er keinen mehr findet. Es klappt leider nicht, das er einfach den nächsten Tabelleneintrag in das Array speichert...
 
If tb.recordFirst (sqlda) = MBE_Success Then
Do while tb.recordNext (sqlda) = MBE_QueryNotFinished
.
.
.
Loop

Hat niemand einen Tipp für mich wie ich aus jedem Durchlauf das dieses Stück dort oben sqlda.value(6) ausgibt, dass Ergebniss in in ein Array fortlaufend speichern kann? Ich bekomme ja jedesmal einen neuen Wert für sqlda.value(6) den möchte ich einfach nur jedes mal speichern....

Danke im vorraus für jeden Tipp bin absoluter Newbie und komme mom einfach nicht weiter...
 
Weiß zwar nicht was du da für Objekte benutzt, aber für mich sieht das so aus als ob du mit tb.recortNext zum nächsten Datensatz im Objekt tb weiterschaltest, aber sqlda, von dem du die Daten haben willst, immer noch auf dem ersten Satz steht.
 
Wenn ich zwischen dieses Do Loop einfach ein print ""+(sqlda.value(6))+"" setze gibt er mir brav alles aus was er findet ohne das etwas doppelt vorkommt oder sonstiges....Genau das möchte ich einfach in ein Array gepackt haben...

Was einfach nicht klappen will :mad:
 
Argh klar, jetzt seh ich woran das liegt:
Du hast zwei verschachtelte Schleifen!
Mach mal nen Testlauf auf Papier oder mit dem Debugger dann wirst es sehen ;)

Du schaltest in der äußeren Schleife die Datensätze weiter, speicherst dann mit der For-Schleife den aktuellen Satz aber in jeder Array-Position, damit wird das komplette Array bei jedem Durchlauf überschrieben.

Lösung: anstatt der For-Schleife einen Zähler verwenden.
 
If tb.recordFirst (sqlda) = MBE_Success Then
i=1
Do while tb.recordNext (sqlda) = MBE_QueryNotFinished

arrayzweidim(i,1) =""+(sqlda.value(0))+""
arrayzweidim(i,2) =""+(sqlda.value(6))+""

i=1+i
Loop
End If

Du meinst, dass das Ganze dann so aussieht? Da gibt es dann leider ein Speicherproblem...es sind ca. 5000 schleifendurchläufe.. :mad:
 
Zuletzt bearbeitet:
Zurück