Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

in gefiltertem Formular Wert setzen

Begonnen von Mykis, November 16, 2012, 12:45:37

⏪ vorheriges - nächstes ⏩

Mykis

Hallo Fans,

in einem gefilterten Formular möchte ich Werte über ein Dialogformular ändern. Das funktioniert mit folgendem Code:  

"Do

Forms!Zusammenfassung![Art-Nr] = Forms!dialog_artnamen_ändern!Aart_nr
DoCmd.GoToRecord acForm, "Zusammenfassung", acNext

Loop"

Nun kommt aber am Ende die Meldung: "Sie können nicht zu den angegebenen Datensatz springen"

Was muß ich da noch einfügen um diese Meldung zu unterdrücken?
EOF kann man anscheinend nur in Tabellen und Abfragen benutzen.


Beste Grüße
Frank

Beaker s.a.

Hallo Frank,
Versuche
Do While Me.NewRecord = False
oder, falls Du gar nicht in Forms!Zusammenfassung
bist, ersetze Me durch eben diesen Formnamen.
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Mykis

Hallo Ekkehard,

vielen dank für diesen ersten Hinweis. Die Meldung kommt trotzdem noch!

ob So: Do While Me.NewRecord = False
oder so: Do While forms!Zusammenfassung.NewRecord = False

Gruß Frank

oma

Hallo Frank,

mit EOF kannst du im Recordset des Formulars arbeiten!!

Gruß Oma
nichts ist fertig!

Mykis

Hallo Oma,

wie müßte bei meinem Beispiel der Code mit EOF aussehen. Ich habe ohne Erfolg verschiedene Argumente mit EOF probiert.

Frank

DF6GL

Hallo,

zeige mal den kompletten Code, um zu verstehen, was Du überhaupt machen willst...


Ansonsten:

Do Until rs.EOF
'tu was
rs.Movenext
Loop

Mykis

#6


Private Sub Befehl1_Click()
On Error GoTo Befehl1_Click_Err
Dim recset As Recordset

Set rs = MykIS_Database.OpenRecordset("Zusammenfassung")
Do Until rs.EOF
Forms!Zusammenfassung![Art-Nr] = Forms!dialog_artnamen_ändern!Aart_nr
rs.MoveNext
Loop

Befehl1_Click_Exit:
   Exit Sub

Befehl1_Click_Err:
   MsgBox Error$
   Resume Befehl1_Click_Exit

End Sub


Bei diesem Code will er eine Abfrage oder Tabelle und nicht das gefilterete Formular!


ebs17

Do Until rs.EOF
   Forms!Zusammenfassung![Art-Nr] = Forms!dialog_artnamen_ändern!Aart_nr
   rs.MoveNext
Loop

Die Recordsetschleife hat mit den Formularen und deren Feldern überhaupt nichts zu tun.
Zudem gibt es pro Formular nur einen aktuellen Datensatz (der hier auch nicht geändert wird), also findet die gleiche Wertzuweisung wiederholt statt. Das sollte wohl nicht so sein, oder?

Allgemein: Statt Schleifen in einem Recordset oder gar in einem Formularrecordset zu drehen, könnte man einfach eine Abfrage ausführen. Der Formularfilter sollte ja bekannt oder nachvollziehbar sein. Somit kann man auch die Ausgangstabelle damit filtern und dann eine Aktualisierungsabfrage aufsetzen.


MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

Mykis

Nochmal mein Problem.

Ich filtere mit einem Dialogformular in einem Endlosformular in Tabellenansicht verschiedene Datensätze, die dann in einer Spalte alle die gleiche Art-ID (Art-nr) enthalten. Diese Art-ID soll durch einen im Dialogformular stehenden Wert (Aart_nr) für alle diese Datensätze automatisch geändert werden.

Gruß
Frank

DF6GL

#9
Hallo,

das hört sich sehr obscur an....    :o


Wie auch immer, etwa so:


Private Sub Befehl1_Click()   'Code im Form "dialog_artnamen_ändern"
On Error GoTo Befehl1_Click_Err
Dim recset As DAO.Recordset

