VF :SQLCONNECT("ODBC源",'USER','PASSWORD')
PB: 
// Profile dda
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=dda;UID=dba;PWD=sql'"
如是PB建议用直连
ADO:
connstr = "Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=report"
    'connstr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=kwanta;Data Source='" + VarString + "'"
    Adodc1.ConnectionString = connstr
    Adodc2.ConnectionString = connstr

解决方案 »

  1.   

    要想不出現那對話框,
    在Open的時候在字串里加上Prompt=false
      

  2.   

    zqllyh(找感觉),你好我用ODBC,在VC环境下编程实现。事先数据源是建立好的,程序中牵涉到选择数据源的问题,但是没有用户名和密码,程序要求不能出现那个“选择数据源”的对话框。是因为看了msdn上的那句话,我才认为是应该把参数设置好以后就不会出现那个对话框了。这样认为是错误的么?
      

  3.   

    呵呵...楼上都说了...
    还有一点:SQLCA.DBParm = "ConnectString='DSN=dda;UID=dba;PWD=sql'" 
    中,不要有多余的空格(比如在DSN前面有一个空格),否则,就又会出现了...
      

  4.   

    找API函数SQLDataSources,VB申明如下:Private Declare Function SQLDataSources Lib "ODBC32.DLL" (ByVal henv&, ByVal fDirection%, ByVal szDSN$, ByVal cbDSNMax%, pcbDSN%, ByVal szDescription$, ByVal cbDescriptionMax%, pcbDescription%) As Integer
      

  5.   

    请问各位大虾:
    msdn如上提到:在open数据源的时候,如果提供了足够的参数,就可以不出现那个选择数据源的对话框。对这样的理解是否正确?
      

  6.   

    理解正确!
    如果用ADO的话,参数设置正确不会出现对话框
    Delphi则需要设置一下
      

  7.   

    LiaoCheng(光辉岁月) 
    还有待于俺再研究研究!谢谢!
      

  8.   

    俺就研究了一会儿,就上来这么多与会者!
    -----------------------------------------------
    Connectstring="DRIVER=SQL SERVER;SERVER=192.168.01.01;UID=user1;PWD=1234;DATABASE=yourdb"
    以上是连接到一个sql数据库所必须的信息,如果信息不足或不正确,默认
    情况下会弹出一个ODBC对话框提示填写这些信息,通常要保证以上各项连接
    参数的正确性,避免这个对话框出现,因为对用户来说,他很可能并不知道
    它的意思,会认为你的程序有bug.是否允许这个对话框出现,取决于客户端
    的设置,参考N_chow(一劍飄香++)。 
    -----------------------------------------------
    你的理解是正确的,但把意图弄反了。今天好象三千兄在。
      

  9.   

    m_Database.Open(NULL,FALSE,TRUE)CDatabase::Open
    virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC;”, BOOL bUseCursorLib = TRUE );
    throw( CDBException, CMemoryException );Return ValueNonzero if the connection is successfully made; otherwise 0 if the user chooses Cancel when presented a dialog box asking for more connection information. In all other cases, the framework throws an exception.ParameterslpszDSNSpecifies a data source name — a name registered with ODBC through the ODBC Administrator program. If a DSN value is specified in lpszConnect (in the form “DSN=<data-source>”), it must not be specified again in lpszDSN. In this case, lpszDSN should be NULL. Otherwise, you can pass NULL if you want to present the user with a Data Source dialog box in which the user can select a data source. For further information, see Res.
      

  10.   

    请教各位:
    CString DSN=tree.GetItemText(hChapter);
    LPCTSTR ConnectString="ODBC;DSN;UID=Administrator;";
    CDatabase Db;
    Db.Open(DSN,FALSE,FALSE,ConnectString,TRUE);我的程序如上写法,在打开SQL Server数据源的时候就没有问题,可是打开Access、Excel和DBASE 数据文件的时候就出现“不能打开注册表关键字‘SOFTWARE\ODBC\ODBC.INI\Default”。驱动程序的SQLSetConnectAttr失败。
    是不是连接串错误,如何改正?
    谢谢!
      

  11.   

    你試著把這一句:
    Db.Open(DSN,FALSE,FALSE,ConnectString,TRUE); 
    改成:
    Db.Open(DSN,1,FALSE,ConnectString,TRUE); //不出現ODBC對話框

    Db.Open(DSN,2,FALSE,ConnectString,TRUE); //出現ODBC對話框另外,這一句好像也有問題,可以先試著把UID去掉。
    LPCTSTR ConnectString="ODBC;DSN;" //UID=Administrator;"; 
      

  12.   

    N_chow(一劍飄香++),你好!Db.Open(DSN,1,FALSE,ConnectString,TRUE); //不出現ODBC對話框 
    或 
    Db.Open(DSN,2,FALSE,ConnectString,TRUE); //出現ODBC對話框 中的参数值1和2好像没有道理啊,因为第二个参数都是BOOL型的,那样只能保证他是真。另外,我试过了(将UID去掉,并且把参数改成1或者2),都只会出现一个debug错误的对话框,我就只有选择终止了。
      

  13.   

    如果,只去掉UID,而不修改Open中的第二个参数的话,没有编译的错误,但是仍然会出现“选择数据源”的对话框!
      

  14.   

    不是吧?!
    1是代表dbDriverNoPrompt---即不出現ODBC提示框
    2是代表dbDriverPrompt-----即出現在ODBC提示框。我再查查看。
      

  15.   

    连接字串的参数项因连接到不同数据源而异。告诉你一个方法:
    在你的机器c:查找*.DSN文件,用记事本之类的文本编辑器打开它们,
    你就明白对不同数据源的配置参数了,当然其中有些参数不是必须的。
    如果某种数据源的.dsn文件不存在,你可以在控制面板的“ODBC数据源”根据
    wizard提示配置一个。相信你在读完这些文件之后,就明白ODBC连接数据库的
    奥妙所在了,当然这些ODBC驱动程序大多都已升级到 OLEDB PROVIDER方式了。
    这些数据库连接方式通用于各种程序语言(少数对M$愤恨至极的除外)。
    ------------------------------------------------------------
    mm很勤奋,VC++俺仅知些皮毛,还要多向你学习,有道是能者为师。
      

  16.   

    Sorry,搞錯。CDatabase::Open里的參數不支持我剛講的用法。MSDN上好像是說只要把參數都弄齊就不會出現那該死的ODBC對話盒了。指定DSN、UID、Pasword基本就差不多了罷?
      

  17.   

    建好了DSN就可以打开了
    db.open "dsn=Dsnname","sa",""
      

  18.   

    CString DSN=tree.GetItemText(hChapter); 
    LPCTSTR ConnectString="ODBC;DSN;UID=Administrator;"; 
    CDatabase Db; 
    Db.Open(DSN,FALSE,FALSE,ConnectString,TRUE); //第一个参数是DSN的名字,必须已经在ODBC ADMIN中存在的,看看是否错了。
    //如过在连接串指定DSN=,第一个参数可以传NULL。
      

  19.   

    试了一下关于ACCESS的连接:
    在ODBC ADMIN中配一个ACCESS的DSN,把数据库名(路径\*.MDB)配上.
    DSN=配置的DSN NAME
    DB.OPEN(DSN);就OK了。
    你也可以用OPENEX,其实OPEN中有调OPENEX。
    你的做法
    LPCTSTR ConnectString="ODBC;DSN;UID=Administrator;"; 改成
    LPCTSTR ConnectString="ODBC;"也没问题,就是和用默认参数一样。
      

  20.   

    LXJ2001(lxj) 你好!
    注: 1、树控件中的项目是使用SQLDataSources列出的已经建立好的数据源。
         2、采用
    LPCTSTR ConnectString="ODBC;DSN;UID=Administrator;"; 改成 
    LPCTSTR ConnectString="ODBC;"也没问题,就是和用默认参数一样。则不出现如上午所说的错误。而且对于每一种数据源,只要配置好,就没有问题。非常感谢各位的参与。谢谢你们!
      

  21.   

    好了,我就给分了,从大家给我的意见中又让我学到了不少东西。net_steven(吃素的狼) 太过谦虚,折杀俺啦,以后还要向各位虚心学习,希望各位帮助我和你们共同进步啊!!
    ^_^