Einzelnen Beitrag anzeigen

Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#47

Re: Suche geeignete Komponente ?

  Alt 21. Mai 2006, 22:23
hallo marabu,

hab das jetzt so realisiert wie du das gemeint hast im beitrag #13 glaube ich

Delphi-Quellcode:
// funktion zum erzeugen des lookupfeldes im dbgrid

function tform1.CreateLookupField: TField;
begin
  Result := TStringField.Create(Query1);
  with Result do
  begin
    Name := Query1.Name + FieldName;
    Size := 50;
    DisplayLabel := 'Firma';
    DisplayWidth := 12;
    FieldName := 'ANREDE2';
    Lookup := true;
    LookupDataSet := query2;
    KeyFields := 'ANR_ID';
    LookupKeyFields := 'ID';
    LookupResultField := 'Phrase';
    DataSet := Query1;
    Index := 2;
  end;
end;



// erzeugt das lookupfield im dbgrid

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  f: TField;
  begin

  with Query1 do
  begin
   Query1.Close;
    // SQL Statement festlegen
    Query1.SQL.Text := 'SELECT * FROM firma';
    // Spalten analysieren
    FieldDefs.Update;
    // persistente Felder erzeugen
    for i := 0 to FieldDefs.Count - 1 do
      with FieldDefs[I] do
        if DataType <> ftUnknown then
        begin
          f := CreateField(Self);
          // Schlüsselfelder verstecken
          f.Visible := Copy(f.FieldName, Length(f.FieldName) - 1, 2) <> 'ID';
        end;
  end;
  CreateLookupField;
  Query1.Open;
end;

das funzt jetzt super, aber ein neues problem habe ich, wo ich nicht weiter komme,
und zwar meine suchfunktion geht jetzt nicht mehr bei dem feld "phrase" ,
weil ich ja die Firmennamen von einer anderen tabelle bekomme ( anreden ), aber ich
bräuchte dort auch eine suchfunktion ?

und die fehlermeldung kommt auch

keine übereinstimmung der typen im ausdruck so schaute meine suchfunktion aus :

Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var
  suche: string;
begin
  with Query1 do
  begin
    Query1.Close;
    Query1.SQL.Text := 'SELECT * FROM firma WHERE (Firmenname like :suche) OR (Bezeichnung like :suche)OR (Name like :suche)';
    Query1.ParamByName('suche').asString := Edit1.Text + '%';
    Query1.Open;

  end;

  end;
mfg vader
  Mit Zitat antworten Zitat