Hallo zusammen,
ich habe eine Form, welche eine Benutzerverwaltung realisiert und alle angelegten Benutzer in einem StringGrid auflistet,
welches über eine
Query gefüllt wird.
Es gibt ein TEdit zur freien Suche, wonach dann das
Query gefiltert wird.
Ich arbeite mit XE5, FireMonkey und als Datenbankkomponente verwnde ich FireDAC.
Ich habe es, relativ umständlich, hin bekommen:
Delphi-Quellcode:
procedure SetQryUserFilter;
begin
if UserSettingsFrm.edtFreeSearch.Text <> '
'
then //TEdit in dem frei gesucht werden kann
begin
with UserDat.qryUser
do //Query mit der Benutzertabelle aus der Datenbank
begin
Filter :=
('
lower(LAST_NAME) like ''
%' + UserSettingsFrm.edtFreeSearch.Text + '
%''
' +
'
or lower(FIRST_NAME) like ''
%' + UserSettingsFrm.edtFreeSearch.Text + '
%''
' +
'
or lower(LOGIN_NAME) like ''
%' + UserSettingsFrm.edtFreeSearch.Text + '
%''
' +
'
or lower(USER_PROFILE) like ''
%' + UserSettingsFrm.edtFreeSearch.Text + '
%''
');
Filtered := True;
end;
end
else
begin
with UserDat.qryUser
do
begin
Filter := '
';
Filtered := False;
end;
end;
GetTableUser;
//Prozedur, die qryUser.Active auf False und True setzt um Benutzertabelle aus Datenbank neu zu laden.
SetStrngrdUserFormat;
//Prozedur, die die Formatierung des StingGrid setzt.
end;
Komisch ist nun, wenn ich die beiden letzten Prozeduren weg lasse, kommt es zu ganz merkwürdigen Anzeigen im Grid.
Teilweise werden Personen doppelt angezeigt und andere dafür gar nicht.
Teilweise wird nur ein Benutzer angezeigt bis ich ins Grid klicke, dann werden plötzlich wieder alle angezeigt.
Hat jemand ähnliche Erfahrung und/oder nen heißen Tipp für mich?
Des weiteren habe ich feststellen müssen, dass es kein AnsiLowerCase gibt.
Muss ich dazu etwas bestimmtes in die uses Klausel aufnehmen oder gibt es was vergleichbares?
Würde das halt gerne beim Filter auf das TEdit anweden, damit Groß- und Kleinschreibung ignoriert wird.