关于clientdataset的一点疑问

PengHanxin 2003-11-27 09:53:04
我做了一个数据加载的小应用程序:从文本文件中读取数据,然后再逐条加载到对应的数据表中。我用了clientdataset,在装有delphi的系统下运行良好,但到没装delphi下就无法加载。希望哪位大虾帮忙解决一下。
...全文
21 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
michaelpeng7799 2003-12-02
  • 打赏
  • 举报
回复
客户方可以不用MIDAS*.DLL,在使用了TCLIENTDATASET的UNIT中最上面的USES中多USE一个MIDASLIB试试。
PengHanxin 2003-12-01
  • 打赏
  • 举报
回复
再顶!!!!!!!!!!
PengHanxin 2003-11-29
  • 打赏
  • 举报
回复
唉!
这么久无人问津
自己顶一下
PengHanxin 2003-11-27
  • 打赏
  • 举报
回复
是这样啊!我懂了!我想不用CLIENTDATASET可以获取临时数据集吗?
下面是我的源码,希望可以得到点更改的建议
//*****************创建临时表数据集***************************//
function TDataLoadFrm.CreateTmptab(const AFieldDefs:TFieldDefs):TDataSet;
var
TempTable:TClientDataSet;
begin
TempTable:=nil;
Result:=nil;
if AFieldDefs<>nil then
begin
try
TempTable:=TClientDataSet.Create(Application);
TempTable.FieldDefs.Assign(AFieldDefs);
TempTable.CreateDataSet;
CreateTmptab:=TempTable;
Except
if TempTable<>nil then
TempTable.Free;
CreateTmptab:=nil;
raise;
end
end;
end;

//****************************数据加载************************//
function TDataLoadFrm.DataLoad(FileName,Depart:string):TDataSet;
var
textfilevar: TextFile;
strtemp,strFstFieldType: string;
intLen,intNum,i,j: Integer;
temDataSet:TDataSet;
CliDS:TClientDataSet;
begin
if FileName = '' then exit;
AssignFile(textfilevar,FileName);
Reset(textfilevar);
try
Readln(textfilevar,strtemp) //表名信息
except
showmessage('sdsdf')
end;
Readln(textfilevar,strtemp); //字段信息
intLen := Length(trim(strtemp));
intNum := 0;
for i := 1 to intLen do
if Copy(strtemp, i, 1) = Depart then
intNum := intNum + 1;
CliDS:=TClientDataSet.Create(Application);
temDataSet:=TDataSet.Create(Application);
if pos(Depart,strtemp) > 0 then
begin
for j :=0 to intNum-1 do
begin
CliDS.FieldDefs.Add(copy(strTemp, 1, pos(Depart,strtemp) - 1),ftstring,50,false);
strtemp := copy(strtemp, pos(Depart,strtemp) + 1, length(strtemp) - pos(Depart,strtemp));
end;
end;
temDataSet:=CreateTmptab(CliDS.FieldDefs); //?????????????????????????
Readln(textfilevar,strtemp);
strFstFieldType:= copy(strTemp, 1, pos(Depart,strtemp) - 1); //获得首字段类型
while not SeekEof(TextFileVar) do
begin
Readln(TextFileVar,strtemp);
//得到标记数
intLen := Length(trim(strtemp));
intNum := 0;
for i := 1 to intLen do
if Copy(strtemp, i, 1) = Depart then
intNum := intNum + 1; //数据表列数
if pos(Depart,strtemp) > 0 then
begin
temDataSet.Append;
for j :=0 to intnum-1 do
begin
temDataSet.Fields[j].AsString:=copy(strTemp, 1, pos(Depart,strtemp) - 1);
strtemp:= copy(strtemp, pos(Depart, strtemp) + 1, length(strtemp) - pos(Depart, strtemp));
end
end
else begin
temDataSet.Fields[j].AsString := copy(strTemp, 1, length(strtemp));
end
end;
closefile(textfilevar);
DataLoad:=temDataSet;
end;
zsjzwj 2003-11-27
  • 打赏
  • 举报
回复
clientdataset是客户端的,要远程的就要有一些文件,如midas.dll文件,
这些文件在没有delphi的机子上是没有的,所以在安装时要把服务器、数据库、
及一些支持文件也要打包安装。
PengHanxin 2003-11-27
  • 打赏
  • 举报
回复
我测试的是编译后的.EXE文件。
但我定义是这样写的:
var
TempTable:TClientDataSet;
。。。。。。。。。。
是不是必须导入TClientDataSet类呢?
xiaoqiang123 2003-11-27
  • 打赏
  • 举报
回复
你要打包啊,把相关的DLL,数据库引擎,驱动程序等东东打包好才能用的,关于打包问题你搜一下,以前讨论很多了:)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