UNIT UnitSuchPrax;
INTERFACE
USES
Winapi.Windows,
Winapi.Messages,
System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Vcl.CheckLst,
Vcl.ExtCtrls,
Vcl.ComCtrls,
JvExComCtrls, JvDateTimePicker;
TYPE
TFormSuchPrax =
CLASS(TForm)
Panel_Such : TPanel;
Ed_Praxisname : TEdit;
Ed_Strasse : TEdit;
Ed_PLZ : TEdit;
Ed_Ort : TEdit;
Ed_Homepage : TEdit;
Ed_Email : TEdit;
Ed_Telefon : TEdit;
Check_Anfrage : TCheckBox;
Check_Antwort : TCheckBox;
Lbl_Praxisname : TLabel;
Lbl_Strasse : TLabel;
Lbl_PLZ : TLabel;
Lbl_Ort : TLabel;
Lbl_Homepage : TLabel;
Lbl_Email : TLabel;
Lbl_Telefon : TLabel;
Check_SuchResAktiv : TCheckBox;
CheckList_SuchPrax : TCheckListBox;
Check_GrossKlein : TCheckBox;
Check_Exakt : TCheckBox;
Panel_SuchTool : TPanel;
Btn_Such : TButton;
Btn_Clear : TButton;
Btn_Close : TButton;
Memo_Anleit : TMemo;
Procedure FormShow(Sender : TObject);
Procedure FormClose(Sender : TObject;
var Action: TCloseAction);
Procedure CheckList_SuchPraxClickCheck(Sender : TObject);
Procedure Ed_PraxisnameKeyPress(Sender : TObject;
var Key: Char);
Procedure Btn_ClearClick(Sender : TObject);
Procedure Btn_CloseClick(Sender : TObject);
Procedure Btn_SuchClick(Sender : TObject);
PRIVATE { Private-Deklarationen }
Const
MemoText1 = '
Gesucht wird nur nach jenen Feldern, die in der Liste rechts markiert sind.';
MemoText2 = '
Für das Feld "Praxisname" gilt zusätzlich, daß auch ein Suchtext im Eingabefeld stehen muß,';
MemoText3 = '
denn in der Datenbank darf der Praxisname nicht leer sein.';
MemoText4 = '
In den anderen Feldern kann somit auch danach gesucht werden, ob sie leer sind.';
Procedure EinstellungenLesen;
Procedure EinstellungenSchreiben;
Procedure SuchSQLerzeugen;
Procedure SucheStarten;
PUBLIC { Public-Deklarationen }
END;
VAR
FormSuchPrax: TFormSuchPrax;
IMPLEMENTATION
{$R *.dfm}
{ TFormSuchPrax }
Uses
UnitData, GLD;
// ##### PRIVATE METHODEN ###############################################################################################################
// ---------- Einstellungen lesen ------------------------------------------------------------------------------------------------ Privat
Procedure TFormSuchPrax.EinstellungenLesen;
Var
SCheck :
String;
i : Integer;
begin
Self.Left := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_LEFT').AsInteger;
Self.Top := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_TOP').AsInteger;
Self.Width := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_WIDTH').AsInteger;
Self.Height := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_HEIGHT').AsInteger;
Check_SuchResAktiv.Checked := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_SUCHRESAKTIV').AsBoolean;
Check_GrossKlein.Checked := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_GROSSKLEIN').AsBoolean;
Check_Exakt.Checked := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_EXAKT').AsBoolean;
Ed_Praxisname.Text := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_PRAXIS').AsString;
Ed_Strasse.Text := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_STRASSE').AsString;
Ed_PLZ.Text := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_PLZ').AsString;
Ed_Ort.Text := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_ORT').AsString;
Ed_Homepage.Text := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_HOME').AsString;
Ed_Email.Text := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_EMAIL').AsString;
Ed_Telefon.Text := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_TELEFON').AsString;
Check_Anfrage.Checked := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_GEMAILT').AsBoolean;
Check_Antwort.Checked := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_GEANTWORTET').AsBoolean;
SCheck := DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_CHECKLIST').AsString;
If SCheck <> '
'
Then
Begin
i := 0;
Repeat
Inc(i);
CheckList_SuchPrax.Checked[i-1] := SCheck[i] = '
1';
Until (i = CheckList_SuchPrax.Count)
Or (i = Length(SCheck));
End;
Memo_Anleit.Lines.Text := MemoText1+MemoText2+MemoText3+MemoText4;
end;
// ---------- Einstellungen schreiben -------------------------------------------------------------------------------------------- Privat
Procedure TFormSuchPrax.EinstellungenSchreiben;
Var
SCheck :
String;
i : Integer;
begin
SCheck := '
';
For i := 0
To CheckList_SuchPrax.Count -1
Do
If CheckList_SuchPrax.Checked[i]
Then
SCheck := SCheck + '
1'
Else
SCheck := SCheck + '
0';
DatMod.Qset_Benutzer.Edit;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_LEFT').AsInteger := Self.Left;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_TOP').AsInteger := Self.Top;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_WIDTH').AsInteger := Self.Width;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_HEIGHT').AsInteger := Self.Height;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_SUCHRESAKTIV').AsBoolean := Check_SuchResAktiv.Checked;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_GROSSKLEIN').AsBoolean := Check_GrossKlein.Checked;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_EXAKT').AsBoolean := Check_Exakt.Checked;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_PRAXIS').AsString := Ed_Praxisname.Text;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_STRASSE').AsString := Ed_Strasse.Text;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_PLZ').AsString := Ed_PLZ.Text;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_ORT').AsString := Ed_Ort.Text;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_HOME').AsString := Ed_Homepage.Text;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_EMAIL').AsString := Ed_Email.Text;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_TELEFON').AsString := Ed_Telefon.Text;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_GEMAILT').AsBoolean := Check_Anfrage.Checked;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_GEANTWORTET').AsBoolean := Check_Antwort.Checked;
DatMod.Qset_Benutzer.FieldByName('
SUCHPRAX_CHECKLIST').AsString := SCheck;
DatMod.Qset_Benutzer.Post;
end;
// ---------- Suchstring erzeugen ------------------------------------------------------------------------------------------------ Privat
Procedure TFormSuchPrax.SuchSQLerzeugen;
Const
SqlW = '
where ';
SqlA = '
and ';
Var
Aus :
String;
W : Integer;
begin
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL;
// Praxisname
If CheckList_SuchPrax.Checked[0]
And (Ed_Praxisname.Text <> '
')
Then
Begin
If Check_Exakt.Checked
Then
Aus := SqlW + '
PRAXIS = ' + QuotedStr(Ed_Praxisname.Text)
Else
Aus := SqlW + '
PRAXIS like ' + QuotedStr('
%' + Ed_Praxisname.Text + '
%');
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
// Straße
// If CheckList_SuchPrax.Checked[1] And (Ed_Strasse.Text <> '') Then
If CheckList_SuchPrax.Checked[1]
Then
Begin
If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL
Then
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW
Else
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
If Check_Exakt.Checked
Then
Aus := '
STRASSE = ' + QuotedStr(Ed_Strasse.Text)
Else
Aus := '
STRASSE like ' + QuotedStr('
%' + Ed_Strasse.Text + '
%');
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
// PLZ
// If CheckList_SuchPrax.Checked[2] And (Ed_PLZ.Text <> '') Then
If CheckList_SuchPrax.Checked[2]
Then
Begin
If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL
Then
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW
Else
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
If Check_Exakt.Checked
Then
Aus := '
PLZ = ' + QuotedStr(Ed_PLZ.Text)
Else
Aus := '
PLZ like ' + QuotedStr('
%' + Ed_PLZ.Text + '
%');
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
// Ort
// If CheckList_SuchPrax.Checked[3] And (Ed_Ort.Text <> '') Then
If CheckList_SuchPrax.Checked[3]
Then
Begin
If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL
Then
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW
Else
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
If Check_Exakt.Checked
Then
Aus := '
ORT = ' + QuotedStr(Ed_Ort.Text)
Else
Aus := '
ORT like ' + QuotedStr('
%' + Ed_Ort.Text + '
%');
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
// Homepage
// If CheckList_SuchPrax.Checked[4] And (Ed_Homepage.Text <> '') Then
If CheckList_SuchPrax.Checked[4]
Then
Begin
If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL
Then
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW
Else
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
If Check_Exakt.Checked
Then
Aus := '
HOME = ' + QuotedStr(Ed_Homepage.Text)
Else
Aus := '
HOME like ' + QuotedStr('
%' + Ed_Homepage.Text + '
%');
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
// Email
// If CheckList_SuchPrax.Checked[5] And (Ed_Email.Text <> '') Then
If CheckList_SuchPrax.Checked[5]
Then
Begin
If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL
Then
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW
Else
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
If Check_Exakt.Checked
Then
Aus := '
MAIL = ' + QuotedStr(Ed_Email.Text)
Else
Aus := '
MAIL like ' + QuotedStr('
%' + Ed_Email.Text + '
%');
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
// Telefon
// If CheckList_SuchPrax.Checked[6] And (Ed_Telefon.Text <> '') Then
If CheckList_SuchPrax.Checked[6]
Then
Begin
If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL
Then
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW
Else
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
If Check_Exakt.Checked
Then
Aus := '
TELEFON = ' + QuotedStr(Ed_Telefon.Text)
Else
Aus := '
TELEFON like ' + QuotedStr('
%' + Ed_Telefon.Text + '
%');
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
// Wurde bereits eine Anfrage verschickt?
If CheckList_SuchPrax.Checked[7]
And Check_Anfrage.Checked
Then
Begin
If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL
Then
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW
Else
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
If Check_Anfrage.Checked
Then
W := 1
Else
W := 0;
Aus := '
GEMAILT = ' + IntToStr(W);
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
// Wurde die Anfrage bereits beantwortet?
If CheckList_SuchPrax.Checked[8]
And Check_Antwort.Checked
Then
Begin
If GLD.URec.Praxen_SQL = GLD.PraxenDefaultSQL
Then
GLD.URec.Praxen_SQL := GLD.PraxenDefaultSQL + SqlW
Else
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + SqlA;
If Check_Antwort.Checked
Then
W := 1
Else
W := 0;
Aus := '
ANTWORT = ' + IntToStr(W);
GLD.URec.Praxen_SQL := GLD.URec.Praxen_SQL + Aus;
End;
end;
// ---------- Suche starten ------------------------------------------------------------------------------------------------------ Privat
Procedure TFormSuchPrax.SucheStarten;
Var
i : Integer;
begin
SuchSQLerzeugen;
If Check_SuchResAktiv.Checked
Then
Begin
i := GLD.URec.Praxen_Id;
DatMod.View_Praxis.Active := False;
DatMod.View_Praxis.SQL.Text := GLD.URec.Praxen_SQL;
DatMod.View_Praxis.Open;
DatMod.View_Praxis.Locate('
ID',i,[]);
End;
ModalResult := mrOk;
end;
// ##### PUBLIC METHODEN ################################################################################################################
// ---------- -------------------------------------------------------------------------------------------------------------------- Public
// ##### EREIGNISSE #####################################################################################################################
// ---------- On Show -------------------------------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.FormShow(Sender: TObject);
begin
EinstellungenLesen;
Ed_Praxisname.SetFocus;
end;
// ---------- On Close ------------------------------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
EinstellungenSchreiben;
end;
// ---------- Status eines Kontrollkästchens geändert ------------------------------------------------------------------------ Ereignisse
Procedure TFormSuchPrax.CheckList_SuchPraxClickCheck(Sender: TObject);
Var
i : Integer;
begin
If CheckList_SuchPrax.Checked[9]
Then
For i := 0
To CheckList_SuchPrax.Count-1
Do
CheckList_SuchPrax.Checked[i] := False;
end;
// ---------- On KeyPress Editfelder ----------------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.Ed_PraxisnameKeyPress(Sender: TObject;
var Key: Char);
begin
If Key = #13
Then
Begin
Key := #0;
SucheStarten;
End;
end;
// ---------- Button Suche starten gedrückt ---------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.Btn_SuchClick(Sender: TObject);
begin
SucheStarten;
end;
// ---------- Edits leeren --------------------------------------------------------------------------------------------------- Ereignisse
Procedure TFormSuchPrax.Btn_ClearClick(Sender: TObject);
begin
Ed_Praxisname.Clear;
Ed_Strasse.Clear;
Ed_PLZ.Clear;
Ed_Ort.Clear;
Ed_Homepage.Clear;
Ed_Email.Clear;
Ed_Telefon.Clear;
Check_Anfrage.Checked := False;
Check_Antwort.Checked := False;
end;
// ---------- Suchfenster schließen ------------------------------------------------------------------------------------------ Ereignisse
Procedure TFormSuchPrax.Btn_CloseClick(Sender: TObject);
begin
ModalResult := mrCancel;
end;
end.