起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 223|回复: 11

[搞定][问题]运行功能提示错误**

[复制链接]
发表于 2007-10-15 17:20:17 | 显示全部楼层 |阅读模式
我写了一个很长的sql语句,
在sql server2000里测试通过了
其中有一个条件为 日期rq between ‘2007-01-01’and ‘2007-12-31’
然后我在功能里把这个条件换成参数
日期rq between   :a   and  :b
     DataSetBroker1.DataSet.Params.ParamByName('A').AsDate := DateTimePicker1.Date;
          DataSetBroker1.DataSet.Params.ParamByName('B').AsDate := DateTimePicker2.Date+1;

功能成功运行过一次,
其它的时候老提示错误:“参数数据类型设置错误:ftUnknown”
有几次提示“存在类的循环继承”

这是怎么回事呢?
怎么解决和避免?
回复

使用道具 举报

发表于 2007-10-15 17:43:03 | 显示全部楼层
不会吧,没有任何变动,第一次运行正常的,然后再运行就提示了?应该是有改动的,要不是你自己没有在意,要不就是多人用到你用到的这些资源,别人修改了。

你去检查一下A、B这两个参数的设置,和DataSetBroker1这个数据集代理连接的数据集的参数设置

另外,你可以以“ftUnknown”看看是否能找到与你类似的东东
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-15 17:53:00 | 显示全部楼层
是有有些改动,不过改动不大
     DateTimePicker2.Date := Business.Data.SysSrv.SysService.Time;
          DateTimePicker1.Date := DateTimePicker2.Date - 30;
          DataSetBroker1.DataSet.Active:=False;
          DataSetBroker1.DataSet.Params.ParamByName('A').AsDate := DateTimePicker1.Date;
          DataSetBroker1.DataSet.Params.ParamByName('B').AsDate := DateTimePicker2.Date+1;
          DataSetBroker1.DataSet.Active:=true;
          DataGrid1.ApplyBestFit(nil);

总共就这几局代码
如果我全部写在onshow事件里面就没有事
如果头两句写在onshow事件里,另外的写在按钮事件里就会出错
回复 支持 反对

使用道具 举报

发表于 2007-10-15 18:07:32 | 显示全部楼层
前两句?是
     DateTimePicker2.Date := Business.Data.SysSrv.SysService.Time;
          DateTimePicker1.Date := DateTimePicker2.Date - 30;
这两句?
你设置断点跟踪了吗?值对吗?

如果都写到按钮上呢?正常吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-15 18:11:03 | 显示全部楼层
没有试
我现在是先在show做一次空查询
然后按钮事件就可以随便写了
回复 支持 反对

使用道具 举报

发表于 2007-10-16 08:55:38 | 显示全部楼层
你试试,我觉得跟这连句没有必然的联系,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-16 12:15:23 | 显示全部楼层
确认了一下
如果没有在onshow里写
DataSetBroker1.DataSet.Params.ParamByName('A').AsDate := DateTimePicker1.Date;
          DataSetBroker1.DataSet.Params.ParamByName('B').AsDate := DateTimePicker2.Date+1;
这两句就会出错

我引用的信息里有where  rq  between  :a  and  :b
这之间有什么必然的联系?
回复 支持 反对

使用道具 举报

发表于 2007-10-16 14:51:50 | 显示全部楼层
如果数据集用到参数,必须在数据集打开前给参数赋值,否则就会出问题,

你应该是设置了数据集自动打开,而参数又没有赋值,所以才出来的。跟你前面一直强调说的前两句,一直误导我,以为是
     DateTimePicker2.Date := Business.Data.SysSrv.SysService.Time;
          DateTimePicker1.Date := DateTimePicker2.Date - 30;
这两句,我觉得不应该这样的,

现在你明白了吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-17 09:04:52 | 显示全部楼层
其实3楼我强调的是“另外的写在按钮事件里就会出错”
你应该是设置了数据集自动打开,而参数又没有赋值,所以才出来的

数据集默认是自动打开?不是吧
我没有进行任何设置
也没有用代码来打开
回复 支持 反对

使用道具 举报

发表于 2007-10-17 09:10:33 | 显示全部楼层
默认是自动打开的,
设置数据集打开的地方平台有很多点,请参考 http://bbs.justep.com/forum.php?mod=viewthread&tid=1377

你可以对比一下,数据集是否是打开的,其实你可以屏蔽掉这些代码,运行功能后,看看DataSetBroker1连接的表现控件是否打开了,一看就知道
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-28 20:37 , Processed in 0.043406 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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