delphi 自定义函数返回值是数据库一个表格中所需的记录

例如:query1.close;query1.sql.clearquery1.sql.add('select*fromABCwhereaa=111');query1.op... 例如:
query1.close;
query1.sql.clear
query1.sql.add('select * from ABC where aa=111');
query1.open;
就像这样获取记录
表(ABC),字段(aa),记录(111)都要是动态的
展开
 我来答
百度网友3b60ea87f
2012-03-14 · TA获得超过152个赞
知道小有建树答主
回答量:284
采纳率:100%
帮助的人:172万
展开全部
function TForm1.GetData(sqlconn:string;Tablename, FieldName, Fieldvalue: string;var Errmsg:string): Olevariant;
var
adocon: TADOConnection;
adoq: TADOQuery;
dsp: TDataSetProvider;
begin
errmsg:='';
Result:=null;
adocon:=TAdoconnection.Create(nil);

try
adocon.ConnectionString := sqlconn;
adocon.Open();
except
on e:exception do
begin
errmsg:=e.Message;
adocon.Free;
exit;
end;
end;
adoq:=TAdoQuery.Create(nil);
dsp:=TDataSetProvider.Create(nil);
adoq.SQL.Add('select * from '+TableName +'where '+Fieldname+' = '''+FieldValue+'''');
dsp.DataSet:=adoq;

try
adoq.Open;
result:=dsp.Data;
adocon.Close;
except
on e:exception do
begin
errMsg:=e.Message;
adocon.Close;
adoq.Free;
dsp.Free;
adocon.Free;
exit;
end;
end;
adocon.Close;
adoq.Free;
dsp.Free;
adocon.Free;
end;

此方法返回的Olevariant赋给TClientDataSet.data即可还原数据集,而且与数据库是无连接的
xiaochuan610
2012-03-14 · TA获得超过475个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:181万
展开全部
可以在query1.sql.add中使用变量,但要注意字符串要括上单引号的问题。
追问
我想自定义一个函数,可以直接调用,不用每次查询表里面的数据要输四个query1
function 函数名(变量1,变量2……):函数类型
追答
你想用一个QUERY就搞定所有的查询码?这可不是个好方法,我最开始也和你的想法一样,但是很快就发现这样做出来的程序可维护性一点都不好。我现在的做法是:只要有一个查询就用一个QUERY。功能单一,找起来很方便,重用性也不错。
函数这块我是这么解决的,建立一个PAS,定义下面的函数
//0个参数的qry查询
function Query0(qry: TADOQuery; vLast: Boolean=FALSE): Boolean;
begin
qry.Close;
qry.Open;
if vLast then qry.Last;

Result := not qry.IsEmpty;
end;

//1个参数的qry查询
function Query1(qry: TADOQuery; t1,p1: string): Boolean;
begin
qry.Close;
qry.Parameters.ParamValues[t1] := p1;
qry.Open;

Result := not qry.IsEmpty;
end;

//2个参数的qry查询
function Query2(qry: TADOQuery; t1,t2,p1,p2: string): Boolean;
begin
qry.Close;
qry.Parameters.ParamValues[t1] := p1;
qry.Parameters.ParamValues[t2] := p2;
qry.Open;

Result := not qry.IsEmpty;
end;
到时候直接调用函数即可,很方便~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2089d6f25
2012-03-15
知道答主
回答量:51
采纳率:75%
帮助的人:9.3万
展开全部
赞同二楼的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式