手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

通用查询组件设计(续)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

for i := 0 to FOriginalVariables.Count - 1 do

TQuery(FDataSet).ParamByName(TDBVariable(FOriginalVariables[i]).VariableName).Value :=

TDBVariable(FOriginalVariables[i]).VariableValue

else

for i := 0 to FOriginalVariables.Count - 1 do

TQuery(FDataSet).ParamByName(TdBVariable(FOriginalVariables[i]).VariableName).Value :=

TDBVariable(FOriginalVariables[i]).VariableValue;

FDataSet.Open;

SetFields;

FDataSet.EnableControls;

FModifiedSQL.Assign(TStrings(GetOrdProp(FDataSet, SQLProp)));

end;

保存参数值

procedure TDBFilterDialog.SaveParamValues;

var

i : Integer;

begin

//保存参数值

if FDataSet is TDataSet then

for i := 0 to FOriginalVariables.Count - 1 do

TDBVariable(FOriginalVariables[i]).VariableValue :=

TQuery(FDataSet).ParamByName(TDBVariable(FOriginalVariables[i]).VariableName).Value

else

for i := 0 to FOriginalVariables.Count - 1 do

TDBVariable(FOriginalVariables[i]).VariableValue :=

TQuery(FDataSet).ParamByName(TDBVariable(FOriginalVariables[i]).VariableName).Value;

end;

装载过滤对话框

procedure TDBFilterDialog.Loaded;

var

i : Integer;

begin

inherited;

if Assigned(FDataSet) and not (csDesigning in ComponentState) then

begin

SetFields;

OriginalSQL.Assign(TStrings(GetOrdProp(FDataSet, SQLProp)));

for i := 0 to TQuery(FDataSet).Params.Count - 1 do

FOriginalVariables.Add(TDBVariable.Create(TQuery(FDataSet).Params[i].Name,

TQuery(FDataSet).Params[i].Value));

end;

end;

传送消息

procedure TDBFilterDialog.Notification(AComponent: TComponent;

Operation: TOperation);

begin

inherited;

if (AComponent = FDataset) and (Operation = opRemove) then

FDataset := nil;

end;

构造函数

constructor TDBFilterDialog.Create(AOwner: TComponent);

begin

//构造函数

inherited Create(AOwner);

FDialog := TMyDBFilterDialog.Create(self);

FOptions := [fdShowCaseSensitive, fdShowNonMatching];

FDefaultMatchType := fdMatchStart;

Caption := SDBFilterCaption;

FFields := TStringList.Create;

FOriginalSQL := TStringList.Create;

FModifiedSQL := TStringList.Create;

FOriginalVariables := TList.Create;

end;

析构函数

destructor TDBFilterDialog.Destroy;

var

i : Integer;

begin

FDialog.Free;

FFields.Free;

FOriginalSQL.Free;

FModifiedSQL.Free;

for i := 0 to FOriginalVariables.Count - 1 do

TDBVariable(FOriginalVariables[i]).Free;

FOriginalVariables.Free;

inherited Destroy;

end;

执行查询

function TDBFilterDialog.Execute : Boolean;

var

CurrentSQL : TStrings;

begin

//执行数据查询

CurrentSQL := TStrings(GetOrdProp(FDataSet, SQLProp));

// 检查SQL语句是否已经改变了

if not FModifiedSQL.Equals(CurrentSQL) then

OriginalSQL := CurrentSQL;

if FDialog.lstAllFields.Items.Count = 0 then

SetFields;

FDialog.grpSearchType.ItemIndex := Integer(FDefaultMatchType);

if fdShowCaseSensitive in Options then

FDialog.cbxCaseSensitive.Visible := true

else

FDialog.cbxCaseSensitive.Visible := false;

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!