Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrage soll mit Wert aus Textfeld oder mit aktuellem Wert aus Datenbank suchen

Begonnen von JessMind, Dezember 15, 2014, 09:28:47

⏪ vorheriges - nächstes ⏩

JessMind

Hallo,

ich habe folgendes Problem.

Ich möchte gerne einem Material eine Kategorie zuordnen. Die Kategorien sind in einer eigenen Tabelle gespeichert. Am Material gibt es ein Feld zum Abspeichern der Kategorie.

Allerdings kann nicht jede beliebige Kategorie gewählt werden. Es hängt von der Zuordnung (Branche) des Materials ab, welche ich wählen darf.

Dafür gibt es jetzt eine zusätzliche Tabelle mit Branchen. Jede Kategorie hat (via Beziehung zur ID der Branche) genau eine Branche zugeordnet bekommen.

Wenn ich also nun ein Material abrufe, soll eine Abfrage für eine Kombinationsfeld herausfinden, welche Kategorien für die Branche des Materials zulässig sind.

Ich habe es schon geschafft, dass in dem Kombinationsfeld nur die Kategorin die für das erste Material zulässig sind anzuzeigen, nämlich über dieses Statement:

SELECT Kategorien.KategorieID, Kategorien.KategorieName, *
FROM Branchen LEFT JOIN Kategorien ON Branchen.BrachenID = Kategorien.KategorieBrancheID
WHERE (((Branchen.BranchenName)=[Forms]![Material bearbeiten]![manBranchen]));


Aber wenn ich dann weiterschalte auf ein Material mit einer anderen Branche, stehen immer nur dieselben Kategorien drinnen!

Was mache ich da falsch?

Bitte um Hilfe!

MzKlMu

Hallo,
was ist das für ein Feld mit dem Branchennamen ?
Ist dieses Feld gebunden (Steuerelementinhalt ?)

Zu beachten wäre auch, dass die Where Klausel nicht über den Namen gehen sollte, sondern über die BranchenID (den Primärschlüssel) das ist ja der Sinn des Primärschlüssels. Überhaupt, wird grundsätzlich nicht der Klartext gespeichert sondern nur die jeweilige ID.

Der LEFT JOIN dürfte hier auch fehl am Platz sein.

Bitte beschreibe die Tabellen mit den Feldern mal genauer.
Kannst Du mal ein Beziehungsbild hier posten ?
Gruß Klaus

JessMind

Hallo,

die Branchen könnte ich natürlich gleich eindeutig gestalten - nämlich als eigene Schlüssel. Aber es sind halt keine numerischen Werte, deswegen will ich das nicht.

Jedenfalls generiere ich die Branchen beim Import der Excel Daten. Ich wüsste nicht, wie ich hier mit den IDs arbeiten könnte.

MzKlMu

Hallo,
ZitatAm Material gibt es ein Feld zum Abspeichern der Kategorie.
welches Feld ?

Die Beziehungen halte ich in dieser Form für unbrauchbar.
Es ist keine referentielle Integrität eingestellt und eine Beziehung zur Kategorie fehlt.

Zitatdie Branchen könnte ich natürlich gleich eindeutig gestalten - nämlich als eigene Schlüssel.
das sollst Du natürlich nicht machen, habe ich auch nicht gesagt.
Du kannst den PS numerisch lassen und trotzdem darüber suchen/filtern.
Ich wüsste nicht, wie ich hier mit den IDs arbeiten könnte.Beim Import nicht, aber bei den nachfolgenden Schritten.

Meine Fragen hast Du auch nicht beantwortet. Fragen enden mit einem Fragezeichen.  ;D

Gruß Klaus

DF6GL

Hallo,

neben der besagten fehlenden  Normalisierung ( und den damit einhergehenden Fallgruben, sprich fehlerhaft funktionierender Datanbank) könnte der SQL-String für das Auswahl-Kombifeld so lauten:

SELECT KategorieID, KategorieName FROM Kategorien INNER JOIN Branchen ON Branchen.BrachenID = Kategorien.KategorieBrancheID
WHERE BranchenName = [Forms]![Material bearbeiten]![manBranchen]

JessMind

Ich weiß, dass die Datenbank nicht gerade professionell entwickelt ist. Andererseits hab ich dafür auch nicht die Ausbildung und mache das nur, weil die externe Firma, die das früher gemacht hat, sich als recht gierig entpuppt hat. (Bewusst Fehler eingebaut --> Geld für Service verlangt.....)

Jedenfalls geht es auch mit dieser SQL Anweisung nicht. Oder nur für den ersten Datensatz.

Wie könnte ich die Datenbank denn jetzt noch normalisieren, damit es geht?

MaggieMay

Hallo,

das Kombinationsfeld muss beim Wechseln des Datensatzes aktualisiert werden, und zwar mit Me.Kombifeld.Requery im Ereignis "Form_Current".
Freundliche Grüße
MaggieMay