![]() |
Datenbank: PARADOX • Version: 4 • Zugriff über: BDE
DataSet.Filter mit mehreren Bedingungen
Hallo,
ich bin neu hier und habe gleich eine Frage. Ich schreibe eine Anwendung mit c++Builder. Bin aber in c++ Builder Foren nicht fundig geworden, deshalb stelle ich meine Frage hier :-) Kurz zusammen gefasst: habe eine Tabele (CustomerT) mit Nachname, vorname, und Geb. Datum. Nun möchte ich in dieser Datenbank nach einem Kunden suchen. Dazu mache ich:
Code:
wie kann ich der Filter nun so verwenden, dass in meiner Tabelle nach Vorname und Nachname sucht?
...
{ TFilterOptions FilterOptions; TTable *t = CustumerT; FilterOptions.Clear(); FilterOptions << foCaseInsensitive;// << foNoPartialCompare; sFilter = ""; t->FilterOptions = FilterOptions; AnsiString v[3]={"","",""}; v[0] = Edit1->Text.c_str(); //LN v[1] = Edit2->Text.c_str(); //FN if(BirtDateDateTimePicker->Checked) v[2] = BirtDateDateTimePicker->Date.DateString().c_str(); if (!v[0].IsEmpty() ) {sFilter = "LastName = '" +v[0]+ "'" ; } else if ( !v[0].IsEmpty() && v[1].IsEmpty() && v[2].IsEmpty()) {sFilter = "LastName = '" +v[0]+ "'" ; } else if ( !v[0].IsEmpty() && !v[1].IsEmpty() && v[2].IsEmpty()) {sFilter = ("LastName = '" +v[0]+ "'") ????????????????? ("FirstName = '" +v[1]+ "'" ) ; } else if( v[0].IsEmpty() && !v[1].IsEmpty() && v[2].IsEmpty()) {sFilter = "FirstName = '" +v[1]+ "'" ; }//{t->Filter = "LastName = '"+v[0]+"'" ???? "FirstName = '"+v[1]+"'"; } else if( v[0].IsEmpty() && v[1].IsEmpty() && !v[2].IsEmpty()) {sFilter = "Birthday = '" +v[2]+ "'" ; }//{...} t->Filter = sFilter; if(t->FindFirst()){ Action_Findnext->Enabled = true; Action_Findprior->Enabled = true; } } ist es überhaupt möglich nach zwei Feldern in der Datenbank zu filtern? Danke |
AW: DataSet.Filter mit meherere Bediengungen
|
AW: DataSet.Filter mit meherere Bediengungen
Ist wie das WHERE, also mit AND, OR, Klammern, Vergleichoperatoren wie <> und =, IN usw.
Es kommt aber auch etwas auf die Datenbank-Komponenten drauf an, ob und welche zusätzlichen Features diese hier bereitstellen. Und Manchmal gibt es dort noch ein weiteres Filter-Property, wie z.B. FilterSQL im PgDAC, welches direkt ins WHERE des Query eingebaut und dann serverseitig ausgewertet wird. |
AW: DataSet.Filter mit meherere Bediengungen
habe auch mit AND (in cppB & ) probiert.
es klappt nicht -->(EVariantTypeCastError):( |
AW: DataSet.Filter mit meherere Bediengungen
Du musst das "and" in den FilterString einbauen.
Wäre nicht die folgende vorgehensweise einfacher (ich versuch mal die C++ Syntax zu übernehmen, hab da aber keien Ahnung von):
Code:
Wobei man da mit dem Datumsvergleich aufpassen muss, ob das so geht.
sFilter = "";
if (!v[0].IsEmpty() ) {sFilter = "LastName = '" +v[0]+ "'" ; } if (!v[1].IsEmpty() ) { if (!sFilter="") {sFilter=sFilter + " AND ";} sFilter = sFilter + "FirstName = '" +v[1]+ "'"; } if (!v[2].IsEmpty() ) { if (!sFilter="") {sFilter=sFilter + " AND ";} sFilter = sFilter + "BirthDate = '" +v[2]+ "'"; } |
AW: DataSet.Filter mit meherere Bediengungen
Ein Dataset hat auch noch ein Event
![]() |
AW: DataSet.Filter mit meherere Bediengungen
Zitat:
Das hat doch nichts mit cppB zu tun! Du nutzt hier ein SQL-Derivat --> also bitte wirklich
Delphi-Quellcode:
nutzen und nicht
AND
Delphi-Quellcode:
&&
|
AW: DataSet.Filter mit meherere Bediengungen
Vielen Dank Jumpy , das war die Lösung.
Zitat:
Es geht hier um SQL Derivat (AND) und nicht CPPB &. :oops::oops::oops::oops: Danke für den Hinweis. |
AW: DataSet.Filter mit meherere Bediengungen
Zitat:
Warte.... (lufthol) ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 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