Hallo,
Ich habe wohl mal wieder einen Denkfehler und würde gerne wissen wo er liegt.
Also ich besitze ein Formular mit einer Abfrage und mehrere Tabellen.
Nun füge ich den Wert einer verlinkten Tabelle über ein PullDown Menü ein. Nun möchte ich aber dieses PullDown Menü über den Wert einer anderen Tabelle beeinflussen.
Dazu habe ich in beiden Tabellen in der jeweiligen Spalte mit der Eigenschaft Zahl einen gleichen Wert.
Somit wenn ich die auswahl der Tabelle 1 ist, darf mir das Pulldown Menü nur seine werte mit dem internen Spaltenwert 1 beträgt.
Dies wollte ich dadurch gewährleisten, in dem ich bei dem Kriterium des Wertes der PullDown Tabelle die spalte der tabelle eingetrage habe, die den wert vorgeben soll.
Nun bekomme ich zwar keine fehlermeldung. Dennoch zeigt mir das pulldown menü immer noch alle werte der tabelle an...
Wo liegt also mein denkfehler.
Die Problembeschreibung ist sehr abstrakt. Somit ist es nicht einfach, den konkreten Punkt zu identifizieren, an dem dein Denkfehler liegt.
Ich vermute, dass dein DropDown im Formular Werte Abhängig vom jeweils aktuellen Datensatz im Formular anzeigen soll.
Dann liegt der Denkfehler darin, dass du dich in der Abfrage für das DropDown nicht auf das Formular beziehst, sondern auf die Tabelle. - Eine Tabelle enthält aber alle Werte, somit werden auch die Daten in deinem DropDown nicht eingeschränkt.
Hallo Benny,
Bin nicht sicher, aber damit sollte es gehen
Me.DeinKombi.RowSource = _
"SELECT VT.WertFeldEinerVerlinktenTabelle, weitereFelder " _
& "FROM VerlinkteTabelle As VT " _
& "INNER JOIN Tabelle1 As T1 " _
& "ON VT.WertFeldEinerVerlinktenTabelle = T1.VergleichsFeld"
gruss ekkehard
Hi, wo soll ich den code den eintragen?
Hab den nun "Beim klicken" eingesetzt.
Es kommt keine Fehlermeldung.
Aber die Funktion ist dabei nicht gegeben.
Hallo Benny,
Es ist halt schwierig Lösungen anzubieten mit Informationen wie "Tabelle 1",
"eine verlinkte Tabelle" und "eine andere Tabelle", und man die DB auch
nicht kennt.
Wenn ich nochmal so drüber nachdenke, sollte mein SQL-String auch in
diesem Zusammenhang nicht der richtige zu sein. Normal bezieht man
sich bei abhängigen Kombifeldern einfach auf das Auswahlfeld.
Private Sub AuswahlFeld_AfterUpdate()
Me.DeinKombi.RowSource = _
"SELECT ID, weitereFelder " _
& "FROM Tabelle " _
& "WHERE ID = " & Me.AuswahlFeld
End Sub
Du müsstest die Zusammenhänge näher erklären; entweder an Hand des
Beziehungsfensters oder hochladen der DB.
gruss ekkehard
Bin aktuell beim Osteressen. Versuch falls ich weitere probleme habe mal direkte am pc und nicht über handy alles zu beschreiben. Danke dir/euch für die hilfe jetzt schon.
Ok aktuelle Voraussetzungen:
Haupttabelle tblAnwendung
Spalten in dieser Tabelle: ID, fkVorname, fkNachname, fkStaße, fkStraßennummer, fkPLZ, fkOrt, fkPrio, fkMaterial etc.
Nebentabellen (mit den Spalten (Eigenschaft)): tblVorname (idVorname (AutoWert) & Vorname (Text)), tblNachname (idNachname (AutoWert) & Nachname (Text)), tblStraße (idStraße (AutoWert) & Straße (Text)), tblStraßenummer (idStraßennummer (AutoWert) & Straßennummer (Text), tblPLZ (idPLZ (AutoWert) & PLZ (Zahl)), tblOrt (idOrt (AutoWert) & Ort (Text)), tblPrio (idPrio (AutoWert) & Prio (Text)), tblMaterial (idMaterial (AutoWert), MaterialPrioFilter (Zahl) und Material (Text)) etc.
Verbindungen in der Abfrage (qryAbfrage):
fkVorname mit idVorname
fkNachname mit idNachname
fkStraße mit idStraße
fkStraßennummer mit idStraßennummer
fkPLZ mit idPLZ
fkOrt mit idOrt
fkPrio mit idPrio
fkMaterial mit idMaterial
Alles wird über das Formular (frmAnwendung) dargestellt.
Jedes Wert kann manuell eingeben werden und dann über ein PullDown Menue ebenfalls eingetragen werden.
Nun setze ich den Wert (idPrio) über ein Pulldown Menue (PullDownPrio).
Möchte jedoch das nun der Wert (idPrio), der sich ja in der Spalte (fkPrio) steht, über die Spalte (fkPrio) als Kriterium für das PullDown-Menue Material (PullDownMaterial), für die Zeile "MaterialPrioFilter" verwendet wird.
Also setze ich die Priorität auf 1 möchte ich nur Material angezeigt bekommen, die im MaterialPrioFilter den Wert 1 besitzen.
Hallo,
der Tabellenaufbau ist übertrieben normalisiert und praxisfremd.
Vorname, Nachname, Ort und Anschrift gehören in eine Tabelle. Der Ort aber nur als Fremdschlüssel. Die Tabelle benötigt einen Primärschlüssel (PersonenID als Autowert).
Ort und PLZ sind auch in einer Tabelle zu führen ebenfalls mit einem Autowert als PS.
In der Tabelle Anwendung gibt es dann nur einen FK zur Person, einen FK zur Prio und einen FK zum Material.
Die Datenherkunft des Kombis für die Auswahl des Materials ist dann mit der Prio zu filtern.
Das nennt sich "Abhängige Kombifelder"
FAQ 4.36 Abhängige Kombi/Listenfelder (http://www.donkarl.com?FAQ4.36)
Dazu kommt noch, dass es mir wichtig ist, dass das PullDownMenue (PullDownMaterial) nach der idMaterial (aufsteigend) sortiert bleiben soll.
Das mag sein. Habe es jedoch absichtlich so verkompliziert um jeder zeit auf jede tabelle zugreifen zu können. Klar plz und ort kann man zusammen legen etc. Aber ich habe mich aktuell entschieden es für meine reine übungsdatenbank so zu machen. Meine datenbank (auf der arbeit) kann ich alleine schon nicht verwenden da wir aktuell ein verbot erhalten haben. Externe (ungesicherte) datenträger anschliesen zu dürfen. Deshalb muss ich das nun so machen. Das ich die Infos die ich mir dann im privaten erarbeite auf die andere (sobald) ich das kann (so wie heute) übertrage.
Hallo,
dann passt ja der obige Link zu FAQ 4.36.
Den hast Du in früheren Beiträgen schon mal bekommen.
Ah stimmt, sorry, damals wollte ich ja was anderes und konnte mit dem direkten inhalt nichts anfangen, nun möchte ich ja genau das machen :)
Nun habe ich das alles so gemacht wie es da steht, der Code scheint auch richtig zu sein aber die liste ist leer...
Also das zweite PullDownMenü (Kombifeld). In dem genannten Beispiel cbo_Artikel.
Hallo,
wie wäre es, wenn Du , um diese Nebelstocherei im Dunkeln zu beenden, die DB mal hier hochlädst (repariert/komprimiert, debuggt und kompiliert, datenreduziert und gezippt) ?
Ohne nun Angst haben zu müssen, irgendwelche Firmengeheimnisse etc. offen zu legen, hier die Datenbank mit dem Problem das ich habe.
Sobald ich die Gruppe auswähle ist das PullDownArtikel leer.
https://www.dropbox.com/s/a1r8b9fovfi9oi5/Datenbank%20Artikel.accdb?dl=0
Hallo,
ich kann in Deinem Beispiel keine Abhängigkeiten erkennen. Es gibt eine Gruppe, aber beim Artikel keinen FK zur Gruppe.
In den Kombis sind auch keine Abhängikeiten erkennbar.
Und Beziehungen (wo man das erkennen könnte) sind auch keine angelegt.
PS:
Warum lädst Du ein solch kleine DB nicht hier um Forum hoch ?
Komprimiert/Repariert und gezippt sind das gearade mal 34KB.
Hallo,
beachte die Hinweise von Klaus!
Vermutlich suchst Du diesen Code:
ZitatOption Compare Database
Option Explicit ' unbedingt angeben!
Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
fkGruppenname = 1
fkArtikel = 1
End Sub
Private Sub Materialliste_DblClick(Cancel As Integer)
Me.Recordset.FindFirst "ID= " & Me!Materialliste
End Sub
Private Sub PullDownArtikel_AfterUpdate()
Me.Dirty = False
Me!Materialliste.Requery
End Sub
Private Sub PullDownGruppe_AfterUpdate()
Me.Dirty = False
Me!Materialliste.Requery
End Sub
weil ich gerade auf der arbeit bin und keine Admin rechte habe, und nur entzippen kann, aber nicht zippen, klingt komisch ist aber leider so... Keine Ahnung wer das so bei uns geregelt hat.
Wenn du von Abhängigkeiten sprichst, redest du doch von den Abhängigkeiten in der Abfrage oder?
Was bewirkt der begriff Dirty?
Die Liste oben habe ich nur erstellt, um sehen zu können, wie viele IDs schon eingegeben wurde. Sie hat nichts mit den PullDown Menues zu tun.
So die Datenbank von vorher, nur mit den Dingen die ich meine.
Ich möchte über PullDown Gruppe was aussuchen, und dann nur noch über PullDownArtikel das Aussuchen können, was zu der idGruppe gehört.
https://www.dropbox.com/s/ofdaw2x71dr519x/Datenbank%20Artikel%202.accdb?dl=0
Von Welcher Art von Beziehung redest du?
Die Art von Bild 1
oder eher in Code Form wie:
Private Sub AuswahlFeld_AfterUpdate()
Me.DeinKombi.RowSource = _ "SELECT ID, weitereFelder " _ & "FROM Tabelle " _ & "WHERE ID = " & Me.AuswahlFeld
End Sub
Hallo,
ZitatVon Welcher Art von Beziehung redest du?
es gibt nur eine Art von Beziehungen, diese werden im Bezeihungsfenster angelegt.
In Abfragen sind das Verknüpfungen, die können ganz anders sein als die Beziehungen.
Meinst du wie in Bild 2?
Aber wenn ja, wie bekomme ich dann die Beziehung zur Haupttabelle wieder hin (wie in Bild3)?
Hallo,
die Zusammenhänge sind mir immer noch völlig unklar. Was ist denn fkArtikelfilter ?
Wieso verweist der auf die Gruppe ?
Für einen Außenstehenden ziemlich verwirrend.
Ja selbst für mich wird das ganze langsam etwas undurchschaubar.
Deshalb versuche ich das ganze nun per Bilder zu erklären.
Wichtig: Die Kombifelder sollen nach dem Filtern ihre Struktur und Sortierung nicht verlieren.
Hallo,
könntest Du bitte mal endlich die Fragen beantworten:
ZitatWas ist denn fkArtikelfilter ?
Wieso verweist der auf die Gruppe ?
Hallo,
warum kopierst Du nicht den geposteten Code in die DB, bzw. korrigierst den entsprechend?
Me.Dirty = false setzt die Form-Eigenschaft "Dirty" auf "falsch", dadurch wird der angezeigte Datensatz, sollte er geändert worden sein, in die zugrundeliegende Tabelle gespeichert.
Im Anhang die Db mit eingestellten Beziehungen und dem geänderten Code.
PS:
die blau geschriebene Anforderung kannst Du mit den zwei gebundenen Kombis nicht erfüllen. Dafür sind abhängige Kombifelder erforderlich, die ungebunden sein müssen.
Hallo,
wenn ich das im Zusammenhang mit den Bildern richtig interpretiere, so verweist das Filterfeld in der Artikeltabelle auf die Gruppe. Daher habe ich das Feld einfach mal fkGruppe benannt.
Die Bezeihunegnsehn dann anders aus.
Es genügt in der Tabelle Anwendung der FK zum Artikel.
Man kann trotzdem das was in dem Kombi angezeigt wird über ein dann ungebundes Kombi für die Gruppe vorfiltern (abhängig machen).
Das Feld für die Gruppe in der Tabelle Anwendung ist doppelt gemoppelt.
Das Bild im Anhang zeigt meiner Meinung nach die richtigen Beziehungen.
Das mit dem Dirty Code werde ich gleich mal machen, zu dem was Klaus geschrieben hat.
Kannst du mir mal sagen, (auch wenn das wohl anfänger wissen ist, wie ich das unendlichzeichen und die 1 auf die Abhängigkeitenslinien bekomme? Und was bedeuten sie?
Hallo,
die "1" und "oo" -Zeichen deuten die Einstellungen der referenziellen Integrität an.
Also wenn die Funktion Dirty sich auf die Liste bezieht, ist sie bestimmt für bestimmte Anwendungsfälle gut, aber leider nicht für meine Zwecke. Weil ich hab die Liste nur eingefügt weil sie auch in der original Firmenliste ist, jedoch keinen direkten Bezug zu den PillDownMenues (Kombifeldern) besitzen soll.
Mit dem was Klaus geschrieben hat, komme ich zwar meiner Lösung etwas näher, aber es hilft mir nicht bei der Frage des Filters leider nicht weiter. Ich werde es jedoch nun so machen, dass ich versuchen werde die Lösung anders zu realisieren.
Ich werde somit erstmal hier einen Cut machen und es anders versuchen.
Ich danke euch dennoch für die Mühe und hoffe ihr werdet mir beim nächsten mal wieder helfen.
Hallo,
eigentlich sprichst Du in Rätseln...
Ich versteh nicht, was Du machen willst.
Zitatdie Funktion Dirty sich auf die Liste bezieht
Dirty speichert die geänderten Daten des Formulars. Das hat mit der Liste (Listenfeld) nicht zu tun. Das Listenfeld zeigt lediglich die von der Abfrage gelieferten Datensätze an, und die müssen (denke ich) nun mal aktuell sein, sonst hat das Ganze keinen Sinn...
Du solltest es nicht "anders" versuchen", Du solltest Dir im Klaren werden, was genau passieren soll.
Hallo,
es ist wirklich schwierig Dir zu helfen. Trotz mehrfacher Nachfragen, weiß ich immer noch nicht, was das für ein Filterfeld ist bei den Artikeln.
Wenn sich das auf die Gruppe bezieht, warum nennst Du das nicht so ?
Das Bild das ich in #27 gepostet habe, ist ja nur eine Annahme.
Könntest Du Dich dazu durchringen, das mal zweifelsfrei zu klären.
Zitataber es hilft mir nicht bei der Frage des Filters leider nicht weiter.
Natürlich hilft Dir das weiter, denn Du kannst hier auch den Filter problemlos einsetzen.
ZitatKannst du mir mal sagen, (auch wenn das wohl anfänger wissen ist, wie ich das unendlichzeichen und die 1 auf die Abhängigkeitenslinien bekomme? Und was bedeuten sie?
In diesem Stadium überraschen mich solche Fragen. Das ist alles in den links erklärt die ich ganz am Anfang Deiner Forumsthemen mal gepostet hatte.