Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Schleife mit Kriterium

Begonnen von Rainer 1984, März 04, 2015, 16:21:47

⏪ vorheriges - nächstes ⏩

Rainer 1984

Hallo Forumler,

ich benutze einen Code, der mir im U-Formular "frm_Anschr" immer im letzten Datensatz ein Häckchen in die "Anschr_Guelt"-Checkbox setzt. Hier gut zu sehen:        With Me!frm_Anschr.Form.Recordset.Clone
          Do While Not .EOF
             .Edit
             !Anschr_Guelt = False
             .Update
             .MoveNext
          Loop
          .MoveLast
          .Edit
          !Anschr_Guelt = True
          .Update
       End With

Damit wird mir der Datensatz mit der gültigen Anschrift angezeigt.

Jetzt kommt erschwerend dazu: Ich habe in das U-Formular ein zusätzliches Kombifeld eingefügt mit dem Namen "Anschr_AnschrArt". Hier wähle ich aus, ob es sich um eine Lieferanschrift (ID=1) oder Rechnungsanschrift (ID=2) handelt. Um dieses zusätzliche Kriterium versehen sollen mir jetzt also in 2 Checkboxen der jeweils letzte Datensatz angezeigt werden. Also der jeweils letzte Datensatz mit dem Kriterium "Lieferanschrift" und "Rechnungsanschrift".

Viele Grüße

Rainer

MzKlMu

Hallo,
Schleifen sind in einer Datenbank meist überflüssig, das erledigt eine Aktualisierungsabfrage kurz und schmerzlos.
Außerdem hat der von Dir verwendete Code noch den Haken, dass er nicht zuverlässig den letzten Datensatz erkennt. Die Daten einer Tabelle sind nicht zwangsläufig in der gleichen Reihenfolge bzw. richten sich nach der Sortierung des Primärschlüssels.

Es stellt sich also erst mal die Frage, wie definiert sich der letzte Datensatz, der mit der höchsten ID, der mit dem neuesten Datum ?

Wenn es so was gibt, ist das Markieren ohnehin überflüssig, weil sich der betreffende Datensatz jederzeit ermitteln lässt. Mit DLookup() z.B.
Gruß Klaus

Rainer 1984

Hallo Klaus,

der letzte Datensatz definiert sich nach der höchsten ID.
Die Markierung benötige ich auf jeden Fall weiterhin, da ich es auf einen Blick sehen möchte.

Ich bin zwar bis jetzt "gut gefahren" mit meinem gepostetem Code, bin jedoch auch bereit, was neues auszuprobieren. Wie würde eine Alternative aussehen?

Danke und Gruß

Rainer

MaggieMay

Hi,
ZitatAlso der jeweils letzte Datensatz mit dem Kriterium "Lieferanschrift" und "Rechnungsanschrift".
das heißt, du möchtest das Häkchen in zwei verschiedenen "letzten" Datensätzen sehen?

Ohne Schleife ginge das mit einer Aktualisierungsabfrage:
CurrentDB.Execute "Update tabelle Set Anschr_Guelt=(ID=DMax(""ID"",""tabelle"",""Anschr_AnschrArt="" & Anschr_AnschrArt))", dbFailOnError
Me.Refresh


Oder muss dabei auch noch eine evtl. vorhandene Filterung des Formulars berücksichtigt werden?
Freundliche Grüße
MaggieMay

Rainer 1984

#4
Hallo MaggieMay,

ich bekomme jetzt folgende Meldung: Laufzeitfehler '3075': Fehlt
Hier der von mir angepasste Code:CurrentDB.Execute "Update tbl_Anschr Set Anschr_Guelt=(Anschr_ID=DMax(""Anschr_ID"",""tbl_Anschr"",""Anschr_AnschrArt="" & Anschr_AnschrArt))", dbFailOnError
Me.Refresh


Ich hoffe, ich habe den Code richtig aufgebaut. Wieso erhalte ich dann die Fehlermeldung?

