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即可还原数据集,而且与数据库是无连接的
可以在query1.sql.add中使用变量,但要注意字符串要括上单引号的问题。
赞同二楼的。