PDA

Vollständige Version anzeigen : Alle DS in UForm durchlaufen


Julietta
24.03.2004, 09:18
Hallo,
Ich zähle in einem UForm alle DS ( Anzahl PC's, die einem Mitarbeiter zugeordnet sind).

Dann möchte ich gerne eine Do Until Schleife programmieren, die bei jedem PC die Kostenstelle ändert.

Ich habs schon probiert und zwar so:

'>> Die Hardware bekommt auch die neue Kostenstelle, der User bleibt eingetragen

i = 0
int_hwpruef = Forms![frm_MA].[frm_MA_sfr_HW].Form.RecordsetClone.RecordCount

Forms![frm_MA].[frm_MA_sfr_HW].SetFocus
DoCmd.GoToRecord , , acFirst

Do Until i = int_hwpruef

lng_hardwareid = Forms![frm_MA].[frm_MA_sfr_HW].Form![HardwareID]

DoCmd.RunSQL "UPDATE tblHardware " _
& "Set KoSt = " & lng_kostneu & "" _
& "WHERE (HardwareID = " & lng_hardwareid & ")"


If i < int_hwpruef Then
DoCmd.GoToRecord , , acNext
End If
i = i + 1
Loop

Nun tritt aber ein Fehler auf und zwar im ersten Durchlauf der Schleife sagt Access, es könne nicht in den nächsten Datensatz springen und stoppt bei DoCmd.GoToRecord,,acNext
Das Formular enthält 2 Datensätze.
Im Debugger- Modus werden haben die Variablen folgende Werte:
i = 0
int_hwpruef = 2 (Anzahl der DS in UForm)
acFirst = 2
acNext = 1

Ich hoffe, mir kann jemand helfen, die Variableninhalte sollen nicht verwirren, nur zu Info, falls sie weiterhelfen.
Vielen Dank
Julia

stpimi
24.03.2004, 09:26
Warum nicht mit einer Aktualisierungsabfrage?

Mfg, Michael

Julietta
24.03.2004, 09:51
ja, warum eigentlich nicht? :top:
geht viel schneller, viel weniger Code und funktioniert auch noch..
das mit dem acNext läßt mich zwar noch nicht ganz in Ruhe..
aber man muß ja nicht alles wissen..
Vielen Dank für den Denkanstoß!
Julia