AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Suchfunktion in einem DBGrid
Thema durchsuchen
Ansicht
Themen-Optionen

Suchfunktion in einem DBGrid

Ein Thema von Krupi · begonnen am 7. Sep 2015 · letzter Beitrag vom 8. Sep 2015
Antwort Antwort
Seite 1 von 2  1 2      
Krupi

Registriert seit: 7. Sep 2015
3 Beiträge
 
#1

Suchfunktion in einem DBGrid

  Alt 7. Sep 2015, 11:33
Datenbank: Firebird • Version: 2.5 • Zugriff über: TSQL
Hallo DP-Gemeinde

ich hoffe ihr könnt mir helfen bei meinem problem.

Ich habe eine DBGrid mit folgenden spalten :

Name Telefon Email Ort Straße

Das DBGrid ist mit einer DatenBank verbunden und die Daten kann ich schon rein ziehen in das DBGrid. Jedoch wollte ich per Button und Edit FEld in meinem DBGRid etwas suchen und falls bei gefundenen eintrag, sollte nur dieser eintrag im DBGRid angezeigt werden.
Ich weis leider aber nicht wie ich es realisieren soll.

Danke im Vorraus für jede Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#2

AW: Suchfunktion in einem DBGrid

  Alt 7. Sep 2015, 11:38
Du suchst in dem angebundenen DataSet und erhältst dadurch automatisch den fraglichen Datensatz im Grid markiert - sofern du den Rowindicator (ich glaube so heisst das) anzeigst.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Suchfunktion in einem DBGrid

  Alt 7. Sep 2015, 12:03
Mit <DataSet>.Locate() kannst Du die Datenmenge durchsuchen und der 1. gefundene Datensatz wird dann zum aktiven im DataSet.
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Suchfunktion in einem DBGrid

  Alt 7. Sep 2015, 12:13
Jedoch wollte ich per Button und Edit FEld in meinem DBGRid etwas suchen und falls bei gefundenen eintrag, sollte nur dieser eintrag im DBGRid angezeigt werden.
Da gibt es mehrere Möglichkeiten. Daß du nicht im DBGrid, sondern im zugrundeliegenden Dataset/Query/Table suchen mußt, wurde bereits mitgeteilt.
  1. Du kannst die Filterfunktion deines Datasets verwenden und dort den Filter eingeben.
  2. Du kannst das SQL-Property deines Datasets verwenden und den Select-Befehl um eine entsprechende Where-Klausel erweitern
  3. Wenn ich – entgegen deiner Anforderung – nur zum gesuchten Datensatz im DBGrid springen will, realisiere ich das mit eine Tastaturabfrage im DBGrid:

Delphi-Quellcode:
Procedure TFormMain.DbGrid_ViewKeyPress(Sender: TObject; var Key: Char);
Var
  C : Integer;

begin
  C := Ord(Key);
  Case C Of
     27 : DatMod.EintragFinden_View(Key); // Esc
     32 : DatMod.EintragFinden_View(Key); // Space
     45 : DatMod.EintragFinden_View(Key); // -
     46 : DatMod.EintragFinden_View(Key); // .
     48..57 : DatMod.EintragFinden_View(Key); // 0-9
     65..90 : DatMod.EintragFinden_View(Key); // A-Z
     97..122 : DatMod.EintragFinden_View(Key); // a-z
    129 : DatMod.EintragFinden_View(Key); // ü
    132 : DatMod.EintragFinden_View(Key); // ä
    148 : DatMod.EintragFinden_View(Key); // ö
  End;
end;

Procedure TDatMod.EintragFinden_View(Const Taste: Char);
Var
  Spalte : String;
begin
  If Taste = #27 Then
     GLD.URec.Praxen_SuchText := 'Else
  Begin
    GLD.URec.Praxen_SuchText := GLD.URec.Praxen_SuchText + Taste;
    Case GLd.URec.Praxen_SortId Of
    0 : Spalte := 'PRAXIS';
    1 : Spalte := 'STRASSE';
    2 : Spalte := 'HNR';
    3 : Spalte := 'PLZ';
    4 : Spalte := 'ORT';
    5 : Spalte := 'HOME';
    6 : Spalte := 'MAIL';
    7 : Spalte := 'TELEFON';
    8 : Spalte := 'ANWEND';
    End;
    If GLd.URec.Praxen_SortId < 9 Then
       DatMod.View_Praxis.Locate(Spalte, GLD.URec.Praxen_SuchText, [loCaseInsensitive,loPartialKey]);
  End;
  If Assigned(fUpdateStatusbar) Then fUpdateStatusbar;
