![]() |
SQL Abfrage mehrere Einträge suchen
Hallo,
ich habe folgendes Problem. In einer Paradox liegen sogenannte Referate. Nun möchte ich über eine SQL Abfrage in der Spalte suchen. Ich habe ein Fenster wo alle Referate in Form von Checkboxen aufgelistet sind. Der User soll nun über die jeweiligen Checkboxen aussuchen können, welche Referate er aufgelistet haben will und da liegt genau mein Problem. Ich bekomme die SQL-Abfrage einfach nicht so aufgebaut, das mir die angeklickten Referate angezeigt werden. Ich habe schon so versucht aber es geht immer nur wenn ein Referat makiert ist
SQL-Code:
Ich habe es auch schon mit OR versucht aber ich bekomme kein vernünftiges Ergebnis erhalten.
...
.... Form1.Query1.SQL.ADD('.....'); If Form1.Checkbox1.checked = true Then Form1.Query1.SQL.ADD('WHERE Referat Like "Test1"'); If Form1.Checkbox2.checked = true Then Form1.Query1.SQL.ADD('AND Referat Like "Test3"'); Form1.Query1.Open; |
Re: SQL Abfrage mehrere Einträge suchen
Hallo,
ich habe mit Paradox in Verbindung mit SQL noch nicht gearbeitet, deshalb kann es sein, daß Paradox mein SQL nicht versteht. SQL ist zwar ein Industriestandard, allerdings mit diversen Unterschieden von Herstellet zu Hersteller. Ok, zu Deiner Frage: and ist schon mal ganz falsch. Du suchst ein Referat, dessen Name Test1 und Test3 ist, da wirst Du keins finden. Es muß auf jeden Fall or heißen. Als nächstes hast Du natürlich nur dann ein where drin, wenn Test1 angeklickt ist, das geht also auch nicht. like brauchst Du nur, wenn Du mit WildCards arbeitest, in Interbase sind das % und _ (hoffentlich habe ich jetzt nichts verdreht). Deine Abfrage sollte, wenn Sie fertig ist, so aussehen: Select * from Tabelle where Referat="Test1" or Referat="Test3" Ich weiß nicht, ob Paradox das nächste versteht: Select * from Tabelle where Referat in ("Test1", "Test3") Tabelle mußt Du natürlich durch den Tabellennamen ersetzen. Und eins mußt Du noch beachten: im Normalfall ist eine Stringabfrage casesensitive. Viele Grüße |
Re: SQL Abfrage mehrere Einträge suchen
Hallo Delphianer,
so wie du die Query geschrieben hast, gibt es eine Tabelle, die eine Spalte "Referat" enthält und du suchst nun nach einem oder mehreren Titeln. Wenn dem so ist, dann muss es, wie Albi geschrieben hat, OR heißen. LIKE ist OK, als Wildcards benutzt du bei Paradox auch % (beliebige Zeichen) und _ (EIN beliebiges Zeichen). Was funktioniert denn nicht, wenn du OR benutzt? |
Re: SQL Abfrage mehrere Einträge suchen
Sorry,
muß ich das jetzt verstehen? Ich weise doch ausdrücklich darauf hin, daß es or heißen muß. Und in der fertigen Abfrage von Albi steht ja wohl ein and drin. Und ich habe auch nicht gesagt, daß like nicht geht, es macht aber auch keinen Sinn, oder? Viele Grüße |
Re: SQL Abfrage mehrere Einträge suchen
Ich kann immer nur nach einem Eintrag suchen, sobald ich mehr als Checkboxen makiert habe ist die Abfrage Null und wenn ich AND einsetze dann funzt es nur mit der ersten Checkbox, wenn ich aber die erste nicht anklickte sondern die zweite oder dritte, dann geht genauso wenig.
Ich habe mir den SQL-Text mal in einem Label anzeigen lassen, da sah es vom Aufbau garnicht schlecht aus. Und zwar so wie es eigentlich sein sollte. Es ist zwar das erste mal das ich die Abfrage so aufbaue aber es dürfte doch nicht anderes sein als wenn ich das alles in einer Zeile schreibe oder? Im Label stand es dann so Zitat:
|
Re: SQL Abfrage mehrere Einträge suchen
Hallo Albi,
ist das tatsächlich die SQL-Abfrage, die Du zur Datenbank schicken willst? Dann geht so etwas wie DateToStr(DateTimePicker1.DateTime) nicht. |
Re: SQL Abfrage mehrere Einträge suchen
Also bei mir geht es! Oder meinst Du das man so nicht im allgemeinen nicht macht. In meiner DB steht das Feld so drin und bekomme auf diese Art und Weise genau das Ergebnis was ich habe will. Das einzigste was ich machen mußte war an den 2ten DateTime ein +1 anzuhängen, da ansonsten der Tag nicht mit einbezogen wurde.
Jetzt versteh ich also nicht, wieso das so nicht geht. |
Re: SQL Abfrage mehrere Einträge suchen
Steht das tatsächlich so im SQL-Select oder ist das nur die Programmzeile, mit der Du das zusammenbastelst?
|
Re: SQL Abfrage mehrere Einträge suchen
Ich habe in einer anderen Unit folgendes zu stehen
Delphi-Quellcode:
Und aufrufen tue ich es so
Procedure QAKteSql(SQLAkte: String);
Begin Form1.QAkte.close; Form1.QAkte.SQL.Clear Form1.QAkte.SQL.Text:= SQLAkte; //variabel Form1.QAkte.open; end;
Delphi-Quellcode:
Das ist genau die Abfrage, die ich benutze und er gib mir das Ergebnis wie gewünscht aus.
QAkteSQL('Select * From "'+DBPath+DBAkteName+'"WHERE AErfasstAm > "'+DateToStr(Form23.DateTimePicker1.DateTime)+'" AND AErfasstAm < "'+DateToStr(Form23.DateTimePicker2.DateTime+1)+'"');
|
Re: SQL Abfrage mehrere Einträge suchen
OK. Dann nehme ich alles zurück und behaupte das Gegenteil. :lol:
Schau doch mal nach was nun genau in Form1.QAkte.SQL.Text steht. Und dann versuche dieses SQL-Statement direkt auf der DB auszuführen (z.B. im SQL/DB-Explorer). |
Re: SQL Abfrage mehrere Einträge suchen
Ich habe das jetzt nicht ausprobiert aber ich glaube Dir mal das es nicht gehen wird, denn das habe ich ja auch schon des öfteren hier gelesen.
Ich kann das jetzt aber so lassen, oder bekomme ich so mit dieser Art von Abfrage in Zukunft Probleme? |
Re: SQL Abfrage mehrere Einträge suchen
Hallo Delphianer,
Zitat:
Zum Thema like wollte ich nur anmerken, dass like durchaus sinn machen kann, dann aber mit Wildcard. |
Re: SQL Abfrage mehrere Einträge suchen
Ich habe das mit dem SQL-Explorer nun nicht ausprobiert aber ich habe hier schon des öfteren gelesen das das wohl nicht geht. Da es aber so wie ich es gemacht habe ja ersteinmal geht, stellt sich nun eigentlich nur die Frage, ob es in Zukunft zu irgendwelchen Problemen führen kann?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz