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 MaggieMay,

damit meine ich, dass die Häckchen nicht fixiert werden. Hier das Beispiel meiner gestern hochgeladenen Datenbank:
Wenn ich im H-Formular frm_Knd den Datensatz 1 auswähle uns wieder schliesse, sind die Anschr_Guelt-Häckchen hinter Anschr_Knd_IDRef 1 zu finden, die Häckchen hinter Anschr_Knd_IDRef 2 sind dann nicht mehr vorhanden.

Genauso verhält es sich umgekehrt:
Wenn ich im H-Formular frm_Knd den Datensatz 2 auswähle uns wieder schliesse, sind die Anschr_Guelt-Häckchen hinter Anschr_Knd_IDRef 2 zu finden, die Häckchen hinter Anschr_Knd_IDRef 1 sind dann nicht mehr vorhanden.

Es müssten aber unter Anschr_Guelt ALLE Häckchen (aktuell also 4 Stück) fest bestehen bleiben.

Man sieht es auch in der Tabelle tbl_Anschr. Es sind, unabhängig, wieviele H-Formular-Datensätze bestehen, nur 2 Anschr_Guelt-Häckchen drin.

Viele Grüße

Rainer

MaggieMay

In die Tabelle solltest du eigentlich gar nicht schauen und im Formular wird es immer korrekt angezeigt. Wozu brauchst du die permanente Speicherung?

Ich dachte, es sollte nur eine optische Hilfe im Formular sein.
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

die benötige ich zusätzlich für eine Abfrage.
Die Häckchen müssen permanent sein.

Viele Grüße

Rainer

MaggieMay

Dann musst du nicht die Kind-ID aus dem Formular nehmen, sondern ebenso wie bei der AnschrArt die aus der Tabelle.

    strSQL = "Update tbl_Anschr Set Anschr_Guelt=(Anschr_ID=" & _
                    "DMax(""Anschr_ID"",""tbl_Anschr""," & _
                    """Anschr_AnschrArt="" & NZ(Anschr_AnschrArt,0) & "" AND Anschr_Knd_IDRef="" & NZ(Anschr_Knd_IDRef,0) ))"
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

ich habe dem Anhang nochmal die Accessdatei beigefügt, in die ich Deinem letzten Code eingesetzt habe. Irgendetwas funktioniert nicht richtig, es wird jetzt überhaupt kein Häckchen gesetzt. Irgendwas mache ich falsch.

Viele Grüße

Rainer

MaggieMay

Sorry, aber ich habe dir lediglich die geänderte Zusammensetzung des SQL-Strings gezeigt, der Rest der Prozedur muss natürlich bleiben wie er war.
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

leider werden wieder nur im letzten H-Formular-Datensatz die Häckchen gesetzt. Anbei der komplette Code:

Private Sub Form_Current()

CurrentDb.Execute "Update tbl_Anschr Set Anschr_Guelt=(Anschr_ID=DMax(""Anschr_ID"",""tbl_Anschr"",""Anschr_AnschrArt="" & NZ(Anschr_AnschrArt,0)))", dbFailOnError

strSQL = "Update tbl_Anschr Set Anschr_Guelt=(Anschr_ID=" & _
         "DMax(""Anschr_ID"",""tbl_Anschr""," & _
         """Anschr_AnschrArt="" & NZ(Anschr_AnschrArt,0) & "" AND Anschr_Knd_IDRef="" & NZ(Anschr_Knd_IDRef,0)))"

End Sub


Viele Grüße

Rainer

MaggieMay

Was denkst du denn wohl, was der von dir gezeigte Code macht und wozu die Variable und die Stringzuweisung zu gebrauchen sind?  ::)

So sollte es schließlich 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="" & NZ(Anschr_Knd_IDRef,0) ))"
    CurrentDb.Execute strSQL,  dbFailOnError
    Me.Refresh
End Sub
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

jawohl, jetzt klappt es.
Da sieht man, es liegt noch ein weiter Weg vor mir ...  ;)

Nochmals: VIELEN DANK!

Viele Grüße

Rainer

Rainer 1984

Hallo MaggieMay,

es ist kurios:  Unter bestimmten Umständen verschwindet das Häkchen leider doch.

Das habe ich gemacht: Ich habe in meine gesamte Datenbank Deinen Code an alle entsprechenden Stellen eingebaut. Unter anderem auch in andere U-Formulare, die in mehreren H-Formularen vorkommen (das von mir gepostete Beispiel handelte von einem U-Formular, das nur in einem einzigen H-Formular vorkommt).

Das ist mir aufgefallen: Öffne ich nun ein solches H-Formular, das sich mit anderen H-Formularen ein U-Formular teilt, werden die Häkchen in eben dieses gesetzt und aus den anderen H-Formularen entfernt. Man sieht es deutlich, wenn man das U-Formular frm_Anschr öffnet. An der Position der Häkchen sieht man, welches H-Formular eben geöffnet wurde.

