各位,我的ado控件中connection属性使用的是另一个单元的TADOConnection
但最近发现,每次都必须打开这个TADOConnection的单元,否则,其他单元使用的ADO控件的connection串为空.不知道为什么.
多谢指教..

解决方案 »

  1.   

    每次都必须打开这个TADOConnection的单元,是什么意思,是创建这个单元吗
      

  2.   

    你把TADOConnection的connected 属性设为true
      

  3.   


    偶爾有這個情況發生。翠前在BDE下是經常,沒有什麼好辦法。
      

  4.   

    因为我是多个unit公用一个unit(XXXunit)里的TADOConnection。所以,其他单元的ado控件的connection属性指定 XXX.ADOconnecton.每次打开其他单元的时候,都必须打开XXXunit单元,否则保存的时候会报错,说是XXXunit单元没有引用到当前工程,直到XXXUnit单元打开时才能保存。可是我的确把XXXunit单元add到project里了。
      

  5.   

    楼主可以到工程文件中将ADOConnection所在的数据窗体创建语句移至主窗体的创建语句之后试一下。
    如下例中的Data Module窗体。program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2},
      Unit3 in 'Unit3.pas' {Form3},
      Unit4 in 'Unit4.pas' {Form4},
      Unit5 in 'Unit5.pas' {DataModule5: TDataModule};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1); //Main Form
      Application.CreateForm(TDataModule5, DataModule5); //Data Module
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm3, Form3);
      Application.CreateForm(TForm4, Form4);
      Application.Run;
    end.
      

  6.   

    其他单元的ado控件的connection属性指定 XXX.ADOconnecton为什么不把所有的ado放在一个datamodule中呢另外,ado.connection=xxx.adoconnection也是没有问题的,主要是你的公共单元中的xxx.adoconnection的字符串是如何设的,在这找找原因吧
      

  7.   

    谢谢。可还是不起作用。单独打开某个单元,其中ado的connecting的属性还是空。
      

  8.   


    你好,即使是在某个单元里引用了公共datamodule的数据集,在不打开那个公共数据集时也是dataset空。
    比方说,我某个单元里的一个DBGridEh指定了公共DataModule里的某个datasource,如果我不在工程里打开这个DataModule,那DBGirdEh里Datasource也是空的。
    唉,真不知道动了什么地方,会变成这样。从前不是这个样子的啊
    各位,有知道的帮帮我吧。谢谢了。实在不知道怎么办了。
      

  9.   

    楼主的意思大概了解:  说的是delphi设计时的问题,不是运行时的问题,还没到编译和运行那会儿。我整理下需求,会的帮看看,因为我也偶尔会碰到,还没解决。
    1.运行delphi建个win32项目;2.新建数据模块dm,放一个adoconnection控件;新建其他窗口unit1、unit2等,并uses了dm模块,放入adoquery等,将窗口上的adoquery的connection设置为dm上的adoconnection控件;3. 保存,关闭项目;
    4. 再打开项目,在不打开dm模块时(即不显示dm的窗体,编辑器没创建dm的实例),打开引用了dm上adoconnection控件的窗体,如unit1等;
    5. 此时的问题现象:unit1的adoquery控件中原来引用的dm上adoconnection已经没了,保存时会提示没有引用dm,强行保存,引用就丢失了,即
      unit1的adoquery.connection = nil了说明:
      dm模块已经生命了全局数据模块变量;
      编译运行都没问题,排除语法错误;
      不是所有项目都这样,不知道楼主是不是。我的是采用了多重可视化集成时出现该问题,也没深究;
      

  10.   

    没有试验,本人通常使用时:
    所有数据控件均放在DM里,若在其它单中需要使用而又不想在DM里再创建,就动态创建,然后指定属性。没有遇见过此类问题
      

  11.   

    当你把ADOconnection放在一个数据模块时,打开这个数据模块,再去打开其它窗口就可以了.
      

  12.   

    应该是ado控件的ACTIVE设置为True,而你又没有打开DataModule5.如果在编写程序时,先打开DataModule5
    然后再打开ado控件所在的窗体
      

  13.   

    在工程文件里面先把DataModule创建出来