end;
Falls du den Code nicht gleich verstehst: Die Variable GLD.URec.Praxen_SuchText enthält den Suchtext, der durch die ESC-Taste gelöscht wird.

Für die genaue Suche in mehreren Feldern gleichzeitig ist natürlich etwas mehr Aufwand notwendig. Hier verwende ich eine spezielle Suchmaske und werte beim Klick auf den Suchen-Button die einzelnen Felder und Checkboxen aus:

Delphi-Quellcode:
UNIT UnitSuchPrax;

INTERFACE

USES
  Winapi.Windows, Winapi.Messages,
  System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.CheckLst, Vcl.ExtCtrls, Vcl.ComCtrls,
  JvExComCtrls, JvDateTimePicker;

TYPE
  TFormSuchPrax = CLASS(TForm)
    Panel_Such : TPanel;
    Ed_Praxisname : TEdit;
    Ed_Strasse : TEdit;
    Ed_PLZ : TEdit;
    Ed_Ort : TEdit;
    Ed_Homepage : TEdit;
    Ed_Email : TEdit;
    Ed_Telefon : TEdit;
    Check_Anfrage : TCheckBox;
    Check_Antwort : TCheckBox;
    Lbl_Praxisname : TLabel;
    Lbl_Strasse : TLabel;
    Lbl_PLZ : TLabel;
    Lbl_Ort : TLabel;
    Lbl_Homepage : TLabel;
    Lbl_Email : TLabel;
    Lbl_Telefon : TLabel;
    Check_SuchResAktiv : TCheckBox;
    CheckList_SuchPrax : TCheckListBox;
    Check_GrossKlein : TCheckBox;
    Check_Exakt : TCheckBox;
    Panel_SuchTool : TPanel;
    Btn_Such : TButton;
    Btn_Clear : TButton;
    Btn_Close : TButton;
    Memo_Anleit : TMemo;

    Procedure FormShow(Sender : TObject);
    Procedure FormClose(Sender : TObject; var Action: TCloseAction);
    Procedure CheckList_SuchPraxClickCheck(Sender : TObject);
    Procedure Ed_PraxisnameKeyPress(Sender : TObject; var Key: Char);
    Procedure Btn_ClearClick(Sender : TObject);
    Procedure Btn_CloseClick(Sender : TObject);
    Procedure Btn_SuchClick(Sender : TObject);

  PRIVATE { Private-Deklarationen }
    Const
      MemoText1 = 'Gesucht wird nur nach jenen Feldern, die in der Liste rechts markiert sind.';
      MemoText2 = ' Für das Feld "Praxisname" gilt zusätzlich, daß auch ein Suchtext im Eingabefeld stehen muß,';
      MemoText3 = ' denn in der Datenbank darf der Praxisname nicht leer sein.';
      MemoText4 = ' In den anderen Feldern kann somit auch danach gesucht werden, ob sie leer sind.';

    Procedure EinstellungenLesen;
    Procedure EinstellungenSchreiben;
    Procedure SuchSQLerzeugen;
    Procedure SucheStarten;

  PUBLIC { Public-Deklarationen  }


  END;

VAR
  FormSuchPrax: TFormSuchPrax;

IMPLEMENTATION
{$R *.dfm}
{ TFormSuchPrax }

Uses
  UnitData, GLD;

// ##### PRIVATE METHODEN ###############################################################################################################

// ---------- Einstellungen lesen ------------------------------------------------------------------------------------------------ Privat
Procedure TFormSuchPrax.EinstellungenLesen;
Var
  SCheck : String;
  i : Integer;

