Hallo Acces-O-Maniacs,
gerne würde ich ein Datensatz aus meinem UFO (frm_Con, tbl_Con) mit dem aktuellen Datensatz im HF (frm_OP, tbl_OP) verknüpfen.
Die ID's sind über eine Zwischentabelle (tbl_OP_CON) mit einander verknüpft.
Das UFO wird dargestellt mit 36 Datensätzen mit den Spalten CON_ID, CON, Betrifft (Ja/Nein), Erledigt (Ja/Nein).
Jetzt möchte ich, dass wenn das JA/Nein Feld [Betrifft] im UFO angehakt wird der Datensatz aus dem HF (z.Bspl. 123) mit dem Datensatz aus dem UFO (z.Bspl. 5) in der Zwischentabelle gespeichert wird, sodass beim erneuten aufrufen das Datensatzes 123 das UFO den Datensatz 5 mit dem Haken bei dem Feld [Betrifft] zeigt.
=> tbl_OP_CON (ID_OP mit Wert 123, ID_CON mit Wert 5
mit einem Listenfeld bekomme ich es hin, aber ich möchte gerne etwas mit "Hakensetzen" haben.
Bei der Lösung mit dem Listenfeld sind folgende Ereignisse hinterlegt:
Beim laden des Formulars:
Private Sub Form_Current()
Dim I As Long, rs As DAO.Recordset
With Me!lst_Con
If Not IsNull(Me!ID_OP) Then
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_OP_CON WHERE ID_OP = " & Me!ID_OP, dbOpenSnapshot)
For I = 0 To .ListCount - 1
rs.FindFirst "ID_CON = " & Nz(.Column(0, I), -1)
'Debug.Print .Column(1, I), RS.NoMatch
.Selected(I) = Not rs.NoMatch
Next I
rs.Close
Else
For I = 0 To .ListCount - 1
.Selected(I) = False
Next I
End If
Me!lst_Con.Requery
End With
End Sub
Beim klicken auf dem Listenfeld:
Private Sub lst_Con_Click()
Dim I As Long, rs As DAO.Recordset
With Me!lst_Con
If Not IsNull(Me!ID_OP) Then
CurrentDb.Execute "DELETE FROM tbl_OP_CON WHERE ID_OP = " & Me!ID_OP
Set rs = CurrentDb.OpenRecordset("tbl_OP_CON", dbOpenDynaset)
For I = 0 To .ListCount - 1
If .Selected(I) Then
rs.AddNew
rs!ID_Con = Nz(.Column(0, I), -1)
rs!ID_OP = Me!ID_OP
rs.Update
End If
Me!lst_Con.Requery
Next I
rs.Close
End If
End With
End Sub
Es müsste doch so etwas sein wie
Wenn Ja/Nein-Feld [Betrifft] in UFO = "wahr" dann erzeuge ein neuen Datensatz in tbl_OP_CON (ID_OP; ID;CON) mit ID_OP aus HF und ID_CON aus UFO.
Wenn Ja/Nein-Feld [Betrifft] im UFO = "falsch" dann lösche den Datensatz aus der
tbl_OP_CON mit ID_OP aus HF und ID_CON aus UFO, falls vorhanden.
Leider weiss ich nicht wie ich das VBA/DB technisch umsetzen kann/soll.
Bin für jede Hilfe / Anregung dankbar.
Gruss
Atuatuca
Hallo,
was ist denn hiermit: http://www.access-o-mania.de/forum/index.php?topic=21071.0 ??
Wenn Du auf Deiner unsinnigen Konstruktion sitzen bleibst, wird das nix.
Und: das Pferd ist nicht von hinten aufzuzäumen....
Ich sag's nochmal: Bevor Du Gedanken an Formulare und Aktualisierungen verschwendest, MUSS die Tabellenkonstruktion stimmen, soll heißen , Deine Datensituation entspr. den Normalisierungsregeln (siehe u. st. Links 1 und 1a) korrekt widerspiegeln.
Zu Deiner Frage:
HFo Und UFo werden dadurch miteinander verknüpft, als dass die Eigenschaften des UFO-Steuerelementes "Verknüpfen von/nach" auf die richtigen Schlüsselfelder gesetzt werden.
Zudem ist die FAQ von www.donkarl.com als Nachschlagewerk angeraten.
Hallo Franz,
dass sind 2 paar Schuh. Den anderen Thread von mir hat nichts mit meinem jetzigem Problem zu tun. Mehrere Felder gleichzeitig ändern ist in meinem Fall eine Komfortfunktion. Diese werde ich zur gegebene Zeit anpacken. Habe dort gerade Screenshot von den DB-Beziehungen eingestellt. Vielleicht könnte man die tbl_ZUG_AOC weglassen. Zug und AOC ergeben ein CON-Nr.
ZitatHFo Und UFo werden dadurch miteinander verknüpft, als dass die Eingenschaften des UFO-Steuerelementes "Verknüpfen von/nach" auf die richtigen Schlüsselfelder gesetzt werden.
Ist mir klar und habe ich auch so realisiert. Die ID's (HF und UFO) werden in eine separaten Tabelle gespeichert.
Habe gerade eine DB bgzl. o.g. Thema hochgeladen.
Gruss
Atuatuca
Hallo,
Zitatdass sind 2 paar Schuh.
nein, das stimmt nicht. Es handelt sich doch um die gleiche Db, oder nicht?