请教大家一个关于ADOTable的数据库问题:
一个界面上有五个Panel,每个Panel上都有一组不同的控件,分别连接五个不同的表,每个表的字段不一样多。每个Panel上面有很多DBEdit,DBCheckBox等,分别连接到对应的表。在这个界面上,只有一个添加,一个保存,一个确定,所以只用了一个ADOTABLE来对应一个表,现在问题是,当ADOTABLE open 时就会弹出一个错误来,说某一个表的某一个Field 名称找不到,点了确定能进到这个界面里面,里面的值也是对的,记录也找出来了,但就是要弹这么个错误,
问题,我觉得是因为同一个ADOTABLE被子N个DB控件连接了,而不同的DB控件,又是连接不同的表的,这样,当打开ADOTABLE时,有个DB控件不是连接当前表的就会找不到相应的Field ,就弹出错误,而找到了的,肯定就不弹了,但现在也想不通的是,就弹一个,之后,其他的却不弹,按理说不止一个DB控件找不到相应的Field啊,应该要弹很多啊。不知道是哪里的问题,有朋友愿意帮我看看吗?
不知道我说明白了没有,麻烦大家了。先谢谢了。

解决方案 »

  1.   

    不要用DBEdit之类的玩意,用普通文本控件,然后自己写代码控制edit的显示
      

  2.   

    要不就用多个table控件吧,避免不必要的麻烦。
      

  3.   

    那你只能把其他不该连接的dbedit的datasource先设为nil
      

  4.   

    应该是你的ADOTable上设置了不存在的字段
      

  5.   

    TO: xcc610  字段是肯定存在的。我一个一个的试了,把ADOTABLE的表换了,再到DB上去设置有那个字段名的。TO: bdmh
      把那个弹出错误的字段的DATASOURCE设置为空后,昨天就试了,以为行的,但是不行,就弹出下一个字段的错误,一样的,但是那个字段是在那个表里存在的。TO zxf_feng yct0605 两位
      项目必须要用一个ADOTABLE。没办法,不然,实现起来很麻烦啊。我想,一个ADOTABLE应该是可以解决的。
     
    下面代码是我在打开ADOTABLE之前,把这个界面上的这两类用到DB的控件都设置为禁用了,但是进去,还是错误。就是当禁用了之后,ADOTABLE OPEN之时,不知是ADOTABLE感知访问DB控件,还是DB控件感知访问ADOTABLE,还是弹出一个相同的错误。实在是有点乱啊。郁闷,找不着问题的根点啊。for i:=0 to self.ComponentCount-1 do
    begin
      if (self.Components[i] is TDBEdit) then
        (self.Components[i] as TDBEdit).Enabled := false;
       if (self.Components[i] is TDBCheckBox) then
          (self.Components[i] as TDBCheckBox).Enabled:=false;
    end;
      

  6.   

    ADOTable.active:=false;
    然后选择ADOTable.talbename
    然后在打开ADOTable.active:=true;
    这样做事因为数据表连接的时候是不能更换数据表的,否则就报错
      

  7.   

    同意.如果楼主一定要用单个ADOTABLE,可以参考8楼的方式先断开连接再改表.
    更妥当的方法是用多个ADOTABLE,每个ADOTABLE 对应一个表.
      

  8.   

    TO :happyqing5837060还是不行。很晕。
      

  9.   

    我之前是把ADOTABLE CLOSE 之后,再能ADOTABLE tablename传值,然后再用ADOTABLE OPEN.
    这和你的ACTION,应该是一样的吧?