AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage mehrere Einträge suchen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage mehrere Einträge suchen

Ein Thema von Albi · begonnen am 24. Nov 2003 · letzter Beitrag vom 25. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#1

SQL Abfrage mehrere Einträge suchen

  Alt 24. Nov 2003, 21:12
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:
...
....
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;
Ich habe es auch schon mit OR versucht aber ich bekomme kein vernünftiges Ergebnis erhalten.
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: SQL Abfrage mehrere Einträge suchen

  Alt 24. Nov 2003, 22:33
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
Lutz
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: SQL Abfrage mehrere Einträge suchen

  Alt 25. Nov 2003, 08:01
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?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

Re: SQL Abfrage mehrere Einträge suchen

  Alt 25. Nov 2003, 08:48
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
Lutz
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#5

Re: SQL Abfrage mehrere Einträge suchen

  Alt 25. Nov 2003, 08:51
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:
'Select * From "'+Table+'" WHERE AErfasstAm > "'+DateToStr(DateTimePicker1.DateTime)+'" AND AErfasstAm < "'+DateToStr(DateTimePicker1.DateTime+1)+'"'
AND/Or AReferat Like "Test1"
AND/Or AReferat Like "Test2"
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6

Re: SQL Abfrage mehrere Einträge suchen

  Alt 25. Nov 2003, 08:57
Hallo Albi,

ist das tatsächlich die SQL-Abfrage, die Du zur Datenbank schicken willst? Dann geht so etwas wie DateToStr(DateTimePicker1.DateTime) nicht.
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#7

Re: SQL Abfrage mehrere Einträge suchen

  Alt 25. Nov 2003, 09:04
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.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#8

Re: SQL Abfrage mehrere Einträge suchen

  Alt 25. Nov 2003, 09:08
Steht das tatsächlich so im SQL-Select oder ist das nur die Programmzeile, mit der Du das zusammenbastelst?
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#9

Re: SQL Abfrage mehrere Einträge suchen

  Alt 25. Nov 2003, 09:15
Ich habe in einer anderen Unit folgendes zu stehen

Delphi-Quellcode:
Procedure QAKteSql(SQLAkte: String);
Begin
  Form1.QAkte.close;
  Form1.QAkte.SQL.Clear
  Form1.QAkte.SQL.Text:= SQLAkte; //variabel
  Form1.QAkte.open;
end;
Und aufrufen tue ich es so

QAkteSQL('Select * From "'+DBPath+DBAkteName+'"WHERE AErfasstAm > "'+DateToStr(Form23.DateTimePicker1.DateTime)+'" AND AErfasstAm < "'+DateToStr(Form23.DateTimePicker2.DateTime+1)+'"'); Das ist genau die Abfrage, die ich benutze und er gib mir das Ergebnis wie gewünscht aus.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#10

Re: SQL Abfrage mehrere Einträge suchen

  Alt 25. Nov 2003, 09:26
OK. Dann nehme ich alles zurück und behaupte das Gegenteil.
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).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz