diff options
| author | michael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-07-14 14:35:36 +0000 |
|---|---|---|
| committer | michael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-07-14 14:35:36 +0000 |
| commit | bf54f59d7ad98225c487ff6a43068489021d8d9f (patch) | |
| tree | eebaf938326c208a514386590703d889e3961d44 /packages/fcl-web/src/webdata/sqldbwebdata.pp | |
| parent | 449e4dba7168a5e8e26b9a4fceb8ad722c3a9320 (diff) | |
| download | fpc-bf54f59d7ad98225c487ff6a43068489021d8d9f.tar.gz | |
* Implemented OnParamValue event
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@15571 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-web/src/webdata/sqldbwebdata.pp')
| -rw-r--r-- | packages/fcl-web/src/webdata/sqldbwebdata.pp | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/packages/fcl-web/src/webdata/sqldbwebdata.pp b/packages/fcl-web/src/webdata/sqldbwebdata.pp index 87af19233e..7fe04543a6 100644 --- a/packages/fcl-web/src/webdata/sqldbwebdata.pp +++ b/packages/fcl-web/src/webdata/sqldbwebdata.pp @@ -12,21 +12,23 @@ Type { TCustomSQLDBWebDataProvider } TNewIDEvent = Procedure(Sender : TObject; Out AID : String) of object; TGetParamTypeEvent = Procedure (Sender : TObject; Const ParamName,AValue : String; Var AType : TFieldtype) of object; + TGetParamValueEvent = Procedure (Sender : TObject; P : TParam; Var Handled : Boolean) of object; TCustomSQLDBWebDataProvider = Class(TFPCustomWebDataProvider) private FIDFieldName: String; FOnGetNewID: TNewIDEvent; + FOnGetParamValue: TGetParamValueEvent; FSQLS : Array[0..3] of TStringList; FConnection: TSQLConnection; FQuery : TSQLQuery; FLastNewID : String; FOnGetParamType : TGetParamTypeEvent; - procedure CheckDataset; function GetS(AIndex: integer): TStrings; procedure SetConnection(const AValue: TSQLConnection); procedure SetS(AIndex: integer; const AValue: TStrings); Protected + function CheckDataset : Boolean; virtual; function CreateQuery(AOwner: TComponent; ATransaction: TSQLTransaction; ASQL: Tstrings): TSQLQuery; function GetParamType(P: TParam; const AValue: String): TFieldType; virtual; procedure SetTypedParam(P: TParam; Const AValue: String); virtual; @@ -37,6 +39,7 @@ Type Procedure DoDelete; override; Procedure DoInsert; override; Procedure DoApplyParams; override; + Function SQLQuery : TSQLQuery; Function GetDataset : TDataset; override; Function GetNewID : String; Function IDFieldValue : String; override; @@ -48,6 +51,7 @@ Type Property Connection : TSQLConnection Read FConnection Write SetConnection; Property OnGetNewID : TNewIDEvent Read FOnGetNewID Write FOnGetNewID; property OnGetParameterType : TGetParamTypeEvent Read FOnGetParamType Write FOnGetParamType; + property OnGetParameterValue : TGetParamValueEvent Read FOnGetParamValue Write FOnGetParamValue; Public Constructor Create(AOwner : TComponent); override; Destructor Destroy; override; @@ -63,6 +67,7 @@ Type Property IDFieldName; Property OnGetNewID; property OnGetParameterType; + property OnGetParameterValue; Property Options; end; @@ -206,13 +211,14 @@ begin Result.SQL.Assign(ASQL); end; -procedure TCustomSQLDBWebDataProvider.CheckDataset; +Function TCustomSQLDBWebDataProvider.CheckDataset : boolean; begin {$ifdef wmdebug}SendDebug('Entering CheckDataset');{$endif} If (Trim(SelectSQL.Text)='') then Raise EFPHTTPError.CreateFmt(SErrNoSelectSQL,[Self.Name]); - If (FQuery=Nil) then + Result:=FQuery=Nil; + If (Result) then FQuery:=CreateQuery(Nil,Nil,SelectSQL) else if not FQuery.Active then FQuery.SQL.Assign(SelectSQL); @@ -311,20 +317,28 @@ var I: Integer; P : TParam; S : String; + B : Boolean; + begin {$ifdef wmdebug}SendDebug('Entering ApplySQLPArams');{$endif} For I:=0 to AQuery.Params.Count-1 do begin P:=AQuery.Params[i]; - If (P.Name=IDFieldName) and DoNewID then - SetTypedParam(P,GetNewID) - else If Adaptor.TryFieldValue(P.Name,S) then - SetTypedParam(P,S) - else If Adaptor.TryParamValue(P.Name,S) then - SetTypedParam(P,S) - else - P.Clear; + B:=Assigned(FOnGetParamValue); + if B then + FOnGetParamValue(Self,P,B); + if not B then + begin + If (P.Name=IDFieldName) and DoNewID then + SetTypedParam(P,GetNewID) + else If Adaptor.TryFieldValue(P.Name,S) then + SetTypedParam(P,S) + else If Adaptor.TryParamValue(P.Name,S) then + SetTypedParam(P,S) + else + P.Clear; + end; end; {$ifdef wmdebug}SendDebug('Exiting ApplySQLPArams');{$endif} end; @@ -336,6 +350,11 @@ begin ApplySQLParams(FQuery); end; +function TCustomSQLDBWebDataProvider.SQLQuery: TSQLQuery; +begin + Result:=FQuery; +end; + function TCustomSQLDBWebDataProvider.GetDataset: TDataset; begin {$ifdef wmdebug}SendDebug('Get dataset: checking dataset');{$endif} |
