Logisch verknüpfte Bedingungen |
Anfang Zurück Vor |
Letzte Änderung 26.10.2010
Bei Datenbankabfragen die nach mehreren Suchbegriffen suchen sollen, benötigen Sie für jeden Suchbegriff eine eigene Abfragebedingung (WHERE Condition). D.h., bei Suchformularen verbirgt sich hinter jeder einzelnen Formular-Komponente eine Abfragebedingung.
21.Wechseln Sie in den GUI-Builder und klonen Sie den TextPane zusammen mit dem TextField. Klicken Sie dazu mit gedrückter Shift Taste TextPane und TextField nacheinander an, wählen Sie im Menü Bearbeiten > Klonen und geben Sie anschließend im unteren TextPane Modell: ein. 22.Selektieren Sie den Button und wechseln Sie in die Code-Ansicht. Klicken Sie dazu auf {} Code. 23.Lesen Sie nun den Suchbegriff aus dem zweiten TextField aus. Definieren Sie dazu eine weitere String-Variable und weisen Sie auch dieser die Methode getText( ) zu, welche den Text aus dem Textfield ausliest.
24.Erweitern Sie nun die Datenbankabfrage mit einer weiteren Filter-Bedingung. Bewegen Sie dazu den Mauszeiger mit gedrückter Shift Taste auf die Datenbankabfrage XDEV.Query und klicken Sie diese dann an, um den Query-Assistenten aufzurufen. Klicken Sie auf 25.Wählen Sie im ersten Auswahlfeld das Datenfeld MODELLE.MODELL aus, welches durchsucht werden soll. Wählen Sie dann den SQL-Operator aus und geben Sie die Variable gesuchtesModell an, welche den ermittelten Suchbegriff enthält. 26.Klicken Sie im Query-Assistenten auf OK, um den Assistenten zu schließen.
Bei der Angabe mehrerer Abfragebedingungen sieht SQL Klammern vor, um die Zusammengehörigkeit der Abfragebedingungen festzulegen, wodurch der Sinn der Abfrage und das Abfrageergebnis maßgeblich beeinträchtigt werden. Im Query-Assistenten wird eine Klammersetzung durch Einrückung der entsprechenden Abfragebedingungen erreicht. Um eine Abfragebedingung einzurücken, klicken Sie auf
try { XDEV.Query(new QueryFahrzeuge(suchbegriff,gesuchtesModell)); } catch(DBException e) { e.printStackTrace(); }
private static class QueryFahrzeuge extends Query { QueryFahrzeuge(int maxPreis, int minPreis, String wunschMarke, String wunschModell, String wunschFarbe) { setDataSource(fahrzeugeDB.DB);
select("FAHRZEUGE","ID").into(FAHRZEUGE_JOIN.FAHRZEUGE_ID); select("FAHRZEUGE","BILDPFAD").into(FAHRZEUGE_JOIN.FAHRZEUGE_BILDPFAD); select("MODELLE","MODELL").into(FAHRZEUGE_JOIN.MODELLE_MODELL); select("HERSTELLER","MARKE").into(FAHRZEUGE_JOIN.HERSTELLER_MARKE); select("FAHRZEUGE","LEISTUNG").into(FAHRZEUGE_JOIN.FAHRZEUGE_LEISTUNG); select("FAHRZEUGE","ERSTZULASSUNG").into(FAHRZEUGE_JOIN.FAHRZEUGE_ERSTZULASSUNG); select("FAHRZEUGE","KILOMETERSTAND").into(FAHRZEUGE_JOIN.FAHRZEUGE_KILOMETERSTAND); select("FAHRZEUGE","FAHRZEUGTYP_ID").into(FAHRZEUGE_JOIN.FAHRZEUGE_FAHRZEUGTYP_ID); select("FAHRZEUGE","FAHRZEUGART_ID").into(FAHRZEUGE_JOIN.FAHRZEUGE_FAHRZEUGART_ID); select("FAHRZEUGE","KRAFTSTOFF_ID").into(FAHRZEUGE_JOIN.FAHRZEUGE_KRAFTSTOFF_ID); select("FAHRZEUGE","GETRIEBE_ID").into(FAHRZEUGE_JOIN.FAHRZEUGE_GETRIEBE_ID); select("FAHRZEUGE","FARBE_ID").into(FAHRZEUGE_JOIN.FAHRZEUGE_FARBE_ID); select("FAHRZEUGE","PREIS").into(FAHRZEUGE_JOIN.FAHRZEUGE_PREIS); from("FAHRZEUGE"); innerJoin("HERSTELLER",getColumn("HERSTELLER","ID").eq(getColumn("MODELLE","HERSTELLER_ID"))); innerJoin("MODELLE",getColumn("MODELLE","ID").eq(getColumn("FAHRZEUGE","MODELL_ID"))); where(getColumn("FAHRZEUGE","PREIS").lte("?").AND(getColumn("FAHRZEUGE","PREIS").gte("?")). OR(parenthesis(getColumn("HERSTELLER","MARKE").eq("?"). AND(getColumn("MODELLE","MODELL").eq("?")).AND(getColumn("FAHRZEUGE","FARBE_ID"). eq("?")))),maxPreis,minPreis,wunschMarke,wunschModell,wunschFarbe);
setVirtualTable(FAHRZEUGE_JOIN.VT); setFillMethod(VirtualTableFillMethod.OVERWRITE); } }
|