AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Datenbanken Delphi Suchen in datensensitiven Controls
Thema durchsuchen
Ansicht
Themen-Optionen

Suchen in datensensitiven Controls

Ein Thema von shmia · begonnen am 8. Apr 2005
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Suchen in datensensitiven Controls

  Alt 8. Apr 2005, 14:48
Folgende Unit zeigt, wie man über ein datensensitives Steuerelement
nach einem Feldinhalt in der darunter liegenden Datenmenge suchen kann.

Mögliche datensensitives Steuerelemente (data-aware controls) sind:
TDBGrid, TdxDBGrid (von Quantum Express)
TDBEdit, TDBText oder TDBcombobox

Wenn man ein TDBGrid oder TdxDBGrid übergibt, wird im selektierten Feld gesucht;
gibt man ein TDBEdit, TDBText oder TDBcombobox an, ist das verknüpfte Feld die Grundlage
für die Suche.



Delphi-Quellcode:
unit UDBGridUtils;

interface

{Unit dxDBGrid auskommentieren, falls Quantum Express nicht verwendet wird}
uses DB, Controls, SysUtils, Dialogs, dbctrls, DBGrids, dxDBGrid;

function SearchField(feld: TField):Boolean;
function SearchDBControl(DBcontrol: Tcontrol):Boolean;


implementation

function SearchField(feld: TField):Boolean;
var
  s: string;
  ds : TDataSet;
  options : TLocateOptions;
begin
  Result := False;
  if Assigned(feld) then
  begin
    ds := feld.DataSet;

    if InputQuery(PssGetString(ID_FrmLnw_SearchField) + ' ' + feld.DisplayName, '', s) then
    begin
      // Wenn das letzte Zeichen ein * ist,
      // dann wird nur mit einem Teilschlüssel gesucht
      if (Length(s) >= 2) and (s[Length(s)]='*') then
      begin
        SetLength(s, Length(s)-1); // letztes Zeichen (das *) löschen
        options := [loPartialKey];
      end
      else
        options := [];

      Result := ds.Locate(feld.FieldName, s, options);
    end;
  end;
end;

function SearchDBControl(DBcontrol: Tcontrol):Boolean;
begin
  if DBcontrol is TDBEdit then
    Result := SearchField(TDBEdit(DBcontrol).Field)
  else if DBcontrol is TDBGrid then
    result := SearchField(TDBGrid(DBcontrol).SelectedField)
  else if DBcontrol is TdxDBGrid then
    result := SearchField(TdxDBGrid(DBcontrol).FocusedField)
  else if DBcontrol is TDBText then
    Result := SearchField(TDBText(DBcontrol).Field)
  else if DBcontrol is TDBComboBox then
    Result := SearchField(TDBComboBox(DBcontrol).Field)
  else if Assigned(DBcontrol) then
    raise Exception.Create('unsupported control: '+DBcontrol.ClassName)
  else
    Result := False;
end;


end.
Die Anwendung ist ganz einfach:
Delphi-Quellcode:
procedure Tform1.BtnSuchenClick(Sender:TObject);
begin
  if not SearchDBControl(DBGrid1) then
    ShowMessage('kein passender Datensatz gefunden !);
end;
Man kann nicht nur über das selektierte Feld eines Grids suchen, sondern auch ein TDBEdit als Ausgangspunkt für die Suche nehmen:

Delphi-Quellcode:
procedure TAuftragForm.ActSearchExecute(Sender: TObject);
var
  c : TWinControl;
begin
  c := Self.ActiveControl; // das aktuelle Steuerelement

  SearchDBControl(c);
end;
[edit=Chakotay1308]Source formatiert. Mfg, Chakotay1308[/edit]
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort

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 10:04 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