Hallo Matthias,
mein Newsreader macht bei Antworten auf deine Mails keine
Einrückungen mit "> ", muss ich immer von Hand machen, aber ich kenn
mich damit auch nicht aus,
Post by Dietmar ThesingIch weiß jetzt nicht, ob ich dich überhaupt verstehe.
Vielleicht besser, wenn du die Tabellen bzw. besser Abfragen mit den
wichtigsten Feldern mal nennst. Also einfach die SQL-Strings
posten.
HF: SELECT Film.ID, Film.Titel, Film.Bemerkung, Genre.Bezeichnung AS
Genre_Bezeichnung, Film.Produktionsjahr, Film.Länge,
Land.Bezeichnung
AS Land_Bezeichnung, Film.Bewertung, Film.Bild FROM Land INNER JOIN
(Genre INNER JOIN Film ON Genre.ID=Film.Genre_ID) ON
Land.ID=Film.Produktionsland_ID;
UF: SELECT Schauspieler.ID, Schauspieler.Vorname, Schauspieler.Name,
Schauspieler.Geschlecht, Schauspieler.Geburtstag,
Schauspieler.Geburtsland, Schauspieler.tot, spielt_mit.Film_ID FROM
Schauspieler INNER JOIN spielt_mit ON
Schauspieler.ID=spielt_mit.Schauspieler_ID;"
Scheint mir auf den ersten Blick fast in Ordnung so. Auf jeden Fall
solltest du das Feld Name umbenennen in Nachname, weil "Name" ein
reserviertes Wort ist und zu Problemen führen wird.
" > Aber ich versuche mal: also im HF (Einzelformular) steht nur der
Post by Dietmar ThesingFilm, mit den eindeutig zum Film gehörenden Daten.
(tblFilme, Felder FilmID, txtFilmTitel etc).
Im UF als Datengrundlage die Verbindungstabelle und die Tabelle mit
den Schauspielern (tblSchauspieler mit Feldern txtNachname,
txtVorname etc.
Wenn die schon zugeordnet sind, dann brauchst du doch kein
Listenfeld, sondern hast die Liste im Unterformular (muss dann
natürlich auf Endlosformular oder Datenblatt eingestellt sein).
Hast du richtig verstanden!
UF ist ein Datenblatt.
Post by Dietmar ThesingWenn du jetzt zusätzlich Schauspieler eintragen willst, die in der
Liste der Schauspieler (tlb Schauspieler) zwar schon vorhanden
sind,
aber noch nicht dem neuen Film zugeordnet wurden, dann würde ich da
das Feld SchauspielerID aus der *Verbindungstabelle* reinnehmen (aus
der Feldliste in den Entwurf ziehen), und dann als
Kombinationsfeld
(rechte Maustaste, ändern zu Kombinationsfeld) benutzen.
Datenherkunft ist dann eine Abfrage auf die tblSchauspieler,
sortiert aufsteigend nach ihren Nachnamen und Vornamen.
Steuerelementinhalt ist dann die SchauspielerID aus der
Verbindungstabelle.
Diese Kombifeld kann ich dann aber nur in das UF setzen, oder? Und
da
habe ich ja ein Datenblatt..."
Ja, das kommt dann natürlich in das UF, und das geht auch in der
Datenblattansicht. Ich nehme die nie, aber hab`s grad angekuckt, das
klappt auch in der Datenblattansicht. Der Nach-Unten-Pfeil vom
Kombifeld ist allerdings nur dann zu sehen, wenn das Feld den Fokus
hat.
"> Ich mach dann oft noch als Ereignis bei Änderung ein
Post by Dietmar ThesingMe.ActiveControl.dropdown rein. Dann klappt die Liste auf, wenn der
erste Buchstabe des Nachnamens eingetippt wird. Und dann noch ein
Ereignis BeiNichtInListe.
welches Ereignis dann BeiNichtInListe?"
Angenommen das Kombifeld enthält 3 Spalten, ID, Nachname, Vorname.
Die erste Spalte ist die gebundene Spalte, Spaltenbreite 0cm (Alles
in den Eigenschaften des Kombifeldes einzustellen).
Dann unter Ereignis einfach [Ereignisprozedur] auswählen, die drei
Pünktchen hinter "Bei NIcht in Liste" anklicken, dann ist die erste
und letzte Zeile schon da. (Ich weiß nicht, wie viel du schon an
VBA-Kenntnissen hast)
z.B. ohne Fehlerbehandlung als ungetesteter Luftcode, wenn der
Steuerelementname (! - ich nehme nie den von Access eingetragenen
Feldnamen aus der Datenquelle, weil das zu Verwechslungen führen
kann) cmbID heißt:
Private Sub cmbID_NotInList(NewData As String, Response As Integer)
Dim db As DAO.Database
Dim rst As Recordset
Dim strEing As String
Dim strVorn As String
If MsgBox("Soll der neue Schauspieler >> " & NewData & "<< der
Liste hinzugefügt werden?", vbYesNo + vbQuestion, "Die Quelle ist
noch nicht in der Liste vorhanden") = vbNo Then
MsgBox "Der Schauspieler ist nicht in die Liste aufgenommen
worden", vbExclamation, "Fehlermeldung"
Response = acDataErrContinue
Else
Set db = CurrentDb()
Set rst = db.OpenRecordset("Schauspieler")
strVorn = InputBox("Bitte Vornamen eingeben",
"Eingabeaufforderung")
rst.AddNew
rst!Nachname = NewData
rst!Vorname = strVorn
rst.Update
rst.Close
Response = acDataErrAdded
set rst = Nothing
set db = Nothing
End If
End Sub
Du könntest natürlich auch noch gleich nach den anderen Daten fragen
und sie hinzufügen. Oder stattdessen ein Formular öffnen, in dem die
Schauspieler eingetragen werden, mit allen notwendigen Daten.
HTH
Dietmar