Set recset= Forms!Zusammenfassung.Recordsetclone
If recset.Recordcount > 0 then recset.Movefirst
Do Until recset.EOF
recset![Art-Nr] = Me!Aart_nr
rs.MoveNext
Loop


'Evtl. Form aktualisieren
Set recset =Nothing

Befehl1_Click_Exit:
   Exit Sub

Befehl1_Click_Err:
   MsgBox Error$
   Resume Befehl1_Click_Exit

End Sub


oder mittels SQL:



Private Sub Befehl1_Click()
On Error GoTo Befehl1_Click_Err

Dim strSQl As String

sqlSQL="Update tblDeineTabelle set [Art-Nr] = '" & Me!Aart_nr & "'  Where [Art-Nr] = '" & Forms!dialog_artnamen_ändern![art_nr] & "'"

'wobei dieser Formverweis eher fehlerträchtig ist und besser eine genau mit der akt. [Art-Nr] definierte Variable (Filterkriteriumswert) zu verwenden wäre.
Currentdb.Execute strSQL, dbFailonError

' Evtl. Form aktualisieren

Befehl1_Click_Exit:
   Exit Sub

Befehl1_Click_Err:
   MsgBox Error$
   Resume Befehl1_Click_Exit

End Sub


Das Tabellenfeld "Art-Nr" ist vom Datentyp Text angenommen.


Mykis

Hallo Franz,


mein Wunsch scheint obscur, aber die Möglichkeit der Änderungen der Artnummer in diesem Formular sind wichtig.
Mit dem im begonnen Thema beschrieben kurzen Code läßt sich ja auch problemlos alles ändern. Wenn da die blöde Fehlermeldung an Ende nicht wär.

Mit deinem Code mache ich noch was falsch.  Es erscheint die Fehlermeldung "Element in dieser Auflistung nicht gefunden".


"Dim recset As DAO.Recordset

Set recset = Forms!Zusammenfassung.RecordsetClone
If recset.RecordCount > 0 Then recset.MoveFirst
Do Until recset.EOF
recset![Art-Nr] = Me.Aart_nr
recset.MoveNext
Loop

Set recset = Nothing"

Frank

DF6GL

Hallo,
an welcher Codezeile erscheint der Fehler?


Gibt es das Feld "Art-Nr" im Form "Zusammenfassung"  

Mykis

#12
Das Feld namens "Art-Nr" gibt es im Formular "Zusammenfassung" !

Es müßte die Zeile "recset![Art-Nr] = Forms!dialog_artnamen_ändern!Aart_nr". Er bleibt nicht im Debugmodus stehen und ich kann auch keine Einzelschritte machen.

Mykis

So sieht es aus.

[Anhang gelöscht durch Administrator]

Beaker s.a.

Hallo Frank,
ZitatDas Feld namens "Art-Nr" gibt es im Formular "Zusammenfassung"
Das ist nicht relevant, es muss in der Tabelle/Abfrage enthalten sein,
die dem Form zu Grunde liegt.
ZitatForms!dialog_artnamen_ändern!Aart_nr
Ist das das Kombifeld auf dem Form?
Vielleicht stimmt da die gebundene Spalte nicht.
ZitatEr bleibt nicht im Debugmodus stehen
Schalte mal Deine eigene Fehlerbehandlung aus, und lass
Dir den Fehler von Access anzeigen, dann kannst Du auch
in den Debug-Modus gehen und siehst in welcher Zeile der
Fehler ausgelöst wird.
Zitatkann auch keine Einzelschritte machen
Was heisst das? Das Du keine Haltepunkte setzen kannst?
Dann versuche mal am Anfang der Prozedur ein "Stop"
einzufügen
Private Sub Befehl1_Click()   'Code im Form "dialog_artnamen_ändern"
On Error GoTo Befehl1_Click_Err
Dim recset As DAO.Recordset
Stop
Set recset= Forms!Zusammenfassung.Recordsetclone
.
.

hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)