Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Benny80 am April 22, 2019, 12:55:29

Titel: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 22, 2019, 12:55:29
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: PhilS am April 22, 2019, 13:15:17
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Beaker s.a. am April 22, 2019, 13:23:03
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
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 22, 2019, 14:02:25
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Beaker s.a. am April 22, 2019, 15:20:46
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
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 22, 2019, 16:54:19
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 22, 2019, 21:33:08
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: MzKlMu am April 22, 2019, 23:30:32
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)
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 22, 2019, 23:31:42
Dazu kommt noch, dass es mir wichtig ist, dass das PullDownMenue (PullDownMaterial) nach der idMaterial (aufsteigend) sortiert bleiben soll.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 06:11:53
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: MzKlMu am April 23, 2019, 08:34:46
Hallo,
dann passt ja der obige Link zu FAQ 4.36.

Den hast Du in früheren Beiträgen schon mal bekommen.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 08:44:39
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 :)
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 10:09:59
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: DF6GL am April 23, 2019, 10:24:10
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)    ?
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 11:19:56
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
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: MzKlMu am April 23, 2019, 11:40:27
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: DF6GL am April 23, 2019, 11:50:50
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
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 12:03:03
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?
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 12:05:06
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 12:09:51
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
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 12:24:46
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

Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: MzKlMu am April 23, 2019, 12:42:46
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 12:54:26
Meinst du wie in Bild 2?

Aber wenn ja, wie bekomme ich dann die Beziehung zur Haupttabelle wieder hin (wie in Bild3)?
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: MzKlMu am April 23, 2019, 13:25:25
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 14:19:39
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: MzKlMu am April 23, 2019, 14:24:20
Hallo,
könntest Du bitte mal endlich die Fragen beantworten:
ZitatWas ist denn fkArtikelfilter ?
Wieso verweist der auf die Gruppe ?
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: DF6GL am April 23, 2019, 14:25:03
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. 
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: MzKlMu am April 23, 2019, 14:37:01
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 14:49:45
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?
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: DF6GL am April 23, 2019, 14:53:45
Hallo,

die "1" und "oo" -Zeichen deuten die Einstellungen der referenziellen Integrität an.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: Benny80 am April 23, 2019, 15:17:58
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: DF6GL am April 23, 2019, 15:22:37
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.
Titel: Re: Abfrage Kriterium über Wert einer anderen Tabelle bestimmen.
Beitrag von: MzKlMu am April 23, 2019, 15:27:47
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.