我有一个工程,
1)里面有两个窗体  A和B,
2)一个数据模块DM,DM里有一个ADOConnection1,一个ADOQuery1(通过ADOConnection1连接一张表T)
我在A中并未用到DM.ADOQuery1,可是当我在B中用一个新的ADOQuery控件ADOQueryB通过DM.ADOConnection1
连接表T时,却编译不通过,提示“数据异常突起”,我非得把B中的DataSource连接在DM.ADOQuery1上才可以编译执行
我已经在A中用了DM.ADOQuery1.Connection.Close;  DM.ADOQuery1.Close; 还是一样的错误!实在百思不得其解!还请各位前辈指点!
谢谢~~

解决方案 »

  1.   

    不懂啊,用了datamodule為什麼還要在程序裡加一個adoquery呢,直接用datamodule中的不好嗎
    可能是建立了datamodule以後就不允許在其它窗體中建立數據連接
      

  2.   

    检查
    ADOConnection1的连接语句
    以及Adoquery的Sql写法
      

  3.   

    還是不太了解樓主的情況在B窗體中,放置一個TButton,並定義其雙擊事件為:
    procedure B.Button1Click(Sender: TObject)
    var
      AdoQuery1: TAdoQuery;
    begin
      AdoQuery1 := TADoQuery.Create(Self);
      AdoQuery1.Connection := DM.AdoConnection1;
      AdoQuery1.SQL.Text := 'select * from tablename';
      AdoQuery1.Open;
      DataSource1.DataSet := AdoQuery1;
      //後面別忘了釋放
    end;
      

  4.   

    多个adoquery不能同时连一个表?
    不可能有这个限制的。
    楼主再找找其它原因
      

  5.   

    我用金山快译翻译了一下,错误的提示是:项目:test.exe突起的故障类EstackOverflow有消息'栈溢出'过程终止请大家帮我看看,这是那里错拉~谢谢~
      

  6.   

    检查你Adoquery的事件以及里面字段的事件
    最好设断点
    应该是那个事件被循环调用
      

  7.   

    还是我题目的问题!!还是一样~
    没有事件重复~
    B表中的ADOQueryB的 active 一为true  就出错~~
    大家帮我看看~~
      

  8.   

    提示"ConnectionString "连接错误~错误指向   Application.CreateForm(TDM, DM);  //这是数据模块DM
      

  9.   

    是否是在B FORM中未USE 数据模块DM?导致ADOQueryB无法连到DM的ADOCONNECTION1?
      

  10.   

    啊~?!"在B FORM中未USE 数据模块DM"就不会导致ADOQueryB无法连接DM的ADOCONNECTION1吗?
    等我试试~~
      

  11.   

    不是!!看错拉!peterruan226(紅魔)是说    "未"   使用啊!!??
    我使用拉!我把DB加如到B中拉!!谢谢~
      

  12.   

    啊!!!
    终于找到错误拉!!
    原来我把: Application.CreateForm(TDM, DM);放在了 Application.CreateForm(TB, B); 之后!!但我有点疑惑!
    为什么关于A窗口的, Application.CreateForm(TA, A);  我也是放在 Application.CreateForm(TDM, DM); 之后!!为什么A 就对!而B 不对呢!?
      

  13.   

    不是啊!
    我在A中用调用了DM, 再B中没有用到DM啊!?
    单步执行:( A中:用DataSourceA调用了DM, B中:也用DataSourceB调用DM, 新的ADOQueryB没有调用DM的ADOCONNECTION1)
    Application.CreateForm(TA, A);  
    Application.CreateForm(TB, B);  
    Application.CreateForm(TDM, DM);//正确
    单步执行:( A中:用DataSourceA调用了DM, B中:也用DataSourceB调用DM, 新的ADOQueryB 有 调用DM的ADOCONNECTION1)
    Application.CreateForm(TA, A);  
    Application.CreateForm(TB, B);  
    Application.CreateForm(TDM, DM);//错误,提示ADOCONNECTION1连接的错误这是什么原因呢?! 莫非DataSource调用DOQuery不用先创建DM!?困惑!谢谢~各位~
      

  14.   

    Application.CreateForm(TA, A);里的DataSource是连接DM里的adoquery的对吧
    Application.CreateForm(TB, B);这里如果没有adoqueryp这句就可以了Application.CreateForm(TDM, DM);//
    以后写程序首先要创建数据模块
      

  15.   

    哦!就是说我说的"DataSource调用DOQuery不用先创建DM"!?