Autor Beitrag
chibi-chan
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 06.09.10 19:23 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 06.09.10 21:36 
Geht direkt im DataSet in Delphi. Was für eines verwendest du?

_________________
Markus Kinzler.
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 07.09.10 13:34 
Kann ich es auf dieser Weise tun?
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 09.09.10 16:47 
Habe es ganz einfach gelöst ^^

ausblenden 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
rd3
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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