需要这个方法返回TClientDataSet,总是执行到dataSet.open时就报missing data privoder or data packet.请问这段代码有什么问题.
刚接触delphi不久.谢谢!function Employee.GetAllEmp : TClientDataSet;
const ALL_EMP = 'select a.id,a.name,a.gender,a.birthday,a.address from emp as a';
var dataSet : TClientDataSet;
dsProvider : TDataSetProvider;
begin
_query := TADOQuery.Create(nil);
_query.SQL.Add(ALL_EMP);
_query.Connection := _connection; dsProvider := TDataSetProvider.Create(nil);
dsProvider.DataSet := _query;
dsProvider.Name := 'demo'; dataSet := TClientDataSet.Create(nil);
dataSet.Name := 'ds';
dataSet.ProviderName := dsProvider.Name; try
_query.Open;
dataSet.Open;
finally
_query.Close;
end;
GetAllEmp := dataSet;
end;
刚接触delphi不久.谢谢!function Employee.GetAllEmp : TClientDataSet;
const ALL_EMP = 'select a.id,a.name,a.gender,a.birthday,a.address from emp as a';
var dataSet : TClientDataSet;
dsProvider : TDataSetProvider;
begin
_query := TADOQuery.Create(nil);
_query.SQL.Add(ALL_EMP);
_query.Connection := _connection; dsProvider := TDataSetProvider.Create(nil);
dsProvider.DataSet := _query;
dsProvider.Name := 'demo'; dataSet := TClientDataSet.Create(nil);
dataSet.Name := 'ds';
dataSet.ProviderName := dsProvider.Name; try
_query.Open;
dataSet.Open;
finally
_query.Close;
end;
GetAllEmp := dataSet;
end;
function Employee.GetAllEmp : TClientDataSet;
const ALL_EMP = 'select a.id,a.name,a.gender,a.birthday,a.address from emp as a';
var dataSet : TClientDataSet;
dsProvider : TDataSetProvider;
begin
_query := TADOQuery.Create(nil);
dsProvider := TDataSetProvider.Create(nil);
try
_query.SQL.Add(ALL_EMP);
_query.Connection := _connection;
_query.Open; dsProvider.DataSet := _query;
//dsProvider.Name := 'demo'; dataSet := TClientDataSet.Create(nil);
//dataSet.Name := 'ds';
dataSet.data := dsProvider.Data;///!!!!!
finally
dsProvider.Free;////一定要释放!!!
_query.Free;
end;
{try
_query.Open;
dataSet.Open;
finally
_query.Close;
end;}
Result:= dataSet;
end;