本函数的目的是将操作员表从服务器上取出并保存到本地,但现在遇到两个问题:
1、ClientDataSet和DataSetProvider在创建的时候出错;
2、如果传入参数中有ClientDataSet和DataSetProvider,但在设置ClientDataSet1.ProviderName := 'DataSetProvider1'后,ClientDataSet1.Active := True时会出现“missing Data Provider or Data Packet”的错误function CreateClientFile(poADOQuery:TADOQuery;psFileName:String;):Boolean;
var
l_strSql : String;
ClientDataSet1 : TClientDataSet;
DataSetProvider1 : TDataSetProvider;
begin
if Trim(psFileName) = EmptyStr then
begin
Result := False;
exit;
end;
l_strSql := 'select * from Employees';
poADOQuery.Close;
poADOQuery.SQL.Clear;
poADOQuery.SQL.Add(l_strSql);
try
poADOQuery.Active := True;
except
Result := False;
exit;
end;
TClientDataSet.Create(ClientDataSet1);
TDataSetProvider.Create(DataSetProvider1);
DataSetProvider1.DataSet := poADOQuery;
ClientDataSet1.ProviderName := 'DataSetProvider1';
try
ClientDataSet1.Active := True;
except
Result := False;
Exit;
end;
try
ClientDataSet1.SaveToFile(psFileName,dfBinary);
Result := True;
Exit;
except
Result := False;
Exit;
end;
end;请各位大侠帮忙,很急的!!
1、ClientDataSet和DataSetProvider在创建的时候出错;
2、如果传入参数中有ClientDataSet和DataSetProvider,但在设置ClientDataSet1.ProviderName := 'DataSetProvider1'后,ClientDataSet1.Active := True时会出现“missing Data Provider or Data Packet”的错误function CreateClientFile(poADOQuery:TADOQuery;psFileName:String;):Boolean;
var
l_strSql : String;
ClientDataSet1 : TClientDataSet;
DataSetProvider1 : TDataSetProvider;
begin
if Trim(psFileName) = EmptyStr then
begin
Result := False;
exit;
end;
l_strSql := 'select * from Employees';
poADOQuery.Close;
poADOQuery.SQL.Clear;
poADOQuery.SQL.Add(l_strSql);
try
poADOQuery.Active := True;
except
Result := False;
exit;
end;
TClientDataSet.Create(ClientDataSet1);
TDataSetProvider.Create(DataSetProvider1);
DataSetProvider1.DataSet := poADOQuery;
ClientDataSet1.ProviderName := 'DataSetProvider1';
try
ClientDataSet1.Active := True;
except
Result := False;
Exit;
end;
try
ClientDataSet1.SaveToFile(psFileName,dfBinary);
Result := True;
Exit;
except
Result := False;
Exit;
end;
end;请各位大侠帮忙,很急的!!
TDataSetProvider.Create(DataSetProvider1);
应改为
ClientDataSet1:=TClientDataSet.Create(Self);
DataSetProvider1:=TDataSetProvider.Create(Self);
我试过,但编译的时候语法通不过!
TDataSetProvider.Create(DataSetProvider1);
DataSetProvider1.DataSet := poADOQuery;
ClientDataSet1.ProviderName := 'DataSetProvider1';
应改为
ClientDataSet1:=TClientDataSet.Create(Self);
DataSetProvider1:=TDataSetProvider.Create(Self);
DataSetProvider1.DataSet := poADOQuery;
ClientDataSet1.SetProvider(DataSetProvider1);
另外函数名也需要定义成:
private
{ Private declarations }
function CreateClientFile(poADOQuery:TADOQuery;psFileName:String):Boolean;
function TForm1.CreateClientFile(poADOQuery:TADOQuery;psFileName:String):Boolean;
上一帖帖到一半就不小心按“发出”了,以这一帖为准。
以上在D6+Win2KServer下运行成功。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, DBClient, Provider;type
TForm1 = class(TForm)
Button1: TButton;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function CreateClientFile(poADOQuery:TADOQuery;psFileName:String):Boolean;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function TForm1.CreateClientFile(poADOQuery:TADOQuery;psFileName:String):Boolean;
var
l_strSql : String;
ClientDataSet1 : TClientDataSet;
DataSetProvider1 : TDataSetProvider;
begin
if Trim(psFileName) = EmptyStr then
begin
Result := False;
exit;
end;
l_strSql := 'select * from tb_poem';
poADOQuery.Close;
poADOQuery.SQL.Clear;
poADOQuery.SQL.Add(l_strSql);
try
poADOQuery.Active := True;
except
Result := False;
exit;
end;
ClientDataSet1:=TClientDataSet.Create(Self);
DataSetProvider1:=TDataSetProvider.Create(Self);
DataSetProvider1.DataSet := poADOQuery;
ClientDataSet1.SetProvider(DataSetProvider1);
try
ClientDataSet1.Active := True;
except
Result := False;
Exit;
end;
try
ClientDataSet1.SaveToFile(psFileName,dfBinary);
Result := True;
Exit;
except
Result := False;
Exit;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
str:String;
begin
str:='e:\1.txt';
CreateClientFile(Self.ADOQuery1,str);
end;end.