begin
  Self.Left := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_LEFT').AsInteger;
  Self.Top := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_TOP').AsInteger;
  Self.Width := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_WIDTH').AsInteger;
  Self.Height := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_HEIGHT').AsInteger;
  Check_SuchResAktiv.Checked := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_SUCHRESAKTIV').AsBoolean;
  Check_GrossKlein.Checked := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_GROSSKLEIN').AsBoolean;
  Check_Exakt.Checked := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_EXAKT').AsBoolean;
  Ed_Praxisname.Text := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_PRAXIS').AsString;
  Ed_Strasse.Text := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_STRASSE').AsString;
  Ed_PLZ.Text := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_PLZ').AsString;
  Ed_Ort.Text := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_ORT').AsString;
  Ed_Homepage.Text := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_HOME').AsString;
  Ed_Email.Text := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_EMAIL').AsString;
  Ed_Telefon.Text := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_TELEFON').AsString;
  Check_Anfrage.Checked := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_GEMAILT').AsBoolean;
  Check_Antwort.Checked := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_GEANTWORTET').AsBoolean;
  SCheck := DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_CHECKLIST').AsString;

  If SCheck <> 'Then
  Begin
    i := 0;
    Repeat
      Inc(i);
      CheckList_SuchPrax.Checked[i-1] := SCheck[i] = '1';
    Until (i = CheckList_SuchPrax.Count) Or (i = Length(SCheck));
  End;

  Memo_Anleit.Lines.Text := MemoText1+MemoText2+MemoText3+MemoText4;
end;

// ---------- Einstellungen schreiben -------------------------------------------------------------------------------------------- Privat
Procedure TFormSuchPrax.EinstellungenSchreiben;
Var
  SCheck : String;
  i : Integer;
begin
  SCheck := '';
  For i := 0 To CheckList_SuchPrax.Count -1 Do
    If CheckList_SuchPrax.Checked[i] Then
       SCheck := SCheck + '1'        Else
       SCheck := SCheck + '0';

  DatMod.Qset_Benutzer.Edit;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_LEFT').AsInteger := Self.Left;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_TOP').AsInteger := Self.Top;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_WIDTH').AsInteger := Self.Width;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_HEIGHT').AsInteger := Self.Height;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_SUCHRESAKTIV').AsBoolean := Check_SuchResAktiv.Checked;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_GROSSKLEIN').AsBoolean := Check_GrossKlein.Checked;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_EXAKT').AsBoolean := Check_Exakt.Checked;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_PRAXIS').AsString := Ed_Praxisname.Text;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_STRASSE').AsString := Ed_Strasse.Text;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_PLZ').AsString := Ed_PLZ.Text;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_ORT').AsString := Ed_Ort.Text;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_HOME').AsString := Ed_Homepage.Text;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_EMAIL').AsString := Ed_Email.Text;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_TELEFON').AsString := Ed_Telefon.Text;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_GEMAILT').AsBoolean := Check_Anfrage.Checked;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_GEANTWORTET').AsBoolean := Check_Antwort.Checked;
  DatMod.Qset_Benutzer.FieldByName('SUCHPRAX_CHECKLIST').AsString := SCheck;
  DatMod.Qset_Benutzer.Post;
end;

// ---------- Suchstring erzeugen ------------------------------------------------------------------------------------------------ Privat
Procedure TFormSuchPrax.SuchSQLerzeugen;
Const
  SqlW = ' where ';
  SqlA = ' and ';
Var
  Aus : String;
  W : Integer;

begin
  GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL;
// Praxisname
  If CheckList_SuchPrax.Checked[0] And (Ed_Praxisname.Text <> '') Then
  Begin
     If Check_Exakt.Checked Then
        Aus := SqlW + 'PRAXIS = '    + QuotedStr(Ed_Praxisname.Text) Else
        Aus := SqlW + 'PRAXIS like ' + QuotedStr('%' + Ed_Praxisname.Text + '%');
     GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
// Straße
// If CheckList_SuchPrax.Checked[1] And (Ed_Strasse.Text <> '') Then
  If CheckList_SuchPrax.Checked[1] Then
  Begin
    If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL Then
       GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW Else
       GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
     If Check_Exakt.Checked Then
        Aus := 'STRASSE = '    + QuotedStr(Ed_Strasse.Text) Else
        Aus := 'STRASSE like ' + QuotedStr('%' + Ed_Strasse.Text + '%');
    GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
