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)都要是动态的 展开
query1.close;
query1.sql.clear
query1.sql.add('select * from ABC where aa=111');
query1.open;
就像这样获取记录
表(ABC),字段(aa),记录(111)都要是动态的 展开
3个回答
展开全部
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即可还原数据集,而且与数据库是无连接的
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即可还原数据集,而且与数据库是无连接的
展开全部
可以在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;
到时候直接调用函数即可,很方便~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询