起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 770|回复: 29

【搞定】将query中的数据赋给代理数据集出错**

[复制链接]
发表于 2007-10-19 12:02:06 | 显示全部楼层 |阅读模式
我声明了一个过程,具体如下:调用时出错,错误提示见图
procedure SetDataSetValue(DataSet:TDataSet;Query2:TQuery);

procedure TXGPG.SetDataSetValue(DataSet:TDataSet;Query2:TQuery);
var lFieldName:String;
    I:Integer;
begin
  DataSet.Open;
  DataSet.EmptyDataSet;
  Query2.Open;
  Query2.First;
  while not Query2.Eof do
  begin
  DataSet.Open;
  DataSet.Append;
   for I:= 0 to Query2.FieldCount-1 do
   begin
     lFieldName := Query2.Fields[I].FieldName;
     DataSet.FieldByName(lFieldName).AsVariant:=Query2.FieldByName(lFieldName).AsVariant;
   end;
   DataSet.Post;
   Query2.Next;
  end;
  DataSet.First;
end;

未命名.jpg

10.84 KB, 下载次数: 259

回复

使用道具 举报

发表于 2007-10-19 14:12:32 | 显示全部楼层
楼主,设置断点跟踪一下,看看执行哪句出错,变量或者参数对吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-19 14:22:27 | 显示全部楼层
DataSet.Open;
这句就停了,不明白原因……
编译没问题,运行时候出的错
回复 支持 反对

使用道具 举报

发表于 2007-10-19 14:27:59 | 显示全部楼层
你DataSet的结构和Query的结构一样吗?
]根据代码判断错误可能是没有
DataSet.FieldByName(lFieldName) 这个地址存在。你调试跟一下,看报错前这个变量是什么?
回复 支持 反对

使用道具 举报

发表于 2007-10-19 14:28:19 | 显示全部楼层
DataSet 这是啥,数据集ID?数据代理ID?

把DataSet换个名字,
回复 支持 反对

使用道具 举报

发表于 2007-10-19 14:31:54 | 显示全部楼层
这段代码里面有两句DataSet.Open;
楼主你在报错停的代码上设一下断点,看执行前的变量有没有为nil的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-19 14:55:00 | 显示全部楼层
不好意思,我问题没说太清楚
我在是窗体中放一个名为datasetbroker1的数据集代理的,直接用的上面那个过程。我这样用对不??dataset不是数据集ID,也不是数据代理ID,只是一个参数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-19 14:57:32 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-19 14:59:11 | 显示全部楼层
回复4楼的,DataSet.FieldByName(lFieldName) 这个地址存在
这边并没有错,我用另一个过程把query2的数据读出来了,也是用这种方式读的
回复 支持 反对

使用道具 举报

发表于 2007-10-19 15:55:14 | 显示全部楼层
请回答一下6楼的问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 07:00 , Processed in 0.042081 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表