C++Builder下的IBX控件使用疑问!
一应用中使用到3个DBLookupComboBox,但出现了几个问题困惑数天,不得解.
环境:
RAD XE下的C++Builder + 自带的InterBase组件 + FireBird2.52数据库
思路:
用IBQuery1取得数据集,一方面通过DBGrdi显示几列简明信息,然后用多个DBEdit和DBLookupComboBox显示相应的各项数据.
3个DBLookupComboBox的ListSource都是用IBQuery产生的数据集作数据源.确认KeyField和ListField都设好.
问题:
1.所有DBEdit显示数据正常,但3个DBLookupComboBox中有2个不显示数据,1个显示正常.确认设置都正确.
2.当执行IBQuery->ApplyUpdate()或IBQuery->Post()时出现莫名错误:用12个字符长的内容更新8个字符长度的字段.
3.能不能在DBGrid中某列0/1数值的列用CheckBox显示出来.之前好像看过一篇文章说表格的列编辑器中可以指定显示数据的控件,但我试过没这个功能的?
经查发现:
1.用IBExpert连入数据库并查看作为ListSource的数据与欲显示的数据一致.但原来字段宽度不一致.后来修改成一样,都是CHAR(8).
2.修改结构后重新测试,一样无法显示.后来把数据环境DataModule中IBQuery1相应的TField字段对象全部删除,此时数据环境中已无任何TField对象.再编译测试,2个之前不显示的有一个显示正常.但剩下的一个无论怎样设还是没法显示.该无法正常显示的字段结构之前也作过调整,但后来绝对也是一致的.
3.当执行IBQuery->ApplyUpdate()时,即使没有做过任何修改,同样会出那个错误提示,Why?
4.刚才用记事本查看了相应窗体的dfm文件,没有发现任何与字段宽度相关的信息,为何删除TField对象后那个DBLookupComboBox就可以正常显示? c++builder 数据库 控件 IBQuery DBLookupComboBox
[解决办法]
是不是字段名用 保留的关键字 了.