小弟用VB做了个小东东,在我自己机子中安装运行顺利通过,但是一到别的机子上(建立用户DSN和文件DSN连接我的SQL,并测试通过)运行时,碰到有关数据库操作的地方就出现如下提示:"运行时错误:3704,对象关闭时不允许操作".虚心求教,请知道的赐教哪里出了差错,该如何解决.不盛感激!!

解决方案 »

  1.   

    很可能是你的DSN路径已经发生改变了
    最好使用相对路径的办法来连接DSN
      

  2.   

    我用的是sqlserver验证的odbc.以前用的都是windows nt验证的ODBC.没有问题的.
    昨天刚换了系统XP,和测试机子上的系统一样.不能建立从WINDOWSNT验证的ODBC.提示登陆失败.问:我的机子如何设置,才能在测试机子中建立从WINDOWS验证的ODBC.因为我以前在DELPHI中遇到过此类问题.用WINDOWS验证才能在程序中建立连接.
    TO:junki(『打破沙锅问到底』) :我用的是SQL数据库,和路径应该没有关系吧.
    另请教连接字符串如何写才能在客户端不用配置数据源.下面是我的连接字符串:
    DRIVER=SQL Server;SERVER=ZHOUXL;UID=sa;APP=Microsoft Data Access Components;WSID=ZHOUXL;DATABASE=device(其中ZHOUXL是我的机器名,SQL服务器名相同)
      

  3.   

    像这样,把连接字符串写法,做一个窗体,让用户添写服务器名和登录密码.然后可以将配置写到配置文件中.
    ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;" & _
                    " UID=" & Me.txtUserName.Text & ";Pwd=" & Me.txtPwd.Text & ";Initial Catalog=" & _
                    Me.txtDataBase.Text & ";Data Source=" & Me.txtServerName.Text
      

  4.   

    疑问:看了半天, 开始搞不清楚楼主到底用的是ADO还是ODBC连接的数据库系统(有两个都用了之嫌)。解释:
    ADO和ODBC都是数据库引擎(除了这两个之外,还有BDE、DAO、RDO等数据库引擎), 它们都能直接用于连接SQL SERVER, 所以不是特殊需要, 千万别让你的数据连接成为如下所示的: Application -> ADO -> ODBC -> DBMS, 其中的原因我想不用多说大家也能看明白,下面的连接才是正确的:Application -> ADO -> DBMS or Application -> ODBC -> DBMS。
      

  5.   

    楼上,VB中能直接使用ODBC的API吗,太麻烦了把,一般都是使用ADO封装的通过OLE DB来调用的
      

  6.   

    ADO和ODBC都是数据库引擎ADO是数据库引擎吗?
    好像是对OLEDB的封装.
      

  7.   

    安装MDAC最新版试试。不建议用DSN连接数据库,用数据库连接串就OK了。
    http://www.connectionstrings.com/
    ^_^
      

  8.   

    楼上各位:小弟又有问题了。DATAGRID通过什么方法显示记录集RST中的的数据。
    我照 wumylove1234(毁于随) 说的写b好了连接串。问题是:我在窗体显示时要在窗体的DATAGRID中显示查询结果。该用什么方法。因为我以前是通ADODC控件与DATAGRID相连,再给ADODC的RECORDSOURCE赋植来显示查询记录的。
    这个问题解决了三个问题一起结。谢谢诸位了。
      

  9.   

    rst.open "select * from tab",cnn,******
    set datagrid1.datasource=rst(连接对象cnn使用客户端游标。)窗体卸载时,
    set datagrid1.datasource=nothing
    rst.close 
    set rst=nothing
      

  10.   

    ADO、DAO不是数据库引擎,只是数据访问的通用接口,JET,BDE,MSSQLServer才是,数据库引擎是执行所有最终的SQL语句,是数据库产品的核心。