Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Mykis am November 16, 2012, 12:45:37

Titel: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 16, 2012, 12:45:37
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
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Beaker s.a. am November 16, 2012, 13:47:27
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
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 16, 2012, 14:05:26
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
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: oma am November 16, 2012, 14:28:54
Hallo Frank,

mit EOF kannst du im Recordset des Formulars arbeiten!!

Gruß Oma
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 16, 2012, 14:44:08
Hallo Oma,

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

Frank
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: DF6GL am November 16, 2012, 15:57:44
Hallo,

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


Ansonsten:

Do Until rs.EOF
'tu was
rs.Movenext
Loop
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 16, 2012, 16:15:29


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!

Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: ebs17 am November 16, 2012, 16:40:16
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
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 16, 2012, 17:01:51
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
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: DF6GL am November 16, 2012, 18:07:12
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.

Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 16, 2012, 19:14:30
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
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: DF6GL am November 16, 2012, 19:53:29
Hallo,
an welcher Codezeile erscheint der Fehler?


Gibt es das Feld "Art-Nr" im Form "Zusammenfassung"  
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 16, 2012, 20:26:13
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.
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 16, 2012, 21:46:34
So sieht es aus.

[Anhang gelöscht durch Administrator]
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Beaker s.a. am November 16, 2012, 22:41:07
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
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 17, 2012, 10:16:46
Hallo,

nach stundenlangen Fehlversuchen mit "Do und Loop" ist mir noch die Methode "For Each und Next" eingefallen.
Wie müßte in meinem Fall der Code aussehen.
Entschuldigt, dass ich nerve, aber ich bin in VBA eher ein Leihe.

Beste Grüße
Frank
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: DF6GL am November 17, 2012, 10:51:43
Hallo,

das Problem liegt NICHT an den VBA-Schleifen-Methoden, es liegt an der Textfeld-Benamsung, bzw. daran , dass das Feld "Art-Nr" (btw:  Auf Sonderzeichen DRINGEND verzichten!!) nicht an die formularbasierte Tabelle gebunden ist, d.h. nicht in der Datenherkunft und damit auch nicht im Form-Recordset vorhanden ist...

Lad, wenn möglich, die DB (wenn nötig datenreduziert, komprimiert/repariert und gezippt) hier hoch.
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 17, 2012, 12:22:51
Hallo Franz,

vielen Dank für deine Geduld. Das komprimierte Programm mit reduzierten Daten und allen benötigen Ordnern und Datein ist gezippt 19 MB groß. Wenn du dennoch Interesse hast, kannst du es von meiner Hompeage downloaden.
http://www.tomentella.de/Pages/Mykis_brennen.zip (http://www.tomentella.de/Pages/Mykis_brennen.zip)
Zu besagter Stelle im Programm kommst du im Hauptmenü über Doppelklick "Datenaustausch/Gesamtliste der Funddaten" und dann Doppelklick auf eine Art-nr.

Beste Grüße
Frank
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: DF6GL am November 17, 2012, 12:59:49
Hallo,

sorry, aber ich habe keine Lust und Zeit, eine komplette Installation einer DB und Anpassung an unterschiedliche Laufwerke durchzuführen...

Sag mir, um welche DB-Datei  und um welche Formulare darin in bezug auf das Problem es sich handelt....
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 17, 2012, 13:08:26
Kann ich verstehen! Leider funktioniert das Programm nur im gesamten "Verbund".

Die Datenbank heißt Mykis.mdb, die entsprechenden Formulare: Zusammenfassung, Dialog_Artnamen_ändern

Übrigens "die Anpassung an unterschiedliche Laufwerke" würde das Programm automatisch beim ersten Start erledigen.

Frank
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: DF6GL am November 17, 2012, 13:37:20
Hallo,

der Name des Tabellenfeldes heißt nicht "art-nr" sondern "art_nr"


Private Sub Befehl1_Click()
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.Edit   ' zusätzlich erforderlich
recset![art_nr] = Forms!dialog_artnamen_ändern!Aart_nr
recset.Update ' zusätzlich erforderlich
recset.MoveNext
Loop


Befehl1_Click_Exit:
    Exit Sub

Befehl1_Click_Err:
    MsgBox Error$
    Resume Befehl1_Click_Exit

End Sub
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: Mykis am November 17, 2012, 14:21:05
Hallo Franz,

vielen Dank und compliments. Jetzt funktionierts.

Da Feld im Formular heißt art-nr, in der dahintersteheneden Abfrage allerdings art_nr. Das war wohl der Fehler bei recset!?

Beste Grüße
Frank
Titel: Re: in gefiltertem Formular Wert setzen
Beitrag von: DF6GL am November 17, 2012, 14:40:22
Hallo,

ja, das war der Fehler. Hatte ja geschrieben, dass das Recordset-Feld in der Datenherkunft des Forms vorhanden sein muss. Die Recordset-Felder beziehen sich NICHT auf (die Namen)  der Formular-Textfelder.