标题:Firedac中DataModule的使用
只看楼主
cz012273
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-4-20
 问题点数:0 回复次数:2 
Firedac中DataModule的使用
由于工作需要,用delphi编写了一个简单的数据库管理程序。数据库用SQLite,使用delphi自带的firedac控件实现连接、查询等功能。刚开始用没经验,在每个使用数据库的窗体上都放了一套fdconnection、fdquery、datasource,后两者有的还不止一套(需要同时打开两个以上数据表查询的)。基本功能实现后,就想着能不能优化一下,把fdconnection、fdquery、datasource都放在一个数据模块中集中管理。
按照网上的方法,新建了数据模块datamodule,并根据需要,将对应的连接、查询、数据源都放了进去,一运行,问题来了。
先是窗体上的dbedit控件总是出错,一个窗体改完后运行通过,再运行另一个窗体,又提示原窗体的控件出错,这样反反复复改了若干次,后来发现,是fdquery中初始SQL未设置,在设dbedit的数据源时字段名只能输入不能选择,再加上有几个fdquery重复使用后,造成数据源混乱。
改进方法:数据模块中fdquery每张表建一个,特殊条件查询的再单建,这样在数据模块中调试好SQL语句后,每个窗体上dbedit都可以直接选数据源字段名,确保不出现对应错误。
接下来又发现一个问题:一个窗体上的查询关闭后进入另一个窗体,发现前者对后者有影响。可是清空SQL并重新打开query后,问题依然如故。几番对照终于发现,在前一窗体中修改了fdquery的filter属性,退出时没有改回来,这就导致了上述问题的发生。
最后总结:使用数据模块确实便于数据库的集中管理,不用到每个窗体上设置连接、查询等,同时,SQL语句也可以在fdquery中提前写好,方便各窗体上dbedit等控件的设置,此外,如一些全局变量等也可以设置在数据模块单元中,引用后即可使用。但要注意的就是fdquery使用中一些参数的变化,有些即使清空sql后依然有影响。
搜索更多相关主题的帖子: 数据 窗体 查询 模块 SQL 
2022-04-20 09:35
cz012273
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-4-20
得分:0 
前段时间在CSDN博客里写的,那边限制太多,还是放在这里吧,虽然人少,但留存个资料还是可以的。
2022-04-20 12:21
cz012273
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-4-20
得分:0 
又发现了个datamodule的新用法:可以将一些全局变量、公用函数放在datamodule所在单元,只要引用即可!(做了个导出excel文件的函数,放在datamodule中,正常可用😄)
2022-04-23 18:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508890-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.102679 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved