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