seh mal wieder den Wald vor lauter Bäumen nicht und benötige professionelle Hilfe ...
Ich probiere gerade ein Schnellsuchfeld in die Maske 'QS-Dokumentenverwaltung' zu integrieren.
Als Beispiel habe ich mir das Schnellsuchfeld aus dem 'Artikelstamm' angeschaut und den Code (siehe unten)
übernommen und angepasst. Das klappt soweit gut, bis auf das der selektierte Datensatz nach erfolgreicher Suche
nicht in die Maske übernommen wird. Es wird immer der erste Datensatz angezeigt. Wo ist das Rad zum schrauben ?
Edit_1OnExit:
Code: Alles auswählen
Begin
//LS: AK 10.07.2008
//Schnellsuche
if ((q_1.state = dssSearch) or (q_1.state = dssEdit) or (q_1.state = dssInsert)) then
begin
if (EDIT_1.Text <> '') then
begin
if q_1.state = dssSearch then
begin
q_1.Cancel();
q_1.Search();
q_1.ClearSearch;
end;
iPos := Pos(':',EDIT_1.Text);
if ((Length(EDIT_1.Text) > 10) and (iPos = 0)) then
EDIT_1.Text := copy(EDIT_1.Text,1,10);
BUTTON_3.click();
end;
end;
EDIT_1.Text := '';
End;
BUTTON_3OnClickScript:
Code: Alles auswählen
Begin
//LS: PF 13.08.2008
LB_SUCHE.Caption := '';
MyQuery := frmdata.universal;
sAusw := EDIT_1.Text;
sJA := AsString(frmData.q_v_bfirma.FieldByName('JA'));
iPos := Pos(':',sAusw);
if (iPos <> 0) then
begin
B := Self.Name;
Z := Application.FindComponent(B);
sFeld := Uppercase(trim(copy(sAusw,0,iPos-1)));
sWert := Uppercase(trim(copy(sAusw,iPos+1,length(sAusw)-iPos)));
M := Z.FindComponent('E_'+sFeld);
if (M <> 0) then
begin
MyQuery.SQL.Text := 'SELECT FIRST 1 A.ID '+
'FROM V_BQS A '+
' AND '+
' F_UPPER('+sFeld+') = :FELDWERT';
MyQuery.ParamByName('FELDWERT',sWert);
MyQuery.Open();
iBQS_ID := AsInteger(MyQuery.FieldByName('ID'));
MyQuery.Close();
if (iBQS_ID <> 0) then
begin
LB_SUCHE.Caption := 1;
M.Text := sWert;
if (q_1.state = dssSearch) then
q_1.post();
end;
end;
end
else
begin
if (q_1.state = dssSearch) then
begin
MyQuery.sql.text := 'SELECT A.* ' +
'FROM V_BQS A ' +
'LEFT OUTER JOIN A_VIEWPSEUDO B ON A.ID = B.ID ' +
' where ((A.BEZEICHNUNG CONTAINING :sAusw))';
MyQuery.ParamByName('sAusw', sAusw);
MyQuery.open();
iBQS_ID := AsInteger(MyQuery.FieldByName('ID'));
if iBQS_ID > 0 then
begin
bOK := UniversalAuflist(Self.Caption);
if bOK then
begin
iBQS_ID := AsInteger(MyQuery.FieldByName('ID'));
LB_SUCHE.Caption := 1;
E_ID.Field.Value := iBQS_ID;
q_1.post();
end
end
else
Messagebox(LB_NOERFASSUNG.Caption, 'AvERP');
MyQuery.Close();
end;
end;
End;
Schonmal vielen Dank für eure Hilfe.
Gruß
Werner