![]() |
Datenbank: ADS • Version: 6.2 • Zugriff über: SQL
SQL Problem
Hallo
was habe ich vergessen...wieso bekomme ich mit folgenden SQL-Sring kein Ergebnis? Ich bekomme aber auch keinen Fehler...Danke Klaus
Delphi-Quellcode:
SELECT DA.id_daten
, DA.titel , DA.filmlaenge , DA.isbn , DA.erstellt , DA.geaendert , DA.sid_Genre , DA.sid_Format , FA.id_format , FA.format , GR.id_genre , GR.genre FROM tbl_daten DA LEFT OUTER JOIN tbl_format FA ON (DA.sid_format=FA.id_Format) LEFT OUTER JOIN tbl_genre GR ON (DA.sid_genre=GR.id_Genre) WHERE ((UPPER(titel) like :p1) OR (UPPER(filmlaenge) like :p1) OR (UPPER(isbn) like :p1) OR (UPPER(FA.format) like :p1) OR (UPPER(GR.Genre) like :p1))
Delphi-Quellcode:
{Edit.OnChange}
V_Suchstring:=SuchEdit.Text; DataMod.SQL.Close; DataMod.SQL.Params[0].AsString :=(UPPERCASE('%'+V_Suchstring+'%')); DataMod.SQL.Open; |
Re: SQL Problem
Ist in V_Suchstring evtl. ein deutsches Sonderzeichen? Auf jeden Fall solltest du AnsiUppercase statt Uppercase verwenden!
Falls es das nicht war solltest du das SQL-Statement mal im SQL-Editor für deine Datenbank direkt testen. |
Re: SQL Problem
Gruß
String ist denke ich IO trotzdem Ergebnis = 0.( was ja möglicherweise richtig ist) Ich denke das Problem sind die verknüpften Tabellen(Format und Genre) Ich bin mir nicht so sicher das mit den Joins richtig gemacht(verstanden) zu haben. Bin ich manchmal mit Views besser beraten? Danke und Tschö...Klaus |
Re: SQL Problem
hallo klaus,
müsstest du nicht die Tabellen Format und genre mit in die From Klausel nehmen? raik |
Re: SQL Problem
Hallo Klaus,
deine Joins sind in Ordnung. Dein Fehler ist die mehrfache Verwendung des gleichen Parameternamens. Der Parser für die SQL Statements kommt damit nicht zurecht. Amüsiere dich beim lesen dieses ![]() Grüße vom marabu |
Re: SQL Problem
Guten Morgen
was meinst du mit gleichen Parameternamen (p1..?) wo ist denn da ein Problem? MfG..Danke..Klaus |
Re: SQL Problem
Zitat:
Bei mehreren Parametern mit dem selben Namen wird nur der erste gesetzt. Also entweder Du setzt die Parameter einzeln direkt in einer Schleife order arbeitest mit StringReplace. marabu's Lösung: Zitat:
|
Re: SQL Problem
ich habe jetzt nicht 'p1' als Parametername sondern 'p0' genommen und es funkt.
kann mir das mal jemand verständlich erklären ? Danke Klaus |
Re: SQL Problem
Irgendwie sagst Du uns hier nicht alles... Ich habe das jetzt mal mit ADS ausprobiert. Und zwar mit
SQL-Code:
Was vom Prinzip das gleiche ist. Dann folgender kleiner Code:
Select * from kunden
where (Upper(Name_1) like :p1) or (Upper(Name_2) like :p1) or (Upper(Name_3) like :p1) or (Upper(Strasse) like :p1)
Delphi-Quellcode:
Ergibt folgende Ausgabe:
procedure TFormAdsTest.ButtonExecSqlClick(Sender: TObject);
var V_SuchString : string; ParamStrings : string; i : integer; begin V_SuchString := 'AB'; AdsQuery.Close; AdsQuery.Params[0].AsString := UPPERCASE('%'+V_Suchstring+'%'); AdsQuery.Open; for i := 0 to AdsQuery.Params.Count-1 do ParamStrings := ParamStrings+inttostr(i)+': '+AdsQuery.Params[i].AsString+#13; ShowMessage(Format('Gefunden %d', [AdsQuery.Recordcount])+#13+ParamStrings); end; Zitat:
|
Re: SQL Problem
Du hast recht
Ich trau es mir bald nicht zu posten... habe jetzt aus p0 wieder p1 gemacht und es funktioniert immer noch. Ich habe keine Ahnung was los ist, über manche Sachen sollte man auch nicht nachdenken:-( Möglicherweise hat mein Delphi gestern nach 12 Sdt. Arbeit gebockt. Egal... Danke für eure Hilfe und villeicht hilft dieser Thread ja jemand anderes auch. MfG...Klaus :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 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