// PLZ
// If CheckList_SuchPrax.Checked[2] And (Ed_PLZ.Text <> '') Then
  If CheckList_SuchPrax.Checked[2] Then
  Begin
    If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL Then
       GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW Else
       GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
     If Check_Exakt.Checked Then
        Aus := 'PLZ = '    + QuotedStr(Ed_PLZ.Text) Else
        Aus := 'PLZ like ' + QuotedStr('%' + Ed_PLZ.Text + '%');
    GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
// Ort
// If CheckList_SuchPrax.Checked[3] And (Ed_Ort.Text <> '') Then
  If CheckList_SuchPrax.Checked[3] Then
  Begin
    If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL Then
       GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW Else
       GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
     If Check_Exakt.Checked Then
        Aus := 'ORT = '    + QuotedStr(Ed_Ort.Text) Else
        Aus := 'ORT like ' + QuotedStr('%' + Ed_Ort.Text + '%');
    GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
// Homepage
// If CheckList_SuchPrax.Checked[4] And (Ed_Homepage.Text <> '') Then
  If CheckList_SuchPrax.Checked[4] Then
  Begin
    If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL Then
       GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW Else
       GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
     If Check_Exakt.Checked Then
        Aus := 'HOME = '    + QuotedStr(Ed_Homepage.Text) Else
        Aus := 'HOME like ' + QuotedStr('%' + Ed_Homepage.Text + '%');
    GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
// Email
// If CheckList_SuchPrax.Checked[5] And (Ed_Email.Text <> '') Then
  If CheckList_SuchPrax.Checked[5] Then
  Begin
    If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL Then
       GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW Else
       GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
     If Check_Exakt.Checked Then
        Aus := 'MAIL = '    + QuotedStr(Ed_Email.Text) Else
        Aus := 'MAIL like ' + QuotedStr('%' + Ed_Email.Text + '%');
    GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
// Telefon
// If CheckList_SuchPrax.Checked[6] And (Ed_Telefon.Text <> '') Then
  If CheckList_SuchPrax.Checked[6] Then
  Begin
    If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL Then
       GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW Else
       GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
     If Check_Exakt.Checked Then
        Aus := 'TELEFON = '    + QuotedStr(Ed_Telefon.Text) Else
        Aus := 'TELEFON like ' + QuotedStr('%' + Ed_Telefon.Text + '%');
    GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
// Wurde bereits eine Anfrage verschickt?
  If CheckList_SuchPrax.Checked[7] And Check_Anfrage.Checked Then
  Begin
    If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL Then
       GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW Else
       GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
    If Check_Anfrage.Checked Then
       W := 1 Else
       W := 0;
    Aus := 'GEMAILT = ' + IntToStr(W);
    GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
// Wurde die Anfrage bereits beantwortet?
  If CheckList_SuchPrax.Checked[8] And Check_Antwort.Checked Then
  Begin
    If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL Then
       GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW Else
       GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
    If Check_Antwort.Checked Then
       W := 1 Else
       W := 0;
    Aus := 'ANTWORT = ' + IntToStr(W);
    GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
  End;
end;

// ---------- Suche starten ------------------------------------------------------------------------------------------------------ Privat
Procedure TFormSuchPrax.SucheStarten;
Var
  i : Integer;
begin
  SuchSQLerzeugen;
  If Check_SuchResAktiv.Checked Then
  Begin
    i := GLD.URec.Praxen_Id;
    DatMod.View_Praxis.Active := False;
    DatMod.View_Praxis.SQL.Text := GLD.URec.Praxen_SQL;
    DatMod.View_Praxis.Open;
    DatMod.View_Praxis.Locate('ID',i,[]);
  End;
  ModalResult := mrOk;
end;

// ##### PUBLIC METHODEN ################################################################################################################

// ---------- -------------------------------------------------------------------------------------------------------------------- Public

// ##### EREIGNISSE #####################################################################################################################

// ---------- On Show -------------------------------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.FormShow(Sender: TObject);
begin
  EinstellungenLesen;
  Ed_Praxisname.SetFocus;
