2016-09-10 2 views
0

Der Versuch, eine Abfrage einzurichten, bei der eines der Felder durch den Wert in einer Combobox ausgewählt wird. Kann die richtige Syntax nicht herausfinden. Ich bin in der SQL-Ansicht des Abfrage-Generators, mit dem folgenden:MS Access mit ComboBox-Wert in SQL-Feld

SELECT Deviations.Deviation, Deviations.Rev, Deviations.Title, Deviations.Issued, Deviations.ExpiryDate, Deviations.ExpiryHours, Deviations.ExpOther, Deviations.Active, Deviations.[Forms]![DeviationSelectionForm]![cmbAircraft] 
FROM Deviations 
WHERE Deviations.[Forms]![DeviationSelectionForm]![cmbAircraft]=True 
ORDER BY Deviations.Deviation DESC 

Das Kombinationsfeld wählt die Hecknummer des Flugzeugs, die eine Checkbox in der Tabelle ist. Es gibt mehrere Flugzeughecknummern als Ankreuzfelder. Also, wenn es keine Combobox sind und ich wollte die Abfrage verwenden, wie beispielsweise Flugzeug 416, würde die Abfrage sein:

SELECT Deviations.Deviation, Deviations.Rev, Deviations.Title, Deviations.Issued, Deviations.ExpiryDate, Deviations.ExpiryHours, Deviations.ExpOther, Deviations.Active, Deviations.[416] 
FROM Deviations 
WHERE Deviations.[416]=True 
ORDER BY Deviations.Deviation DESC 

Wenn ich diese Abfrage teste es funktioniert, wie ich es brauche.

Die Frage ist also, wie ich die Abfrage mit der Combobox in einem Formular erstellen, die den Feldnamen einer Tabelle identifiziert?

Antwort

1

Erstellen Sie die Abfrage SQL viacode in der Combobox afterUpdate-Ereignis.

Das gesagt, es scheint, als ob Sie eine Tabelle anstelle einer Datenbank erstellt haben. Ihre Tabellen sind nicht normalisiert. Flugzeuge sollten Datensätze sein, keine Spalten. Ich schlage vor, Sie lesen über Datenbank-Design und Normalisierung.

+0

Danke für die Hilfe, ich glaube, das kann funktionieren. Was das Datenbankdesign anbelangt, höre ich, was Sie sagen, aber ich musste es so strukturieren. Ich habe eine Tabelle mit Flugzeugnummern, die in diesem Fall nicht verwendet wird. Die Tabelle, mit der ich es zu tun habe, basiert auf einer Abweichung für die Flugzeugwartung, die für ein oder mehrere Flugzeuge gelten könnte, so dass ich Spalten mit Kontrollkästchen für jedes Flugzeug in der Abweichungstabelle habe. Wenn also eine Abweichung für mehrere Flugzeuge veröffentlicht wird, gebe ich die Abweichungsinformationen ein und wähle aus, auf welches Flugzeug sie angewendet wird. Offen für Vorschläge. – tllewellyn

+1

Drei Tabellen: 1. Flugzeug (AircraftID, ) 2. Abweichungen (DeviationID, ) 3. AircraftDeviations (AircraftID, DeviationID) – AVG

+0

Vielen Dank! Lesen Sie jetzt darüber nach. Ich weiß noch nicht genau, wie ich es in diesem Szenario umsetzen soll, hoffe aber, dass Ihr Rat mich in die richtige Richtung geführt hat. Mein Bauchgefühl sagte mir schon früh, dass mein db-Design fehlerhaft sein könnte. Können Sie zu diesem Zweck vorschlagen, wie meine Abweichungsform aussehen könnte? Im Moment habe ich jedes Flugzeug als eine Checkbox auf dem Abweichungsformular dargestellt, wobei jedes Kontrollkästchen die zugrunde liegende Tabelle füllt. Ist das immer noch angebracht oder sollte es eine Combobox/Listbox sein, die aus dem Flugzeugtisch erstellt wurde? In welchem ​​Fall würde die Tabelle "AircraftDeviations" ausgefüllt werden? – tllewellyn