Announcement

Collapse
No announcement yet.

Einsetzen verschiedener Filter

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Einsetzen verschiedener Filter

    Es geht um eine Datenbank für Reparturteile.
    In der Datenbank habe ich z.B. zwei Felder: Gruppe, Bezeichnung.
    Unter Gruppe sind z.B. die Autotypennummer vermerkt: VW = 145, BWM = 200 usw.
    Unter Bezeichnung sind die Obergruppen der Fahrzeugteile aufgelistet: Motor und Getriebe = 1000, Allgemeine Elektrik 1100 usw.

    Zuerst möchte ich die Autotypen z.B. 145 auswählen und dann sollen alle Fahrzeugteile z.B. 1000(Motor und Getriebe)zu diesem Fahrzeugtyp aufgelistet werden. Was muß ich tun um das geregelt zu bekommen.
    Kann ich das auch über einen Index regeln?

  • #2
    Hallo!

    Wenn Du Delphi verwendest schau dir mal die Hilfe bzw. das Beispiel
    zum Ereignis OnFilterRecord der TTabel-Komponente an.
    Auch die Eigenschaft Filtered ist dabei wichtig.

    Vielleicht Hilft dir diese Auskunft ja schon.

    mfg Thoma

    Comment


    • #3
      Hallo,

      falls es sich um <b>keine</b> SQL-Datenbank handelt, würde ich mir in der Delphi-Hilfe die TTable-Methode <b>SetRange</b> anschauen. Die BDE kann bei einer Paradox- und dBASE-Datenbank so effektiver als <b>OnFilterRecord</b> den Bereich einschränken. In der Hilfe findet sich dazu das folgende Beispiel:

      <i>Das folgende Beispiel setzt einen Bereich für eine Tabelle. Das Formular muß zwei Eingabefelder, eine Datenquelle, eine Tabelle, ein DB-Gitter und eine Schaltfläche ennnthalten. </i>
      <pre>
      procedure TForm1.FormActivate(Sender: TObject);
      begin
      Table1.DatabaseName := 'DBDemos';
      Table1.TableName := 'Customer.db';
      Table1.Active := True;
      Table1.IndexName := 'ByCompany';
      end;

      procedure TForm1.Button1Click(Sender: TObject);
      begin
      Table1.DatabaseName := 'DBDemos';
      Table1.TableName := 'Customer.db';
      Table1.Active := True;
      Table1.IndexName := 'ByCompany';
      if Button1.Caption = '&Bereich übernehmen' then

      begin
      Table1.SetRange([Edit1.Text],[Edit2.Text]);
      Button1.Caption := 'Bereich &verwerfen';
      end
      else
      begin
      Table1.CancelRange;
      Table1.Refresh;
      Button1.Caption := '&Bereich übernehmen';
      end;
      end;
      </pre>
      Wenn mit SetRange die Datenmenge eingeschränkt wurde, können die restlichen Einschränkungen mit OnFilterRecord usw. abgebildet werden

      Comment

      Working...
      X