end;

// ---------- On Close ------------------------------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  EinstellungenSchreiben;
end;

// ---------- Status eines Kontrollkästchens geändert ------------------------------------------------------------------------ Ereignisse
Procedure TFormSuchPrax.CheckList_SuchPraxClickCheck(Sender: TObject);
Var
  i : Integer;
begin
  If CheckList_SuchPrax.Checked[9] Then
  For i := 0 To CheckList_SuchPrax.Count-1 Do
      CheckList_SuchPrax.Checked[i] := False;
end;

// ---------- On KeyPress Editfelder ----------------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.Ed_PraxisnameKeyPress(Sender: TObject; var Key: Char);
begin
  If Key = #13 Then
  Begin
    Key := #0;
    SucheStarten;
  End;
end;

// ---------- Button Suche starten gedrückt ---------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.Btn_SuchClick(Sender: TObject);
begin
  SucheStarten;
end;

// ---------- Edits leeren --------------------------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.Btn_ClearClick(Sender: TObject);
begin
  Ed_Praxisname.Clear;
  Ed_Strasse.Clear;
  Ed_PLZ.Clear;
  Ed_Ort.Clear;
  Ed_Homepage.Clear;
  Ed_Email.Clear;
  Ed_Telefon.Clear;
  Check_Anfrage.Checked := False;
  Check_Antwort.Checked := False;
end;

// ---------- Suchfenster schließen ------------------------------------------------------------------------------------------ Ereignisse
Procedure TFormSuchPrax.Btn_CloseClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;

end.
Miniaturansicht angehängter Grafiken
suchmaske.jpg  
  Mit Zitat antworten Zitat
Krupi

Registriert seit: 7. Sep 2015
3 Beiträge
 
#5

AW: Suchfunktion in einem DBGrid

  Alt 7. Sep 2015, 12:51
Danke für die ausführlichen Hilfen!

ich werde es mir jetzt in ruhe angucken
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Suchfunktion in einem DBGrid

  Alt 7. Sep 2015, 13:01
Wird gerne vergessen geht aber auch sehr schön Delphi-Referenz durchsuchenTDataSet.OnFilterRecord wenn die Suche auf die bereits gelesenen Datensätze erfolgen soll.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Sigi55

Registriert seit: 3. Jan 2010
36 Beiträge
 
Delphi 5 Professional
 
#7

AW: Suchfunktion in einem DBGrid

  Alt 7. Sep 2015, 13:45
Hi,

oder man nimmt:

http://www.scalabium.com/smdbgrid.htm

Da kann man oben im Grid eine "Suchzeile" einblenden.

Gruß

Sigi
  Mit Zitat antworten Zitat
Krupi

Registriert seit: 7. Sep 2015
3 Beiträge
 
#8

AW: Suchfunktion in einem DBGrid

  Alt 8. Sep 2015, 11:40
danke nochmals für die guten vorschläge
hab diese auch verwendet jedoch ohne gutes ergebnis
jetzt bin ich total planlos

könnte mir vllt jemand ein beispiel geben mit code, wie ich in meiner anwendung auf meine datenbank zugreife und somit eine abfrage stellen kann?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: Suchfunktion in einem DBGrid

  Alt 8. Sep 2015, 11:48
danke nochmals für die guten vorschläge
hab diese auch verwendet jedoch ohne gutes ergebnis
jetzt bin ich total planlos

könnte mir vllt jemand ein beispiel geben mit code, wie ich in meiner anwendung auf meine datenbank zugreife und somit eine abfrage stellen kann?
Es wurden dir doch massig Stichworte genannt.
Es wurde dir massig Code gezeigt von Perlsau.

Klar, dass das nicht so 100% zu deiner Anwendung passt, wie auch? Wir wissen nicht was du an Code bisher hast, wie sollen wir dir da zu einem Plan verhelfen?
Ralph
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Suchfunktion in einem DBGrid

  Alt 8. Sep 2015, 11:55
Es kommt auch darauf an, ob Du das Ergebnis nur lokal filtern, im Grid zu einem bestimmten DS spingen oder eine neue Abfrage starten möchtest.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz