![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: SQLiteSimpleDelphi-Wrappers von Tim Anderson
In der DB suchen und eine Bedingung erfüllen?
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; |
AW: In der DB suchen und eine Bedingung erfüllen?
Delphi-Quellcode:
+ 'WHERE allStations.aFavorite=1 AND '+
(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? |
AW: In der DB suchen und eine Bedingung erfüllen?
Danke Dir, eigentlich könnte ich selber drauf kommen. Musste einfach das Problem etwas lockerer angehen. :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 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 by Thomas Breitkreuz