Viele Grüße

Rainer

MaggieMay

Ich zeige dir mal an einem Minimal-Beispiel wie ich es verstanden habe und wie es funktioniert.

Vielleicht erkennst du ja den Unterschied zu deiner Lösung.
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

das ist genau das, was ich gesucht habe. Für den Fall der Fälle funktioniert Deine Lösung sogar mit mehr als 2 Kriterien!  ;)

Übrigens kam vorhin die Fehlermeldung deshalb, weil versehentlich wegen der Herumprobiererei keine Daten (also 1 oder 2) in "Anschr_AnschrArt" waren.

Tausend Dank!  :)

Viele Grüße

Rainer


MaggieMay

Hallo,
Zitatweil versehentlich wegen der Herumprobiererei keine Daten (also 1 oder 2) in "Anschr_AnschrArt" waren
wenn das vorkommen kann, kannst du dich mit Einsatz der NZ-Funktion vor dem Fehler schützen:
CurrentDB.Execute "Update tbl_Anschr Set Anschr_Guelt=(Anschr_ID=DMax(""Anschr_ID"",""tbl_Anschr"",""Anschr_AnschrArt="" & NZ(Anschr_AnschrArt,0)))", dbFailOnError
Me.Refresh
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

Danke für den Tipp, werde ich mit einbauen.

Viele Grüße

Rainer

Rainer 1984

Hallo MaggieMay,

ich muss das Thema leider nochmal aktivieren. Mir ist vorhin beim Zurückblättern im H-Formular aufgefallen, dass nur im letzten Datensatz des H-Formulars Häckchen in den aktuellen Checkboxen des U-Formulars vorhanden sind. In allen vorhergehenden H-Formular-Datensätzen sind überhaupt keine Häckchen drin. Es werden also nur die "absolut" letzten Datensätze mit Häckchen versehen, ohne Bezug zum Hauptformular. Ich habe im 1. Beitrag versehentlich nichts von einem H-Formular erwähnt, nur von einem U-Formular.

Viele Grüße

Rainer

MaggieMay

Dann liegt es jetzt wohl an dir, mal eine Beispiel-DB hochzuladen, an der man sich die reale Konstellation anschauen kann.
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

ich habe mal Deine Datei um das H-Formular "frm_Knd" und dessen Tabelle "tbl_Knd" erweitert und unten beigefügt.

Viele Grüße

Rainer

MaggieMay

Hi,

wenn du den letzten Eintrag pro Kind markieren willst, musst du die Knd_ID noch mit in das Kriterium nehmen.
So sollte das klappen:

Private Sub Form_Current()
    Dim strSQL As String
    strSQL = "Update tbl_Anschr Set Anschr_Guelt=(Anschr_ID=" & _
                    "DMax(""Anschr_ID"",""tbl_Anschr""," & _
                    """Anschr_AnschrArt="" & NZ(Anschr_AnschrArt,0) & "" AND Anschr_Knd_IDRef=" & Me.Parent.Knd_ID & """))"
    CurrentDb.Execute strSQL, dbFailOnError
End Sub
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

soweit wäre das okay. Mir ist jedoch noch aufgefallen, dass die Häckchen nicht "fest" fixiert werden, wie das bei meinem Code im 1. Beitrag geschieht.
Bei Deinem Code werden die Häckchen im zuletzt angeschauten H-Formular-Datensatz gesetzt. Schaue ich einen anderen Datensatz an, "wandern" die Häckchen zu diesem hin. Habe versucht dies zu ändern, klappt aber nicht.

Viele Grüße

Rainer

MaggieMay

#14
ZitatSchaue ich einen anderen Datensatz an, "wandern" die Häckchen zu diesem hin.
Ich verstehe nicht was du damit meinst, wer oder was wandert wohin?

ZitatHabe versucht dies zu ändern, klappt aber nicht.
Was genau hast du wie versucht und mit welchem Ergebnis?
Freundliche Grüße
MaggieMay