我看到别人这样用query控件
先添加1个query控件,然后再
public
{ Public declarations }
procedure SetDianDiaoSQL(var Query:TQuery);
procedure SetDianDiaoParam(var Query:TQuery;Param:string);
procedure DianDiaoView;
分别在各个procedure中再写内容
最后删除query控件,程序可以运行,是不是说没有query控件也可以,
请高手解释其中原因,现在我在做打印了,rvcustomconnection该怎么设置呢
先添加1个query控件,然后再
public
{ Public declarations }
procedure SetDianDiaoSQL(var Query:TQuery);
procedure SetDianDiaoParam(var Query:TQuery;Param:string);
procedure DianDiaoView;
分别在各个procedure中再写内容
最后删除query控件,程序可以运行,是不是说没有query控件也可以,
请高手解释其中原因,现在我在做打印了,rvcustomconnection该怎么设置呢
解决方案 »
- 求类似迅雷那样在标题栏右侧添加的菜单控件
- SQL更新问题,请教高手一个问题
- OLEVarianr类型的数据有没有类似于free的方法。我的意思是说现在V里有东西,能不能把它干掉!
- 分布式系统开发问题,高手请进
- fastreport2.5的主细表问题,用ADOQuery如何实现?
- 谁来捡分?
- 谁能帮我!!
- 怎么作出类似word里面的window的工具条?主要是显示出已经打开的子窗口
- 我是delphi5只能选择office97,请问有没有delphi5支持office2000的升级补丁,那里下
- 那位大师指点一下关于CLientDataSet中的统计字段的用法
- 紧急招聘:Delphi 程序员-北京中关村
- 调整控件位置问题!急!!!
大多数情况是把实参传进去,不需要输出procedure SetDianDiaoSQL( Query:TQuery);
unit Unit3;interfaceuses
SysUtils, Classes, DB, DBTables,Dialogs;type
TEASYTABLE = class
Protected
EasyQuery:TQuery;
Public
Constructor Create();
Destructor Destroy();override;
Procedure setData(DatabaseName:string;DataSource:TDataSource);
Procedure UpdateTable(sql:string);virtual;
function Seach(select, selectinto, from,where,whereDesign,GroupBy,
Having,Orderby: string;whereDesignEnabled:Boolean ): string;
function inster(into,Fields,values:string):string;
function update(update,Fields,values,where:string):string;
function delete(from,where:string):string;
function SelectProcedure(select,Procedurename,parameters:string):string;
function ExecuteProcedure(Procedurename,parameters:string):string;
procedure EasyQueryAfterInsert(DataSet: TDataSet);
Procedure UpdateTable1(sql:string);virtual;
end;implementation{ TEASYTABLE }constructor TEASYTABLE.Create();
begin
EasyQuery:=TQuery.Create(EasyQuery);
EasyQuery.AfterInsert:=EasyQueryAfterInsertend;destructor TEASYTABLE.Destroy;
begin
EasyQuery.Close;
EasyQuery.Free;
inherited;
end;function TEASYTABLE.inster(into, Fields, values: string): string;
var
s:string;
begin
if (into <>'')then
s:='INSERT INTO '+into
else begin
s:='Into must have a value!';
Result:=s;
exit;
end;
if (Fields <>'')then
s:=s+' ('+Fields+') '
else begin
s:='Fields must have a value!';
Result:=s;
exit;
end;
if (values <>'')then
s:=s+'Values ('+values+') '
else begin
s:='values must have a value!';
Result:=s;
exit;
end;
Result:=s;
end;procedure TEASYTABLE.UpdateTable(sql: string);
begin
EasyQuery.Close;
EasyQuery.SQL.Clear;
EasyQuery.SQL.Add(sql);
if pos('select',sql)=1 then
EasyQuery.Open
else
EasyQuery.ExecSQL;
end;
procedure TEASYTABLE.setData(DatabaseName: string;
DataSource: TDataSource);
begin
EasyQuery.DatabaseName:=DatabaseName;
DataSource.DataSet:=EasyQuery;
end;function TEASYTABLE.Seach(select, selectinto, from, where, whereDesign,
GroupBy, Having, Orderby: string; whereDesignEnabled: Boolean): string;
var
s:string;
sWhere:string;
begin
s:='select '+select;
if (selectinto <>'')then begin
s:=s+' into '+ selectinto;
end;
s:=s+' from '+from;
swhere:=where;
if (whereDesign<>'') and whereDesignEnabled then
if swhere=''then
swhere:=whereDesign
else
swhere:=swhere+' and ('+whereDesign+')';
if swhere<>''then
s:=s+' where '+swhere;
if GroupBy<>''then
s:=s+' Group By '+GroupBy;
if Having<>''then
s:=s+' having '+ Having;
if Orderby<>''then
s:=s+' order by '+Orderby;
result:=s;
end;function TEASYTABLE.delete(from, where: string): string;
var
s:string;
begin
if (from <>'')then
s:='DELETE FROM '+from
else begin
s:='FROM must have a value!';
Result:=s;
exit;
end;
if (where <>'')then
s:=s+' WHERE '+where
else begin
s:='Where must have a value!';
Result:=s;
exit;
end;
Result:=s;
end;function TEASYTABLE.update(update, Fields, values, where: string): string;
var
s:string;
begin
if (update <>'')then
s:='UPDATE '+update+' SET '
else begin
s:='UPDATE must have a value!';
Result:=s;
exit;
end;
if (Fields <>'')and(values <>'')then
begin
while(pos(',',Fields)<>0)and (pos(',',values)<>0) do
begin
s:=s+copy(Fields,1,pos(',',Fields)-1)+'='
+copy(values,1,pos(',',values)-1)+',';
Fields:=copy(Fields,pos(',',Fields)+1,length(Fields));
values:=copy(values,pos(',',values)+1,length(values));
showmessage(Fields+' '+values);
end;
s:=s+Fields+'='+values; end
else begin
s:='Fields and values must have a value!';
Result:=s;
exit;
end;
if (where <>'')then
s:=s+' where '+where
else begin
s:='where must have a value!';
Result:=s;
exit;
end;
Result:=s;
end;procedure TEASYTABLE.EasyQueryAfterInsert(DataSet: TDataSet);
begin
showmessage('Insert');
end;function TEASYTABLE.ExecuteProcedure(Procedurename, parameters:string): string;
var
s:string;
begin
if (Procedurename <>'')then
s:='Execute Procedure '+Procedurename
else begin
s:='Procedurename must have a value!';
Result:=s;
exit;
end;
if (parameters <>'')then
s:=s+'('+parameters+')'
else begin
s:='parameters must have a value!';
Result:=s;
exit;
end;
Result:=s;
end;function TEASYTABLE.SelectProcedure(select, Procedurename,
parameters: string): string;
var
s:string;
begin
if (select <>'')then
s:='select '+select
else begin
s:='select *';
end;
if (Procedurename <>'')then
s:=s+' from '+Procedurename
else begin
s:='Procedurename must have a value!';
Result:=s;
exit;
end;
if (parameters <>'')then
s:=s+'('+parameters+')'
else begin
s:='Procedurename must have a value!';
Result:=s;
exit;
end;
Result:=s;
end;procedure TEASYTABLE.UpdateTable1(sql: string);
begin
showmessage('ok');
end;end.
我看到别人做的查询没用query控件,只是直接定义了
procedure SetDianDiaoSQL(var Query:TQuery);
procedure SetDianDiaoParam(var Query:TQuery;Param:string);
procedure DianDiaoView;
然后分别在PROCEDURE中写内容,就可以查询,这是什么原理,能解释一下吗?
是先用1个QUERY 然后设好QUERY控件的属性 ,在删掉,就可以这样用了