我在DataModule里有一个ADOConnection对象,负责连接SQL SERVER数据库,一开始一切都没问题。后来我增加了一个登录窗体,在这个窗体里面又放了一个ADOConnection对象,连接字符串和前面的一个是一样的。当我把启动窗体改成登录窗体后,当连接数据库的时候(ADOConnection.Open)每次都会弹出一个对话框,然后就是出错了。Project Project1.exe raised exception class EDatabaseError with message 'Missing Connection or ConnectionString'. Process stopped. Use Step or Run to continue.

解决方案 »

  1.   

    当我把启动窗体改成登录窗体后?
    你是怎么改的?
    这个很简单啊,你单步调试一下看是哪个adoconnection的connectstring为空
    另:程序只要一个adoconnection就行了啊
      

  2.   

    ADOConnection.loginprompt:=false;了没有
      

  3.   

    在program处首先的手工建datamodule
      

  4.   

    登陆窗口不必再使用ADOConnection.
    调整显示顺序,在主窗体和DataModule创建后先显示登陆窗口。
      

  5.   

    改启动窗体-->Project-->Options-->Forms-->Main Form改了就可以了
    调试的时候connectionstring不是空的。
    如果设成ADOConnection.loginprompt:=false;虽然对话框没有了,但是还是会出错。
      

  6.   

    你可以在ADOConnection.Open以前,调用showmessage(ADOConnection.ConnectionString);
    查看一下到底是什么
      

  7.   

    可能是你在什么地方把connectionstring清空了吧!
      

  8.   

    当连接数据库的时候(ADOConnection.Open)每次都会弹出一个对话框
    你说的错误信息就是没有定义连接字符串。你现在把登录窗口变为主窗体了,因此在登陆窗口的create事件中需要给adoconnectstring赋值。
    application.createform创建窗体时,系统会判断是否现在有主窗体。
      

  9.   

    我按照newsofter(横空出世小霸王)所说,在ADOConnection.Open以前,调用showmessage(ADOConnection.ConnectionString);发现连接字串并不是空值!!!
      

  10.   

    ADOConnection的ConnectionString的值取ADOConnection.Active := True前的字符连接值,
    别取Active后的连接值。
      

  11.   

    整个程序用一个ADOConnection 就可以了。我的做法,在程序中不写一句SQL语句,全部调用存储过程,有一个类专门负责做数据库操作(查询,修改等)这样出了问题很容易修改,我想最好不要在程序中很多单元都去直接操作数据库。