Hallo Jungs,
ich habe folgendes Problem. Ich möchte in der
DB nach einem Benutzerdefiniertem String suchen und dabei eine Bedingung erfüllen, nämlich, dass es nur Favorisierte Stationen angezeigt werden. Die Bedingung heißt "WHERE allStations.aFavorite=1", aber wie mache ich das, dass sie erfüllt wird sowie nur die Stationen angezeigt werden wo str gefunden wurde? Irgendwie komme ich nicht weiter... Danke euch!
Hier mein Code:
Delphi-Quellcode:
procedure TForm1.LoadallStationsFromDB();
var dbFile:
String;
db: TSQLiteDatabase;
tb: TSQLIteTable;
MyItem: TListItem;
str, str1:
String;
begin
// ListView Eintraege loeschen
allStationsListView.Clear;
FavoriteListView.Clear;
dbFile := ExtractFilePath(Application.ExeName) + '
Stations.db';
db := TSQLiteDatabase.Create(dbFile);
try
str1:='
';
if SearchBEdit.Text=_('
Search')
then str:= '
''
%' + '
' + str1+ '
' + '
%''
'
else str:= '
''
%' + '
' + SearchBEdit.Text+ '
' + '
%''
';
// Datensaetze der allStations Tabelle in den StationsTab einlesen
tb :=
db.GetTable('
SELECT allStations.aId,'
+ '
allStations.aName, '
+ '
allStations.aStreamURL, '
+ '
allStations.aWebsiteURL, '
+ '
allStations.aScheduleURL, '
+ '
allStations.aFavorite, '
+ '
allStations.aFixed, '
+ '
allStations.aInfo, '
+ '
language.lName, '
+ '
category.cName '
+ '
FROM allStations '
+ '
LEFT JOIN language ON allStations.fk_language_id=language.lId '
+ '
LEFT JOIN category ON allStations.fk_category_id=category.cId '
+ '
WHERE allStations.aName LIKE '+str+'
'
+ '
OR allStations.aStreamURL LIKE '+str+'
'
+ '
OR allStations.aWebsiteURL LIKE '+str+'
'
+ '
OR allStations.aScheduleURL LIKE '+str+'
'
// + 'OR allStations.aFavorite LIKE '+str+' '
+ '
OR allStations.aFixed LIKE '+str+'
'
+ '
OR allStations.aInfo LIKE '+str+'
'
+ '
OR language.lName LIKE '+str+'
'
+ '
OR category.cName LIKE '+str+'
ORDER BY allStations.aName ASC'); <- hier muss wohl die Where-Bedingung "WHERE allStations.aFavorite=1" hin, aber wie?
try
// Alle Datensaetze in die ListView einlesen
if tb.Count > 0
then
begin
while not tb.EOF
do
begin
MyItem := allStationsListView.Items.Add;
MyItem.Data := Pointer(tb.FieldAsInteger(tb.FieldIndex['
aId']));
// Data mit Ids fuellen
MyItem.Caption := tb.FieldAsString(tb.FieldIndex['
aName']);
MyItem.SubItems.Add(tb.FieldAsString(tb.FieldIndex['
aFavorite']));
MyItem.SubItems.Add(tb.FieldAsString(tb.FieldIndex['
lName']));
MyItem.SubItems.Add(tb.FieldAsString(tb.FieldIndex['
cName']));
tb.Next;
end;
end;
finally
tb.Free;
end;
finally
db.Free;
end;
end;