Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Filter setzen: Fehler (https://www.delphipraxis.net/9189-filter-setzen-fehler.html)

robertthronhill 20. Sep 2003 07:50


Filter setzen: Fehler
 
Hallo!
Ich möchte für ein Datenbankprogramm eine Suche programmieren. Die Tabelle ist eine Paradox 7 Tabelle. Nun setze ich einen Filter (wenn der User auf suchen geklickt hat):
Code:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
        Table1.Close;
        Table1.Filtered := False;
        Table1.Filter := 'Stichwoerter' + QuotedStr(LabeledEdit1.Text);
        Table1.Filtered := True;
        Table1.Open;
end;
Aber nun kommt der Fehler: :?: Filtersetzung unerfolgreich abgeschlossen. Wo liegt der Fehler? :(

Danke für euere Hilfe
robertthronhill

Sharky 20. Sep 2003 08:01

Re: Filter setzen: Fehler
 
Hai robertthrohill,

willkommen im Delphi-Praxis Forum.

Zitat:

Zitat von robertthronhill
Code:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
        Table1.Close;
        Table1.Filtered := False;
        Table1.Filter := 'Stichwoerter' + QuotedStr(LabeledEdit1.Text);
        Table1.Filtered := True;
        Table1.Open;
end;

Was ich bei deinem Filter vermisse ist die Filter bedingung.
z.B. = < > <>

Delphi-Quellcode:
        Table1.Filter := 'Stichwoerter = ' + QuotedStr(LabeledEdit1.Text);

robertthronhill 20. Sep 2003 12:11

Re: Filter setzen: Fehler
 
Hi Sharky!
Danke für's willkommen.
Ich weis nicht wie du das mit den <> meinst. Könntest du biite den Source verbessern?

Danke!
robertthronhill

Sharky 20. Sep 2003 12:22

Re: Filter setzen: Fehler
 
Zitat:

Zitat von robertthronhill
Hi Sharky!
Danke für's willkommen.
Ich weis nicht wie du das mit den <> meinst. Könntest du biite den Source verbessern?

Danke!
robertthronhill

Schaue dir doch einmal die letzte Zeile aus meinem Posting genau an :wink:

Code:
 Table1.Filter := 'Stichwoerter = ' + QuotedStr(LabeledEdit1.Text);
                               ^^^
Anstelle des Vergleiches mit = (gleich) geht nachtürluch auch <> (ungleich)

Captnemo 20. Sep 2003 14:33

Re: Filter setzen: Fehler
 
@robertthronhill:

Zur Verdeutlichung:
Zitat:

> Größer als
< Kleiner als
<> Größer und Kleiner als; oder auch Ungleich (is ja dasselbe)
= Gleich
Du muß dem Filter in der Filterbedingung ja auch mitteilen, was er filtern soll.

Also bei Tabelle mit folgenden Daten:
Zitat:

Menge
-----
20
50
70
150
200
60
55
würde bei dem Filter "Menge > '70'" nur die Werte:
Zitat:

Menge
-----
150
200
rauskommen, und bei einem Filter "Menge = '70'" die Werte:
Zitat:

Menge
-----
70
oder bei "Menge >= '70'" die Werte:
Zitat:

Menge
-----
70
150
200
usw.

Bei einem Filter "Menge'70'", den du mit deinem Quelltext erzeugst, weiß der Filter nicht:

1. Wo das Feld steht, nach welchem du Filtern willst
2. Selbst wenn er das erkennen würde, dann wüsste er nicht ob du gleich, kleiner oder größer meinst. Hellsehen gibt's nämlich erst ab Delphi 10.0, glaube ich :mrgreen:

Darum bekommst du auch diese Meldung.

robertthronhill 20. Sep 2003 15:47

Re: Filter setzen: Fehler
 
Hi!
Zunächst mal ein großen dankeschön an euch beide. Jetzt bin ich den Fehler los. Aber schon stellt sich eine neue Frage. Wie bring ich ihm bei, dass er die gefundenen Datensätze in einem StringGrid anzeigt?

Nochmals danke für die Antworten!

robertthronhill

P.S.: @Captnemo: Das mit dem Hellsehen wäre doch schön, oder? :D:lol:

Phoenix 20. Sep 2003 16:00

Re: Filter setzen: Fehler
 
Erm.. das ist ne neue Frage, da sollte man normalerweise einen neuen Thread für aufmachen.

Stellt sich jetzt die Frage, mit was für Komponenten Du arbeitest.

Im Regelfall sollte es reichen, eine DataSource (auf 'Datenzugriff' zu finden) und eine DBGrid (auf 'Datensteuerung' zu finden) auf das Formular zu ziehen.

Der Grid weist Du dann die DataSource als Datenquelle zu, und die Table die Du hast weist Du dann im Quelltext deine Table zu.

Also im Form - am besten nach dem Table1.Open:
Delphi-Quellcode:
DataSource1.DataSet := Table1;
Das sollte reichen um die Daten in die Grid zu packen :)

robertthronhill 20. Sep 2003 19:59

Re: Filter setzen: Fehler
 
Hi phoenix!

Danke für deine Hilfe! Leider klappt deine Idee nicht. Der Compiler kennt kein DataSource1. Deswegen hab ich das ganze abgeändert:

Code:
DataModule1.DataSource1 := Table1;
Nun bekomme ich aber den Fehler: Inkompatible Typen: 'TDataSource' und 'TTable'. Das gleiche passiert auch, wenn ich das Table1 zu StringGrid1 abändere. Dann kommt aber statt 'TTable' in der Fehlermeldung 'TStringGrid'. :(

Ich hoffe ihr könnt mir helfen!

Danke schon im Vorraus
robertthronhill

Captnemo 20. Sep 2003 21:20

Re: Filter setzen: Fehler
 
Alsoooo,

du brauch mindestens:

1 x TTable (Table1)
1 x TDataSource (DataSource1)
1 x TDBGrid (DBGrid1)

Die kannst du über den OI einander zuordnen. Oder im Code:

DataSource1.DataSet:=Table1;
DBGrid1.DataSource:=DataSource1;

Damit sollte es klappen. :mrgreen:

robertthronhill 21. Sep 2003 08:14

Re: Filter setzen: Fehler
 
Hi!
Vielen herzlichen Dank, captnemo! :thuimb::thuimb::thuimb: Jetzt funktioniert es endlich! Es hätte auch schon gestern Abend funktionieren können, hätte ich bloß nicht vergessen das TDataSource einzufügen :wall: Wirklich ärgerlich!

Nochmal Danke!

robertthronhill


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.
Seite 1 von 2  1 2      

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