procedure TADODM.DataModuleCreate(Sender: TObject);
begin if login.s='A工厂'then
 begin;
  
  xconn.ConnectionString:='.....';
  xconn.Connected:=true; end; if login.s='B工厂' then
 begin;  xconn.ConnectionString:='........';
  xconn.Connected:=true; end;
end;
以上是想动态控制一DataModule里的ADOCONECTION的数据库连,其中login.s是一个LOGIN窗体里第一的一个全局变量。在其他窗体都能调用这个LOGIN.S,但就是在这个
DataModule里,上述代码不能执行,请问怎么解决?

解决方案 »

  1.   

    在什么时候login.s赋值的?~~在login.s赋值的地方加上
      ShowMessage('b');procedure TADODM.DataModuleCreate(Sender: TObject);
    begin
      ShowMessage('a');看看谁先执行了?~~
      

  2.   

    login.s是一开始登陆就赋值的,其他窗体调用都没问题的
      

  3.   

    procedure TADODM.DataModuleCreate(Sender: TObject);
    begin
      ShowMessage('a');在这里加上ShowMessage('a');,编译都通过不了。楼上的兄弟再帮忙看看,提示如下错误
    [Error] Unit1.pas(39): Undeclared identifier: 'showmessage'
      

  4.   

    要引用Dialogs单元~~//...
    implementationuses Dialogs;
    //...
      

  5.   

    zswangII你好:
     你说的对,我测试了,
    ShowMessage('a');先出来,也就是说在login.s赋值之前就执行了该语句
    那怎样解决呢?
      

  6.   

    //方法1
    program Project1;
    //....
    begin
      Application.Initialize;
      { TODO : 登录在Application.CreateForm(TADODM, ADODM)之前调用 }
      Application.CreateForm(?, ?);
      Application.CreateForm(TADODM, ADODM);
      Application.Run;
    end.//方法2
    把代码移到login.s赋值后的地方
      

  7.   

    谢谢你 zswangII我试试看
    可惜我没分给你了,请原谅。我也不知道我现在为什么没给分的权利