在数据模块中使用firedac的问题

秋天之落叶 2019-06-27 04:06:26
在一个主窗体中,放入firedac控件使用,一切正常。
增加一个dm数据模块,放置firedac控件,主窗体中引用数据模块,然而在使用控件属性时,显示错误:参数值没有定义,无法编译。ADO控件没有这种情况。
在主窗体上加入Tfdconnection控件再删除后,使用正常(主窗体的uses中就留下了控件引用)。
有点糊涂,就应该是这样吗?没记得ADO或其他控件需要这样操作呢?我丢了什么吗?

比如:
datamodule2.fdbatchmove1.mode:=dmalwaysinsert;
其中dmalwaysinsert显示错误,且无法编译。
...全文
167 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
ADO应该也一样,或者说任何类型的项目都有这样的问题,比如你把主窗体单元引用的ADO相关单元都去掉,只引用一个数据模块单元,然后:dm1.ADOQuery1.LockType := ltBatchOptimistic; 肯定也是编译错误
之所以你觉得用ADO没碰到这个问题,可能因为你是ADO老手,新建项目上来就添加了一些ADO组件,之后再删除,只要当前单元还用到ADO相关单元中的符号,uses部分对ADO相关单元的引用就不会被IDE删除

秋天之落叶 2019-06-28
  • 打赏
  • 举报
回复
和我想的一样,思路是对的。不过为什么ADO使用时没有发现类似的问题?两个控件的运行原理不一样吗?还是ADO有意无意的自己加了进去?

引用 1 楼 早打大打打核战争 的回复:
因为dmalwaysinsert之类的定义在FD相关单元,你在主窗体中放入firedac控件,IDE自动把相关单元的引用加入到主窗体那个单元的uses部分,如果你放在数据模块中,这些引用添加到了数据模块的那个单元中,主窗体的单元在编译的时候就找不到那些符号,单元的引用不是传递的,A引用B,B引用C,A中并不能看到C(接口部分)的符号,A也需要uses C;才行
秋天之落叶 2019-06-28
  • 打赏
  • 举报
回复
原来如此,应该是无意中加入的
  • 打赏
  • 举报
回复
因为dmalwaysinsert之类的定义在FD相关单元,你在主窗体中放入firedac控件,IDE自动把相关单元的引用加入到主窗体那个单元的uses部分,如果你放在数据模块中,这些引用添加到了数据模块的那个单元中,主窗体的单元在编译的时候就找不到那些符号,单元的引用不是传递的,A引用B,B引用C,A中并不能看到C(接口部分)的符号,A也需要uses C;才行


5,928

社区成员

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

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