Entwickler-Ecke

Datenbanken - Suchfunktion Oracle - Delphi


chibi-chan - Mo 06.09.10 19:23
Titel: Suchfunktion Oracle - Delphi
Ich habe einen cxGrid mit Daten gefüllt. (von Oracle)
Und jetzt würde ich gerne eine Suchfunktion einbinden... aber habe ehrlich gesagt keine Ahnung wie...

Muss ich in Oracle eine Funktion oder Procedure erstellen oder kann ich es direkt von Delphi aus machen??

Kann mir jemand einen Tipp geben >.<

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


mkinzler - Mo 06.09.10 21:36

Geht direkt im DataSet in Delphi. Was für eines verwendest du?


uko - Mo 06.09.10 23:57

user profile iconmkinzler hat folgendes geschrieben Zum zitierten Posting springen:
Geht direkt im DataSet in Delphi. Was für eines verwendest du?

Ich vermute stark, daß wir hier von ODAC von Devart reden

user profile iconchibi-chan hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe einen cxGrid mit Daten gefüllt. (von Oracle)
Und jetzt würde ich gerne eine Suchfunktion einbinden... aber habe ehrlich gesagt keine Ahnung wie...


Also, zum einen kannst Du natürlich die Filterfunktionen des cxGrid verwenden. Schau Dir dazu mal in den Demos vom DevExpress die entsprechenden an. Dann ist bie Filterung der Daten aber auf Client-Seite.
Dann kannst Du natürlich die Daten via dem SQL Statement filtern, auf dem das Grid aufbaut. Dazu brauchst Du halt einen eigenen Dialog, indem Du eingeben kannst, was die Filterkriterien sind.
Am schönsten wäre natürlich der Query-Mode, wie ich ihn noch aus Forms kenne: man geht in den Query-Mode, alle Felder des Grids leeren sich und man gibt in der/den entsprechenden Spalten die Bedingen ein und führt die Query dann mit dem Verlassen des Querymodes aus. Das hab ich als Umsetzung bisher aber nur bei den DOA Komponenten gesehen.

Was Du letztendlich brauchst hängt halt stark davon ab, wie komfortabel die Suche sein soll.

Grüße,
Uli


chibi-chan - Di 07.09.10 13:34

Kann ich es auf dieser Weise tun?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TfMain.Edit1Change(Sender: TObject);
var
search_exit : Boolean;
begin
try
     if Length(Edit1.Text) = 0 then search_exit := True;

    //First moves to the first record in the dataset
    clientDataSet1.first;
    //locate the first record in the ClientDataSet whose SNR name is Edit1.Text
    clientDataSet1.locate('SNR', Edit1.Text, []);
    cxGrid1.SetFocus;

  except
    on e: exception do
        ShowMessage('Cannot locate' + Edit1.Text);
      end;
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


chibi-chan - Do 09.09.10 16:47

Habe es ganz einfach gelöst ^^


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TfMain.btnSNRClick(Sender: TObject);
var
searchsnr: String;
search_exit : Boolean;

begin
 searchsnr:= edtSNR.Text;

 if Length(searchsnr)= 0 then search_exit := true;
 cxGrid1DBTableView1.DataController.Search.Locate(cxGrid1DBTableView1SNR.Index, searchsnr);
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Delete - Di 14.09.10 14:33

Hi,

cxGrid hört sich nach DevExpress an. Wenn ja, dann ist da schon alles eingebaut, um nicht über eine TDataSet-abgeleitete Klasse zu gehen...

In der Hilfe ist dazu alles gut beschrieben! Keywords: IncSearch, Filter, Groupbox, FilterBox...

gruß
rd3