Exemplarisch habe ich die bereits gepostete Datenbank um 2 H-Formulare erweitert und beigefügt.

Viele Grüße

Rainer

MaggieMay

Hallo Rainer,

nun verstehe ich bald gar nichts mehr. Was ist der Sinn dahinter, mehrere Formulare dieser Art nebeneinander zu öffnen und mehrere Kopien der tbl_Kind zu pflegen?
Ich fürchte, hier liegt ein entscheidender Denkfehler vor.
Freundliche Grüße
MaggieMay

Rainer 1984

Hallo MaggieMay,

es ist nur so, dass manche U-Formulare in mehreren H-Formularen vorkommen. Die H-Formulare öffne ich nicht gleichzeitig. Aber wenn ich eins öffne, "verschwinden" die Häkchen aus den anderen H-Formularen.

Mein zuerst verwendeter Code (siehe auch 1. Beitrag dieses Themas)
       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

verursachte dieses "Verschwinden" der Häkchen nicht. Ich habe keine Ahnung, warum dies jetzt geschieht.

Viele Grüße

Rainer

MaggieMay

Das hilft jetzt nicht wirklich, vermutlich sieht die Realität völlig anders aus als das hier vorgestellte, eher banale Beispiel.

Mehrere Unterformulare kommen mit derselben Datenbasis in mehreren Hauptformularen vor.
Wenn dies nicht gleichzeitig passieren würde, hättest du diesen Effekt ja nicht bemerkt. Wozu das ganze dienen soll, müsstest du erstmal erklären.

Wenn du meine diesbezüglichen Fragen nicht beantworten willst, war's das für mich.

ZitatMein zuerst verwendeter Code (siehe auch 1. Beitrag dieses Themas)
[...]verursachte dieses "Verschwinden" der Häkchen nicht
es galten zu dem Zeitpunkt ja auch noch ganz andere Voraussetzungen.
Freundliche Grüße
MaggieMay

Rainer 1984

#28
Hallo MaggieMay,

ich versuche es zu erklären: Ich habe H-Formulare und U-Formulare. Manche dieser U-Formulare (z.B. frm_Anschr) sind in mehreren H-Formularen vertreten. Das macht m.E. Sinn, da man z.B. für frm_Anschr (also Anschriften) somit nicht 3 gleich aufgebaute U-Formulare (natürlich mit verschiedenen Namen) nehmen muss.

Das U-Formular frm_Anschr ist, wie einige andere U-Formulare auch, mit einer Gültigkeits-Checkbox (hier: Anschr_Guelt) versehen. Diese Checkbox zeigt mir in jedem H-Formular-Datensatz die jeweils aktuellste Anschrift an. Somit habe ich auf einen Blick eine Historie. Außerdem werden über Abfragen an ganz anderen Stellen der Datenbank die aktuellsten Anschriftdaten entweder in Textfeldern als Info angezeigt oder in Kombifeldern zur Auswahl angezeigt. Das hat problemlos mit dem gestern Abend zuletzt gepostetem Code funktioniert. Im Anhang befindet sich so eine Beispieldatei mit diesem Code.

Dann habe ich am 03.03.2015 die entsprechenden U-Formulare um ein Kriterium erweitert, nämlich um das Kombifeld Anschr_AnschrArt, in dem ich "Lieferanschrift" oder "Rechnungsanschrift" (in geposteter Beispiel-DB als 1 oder 2 auswählbar) auswählen kann.

Und hier hat dann mein Problem angefangen, da ich jetzt einmal von der Lieferanschrift und von der Rechnungsanschrift die jeweils aktuellsten Datensätze in der Combibox angezeigt haben wollte.

Dann habe ich mich am 04.03.2015 an dieses Forum gewandt. Deine gepostete Lösung hat auch super funktioniert, nur ist mir zunächst nicht aufgefallen, dass dies für die Kombination 1 U-Formular + 1 H-Formular gilt. Mir ist erst aufgefallen, dass Dein Code für die Kombination 1 U-Formular + mehrere H-Formulare nicht funktioniert, als ich in einem Kombifeld an anderer Stelle der DB ein leeres Feld hatte. Wenn ich das gewusst hätte, hätte ich von Anfang an eine ausführlichere Datenbank gepostet (wie ich dies leider erst gestern Abend getan habe), die genau das Beispiel 1 U-Formular und mehrere H-Formulare zeigt.

Wie gesagt, im Anhang befindet sich eine Beispiel-DB mit altem Code (also ohne Kriterien), der aber die Häkchen korrekt setzt. Es wäre toll, wenn das Dein Code unter Berücksichtigung der genannten Kriterien hinbekommen könnte.

Viele Grüße

Rainer

Rainer 1984

Hallo MaggieMay,

hattest Du schon Gelegenheit einen Blick auf meinen letzten Beitrag zu werfen?
Ich hoffe, ich konnte Dir damit weiterhelfen. Bitte melde Dich bei Unklarhaiten - Danke.

Viele Grüße

Rainer