Win7环境下Excel2007
Excel中vba代码用odbc连接mysql数据库
安装mysql-connector-odbc-5.1.5-winx64.mis
或mysql-connector-odbc-5.1.6-winx64.mis时连接没问题
但安装mysql-connector-odbc-5.1.10-winx64.mis时会出错
vba中报错:[ODBC Driver Manager]指定的DSN 驱动程序的与应用程序的不一致 
5.1.10版的有什么特殊的地方么, 还是其他原因,望高手指教
注:安装5.1.10版后 配置的DSN能连接数据库成功,但在vba中就不行了 

解决方案 »

  1.   

    连接字符串是什么
    示例:
    Driver={MySQL ODBC 5.1 Driver};Server=localhost;Port=3306;Database=tmp;USER=root;Pwd=123
      

  2.   

    DSN 用的是用户级别的 VBA中连接数据库的代码:Dim myrec As ADODB.Recordset
    Set myrec = New ADODB.Recordset
    Dim adoDef As String
    Dim sql As String
    adoDef = "Provider=MSDASQL;DataSource=gtodb"
    sql = "select count(*) from user"
    myrec.Open sql,adoDef,adOpenForwardOnlyopen时出现错误 (上面的gtodb为设置好的DSN)
      

  3.   


    Driver={MySQL ODBC 5.1 Driver};Server=localhost;Port=3306;Database=tmp;USER=root;Pwd=123
    连接试试DIM CN AS NEW ADODB.CONNECTION
    Set cn = New ADODB.Connection
        cn.Provider = "MSDASQL"
        cn.ConnectionString = "pDriver={MySQL ODBC 5.1 Driver};Server=localhost;Port=3306;Database=tmp;USER=root;Pwd=123"
        cn.Open
      

  4.   

    刚才把32位的mysql数据拆了装了个64的
    驱动也是64的 但结果悲剧了 还是报上面的错
    驱动换成32的 就ok MLGBD这是不是证明64驱动和32驱动的连接匹配串不一样
    望高手们指教啊
      

  5.   

    这种连接方式没用到odbc啊 要使用配置好的DSN 知道的请回帖 谢谢
      

  6.   

    怎么没有用到?上述是MYSQL的ODBC连接字串假设FF为DSNDim CN As New ADODB.Connection
    Dim cr As New ADODB.Recordset   CN.ConnectionString = "DSN=FF;UID=root;Pwd=123"
       CN.Open
       cr.Open "select * from card", CN, adOpenDynamic
       Do While Not cr.EOF
       MsgBox cr(0)
       cr.MoveNext
       
       Loop
      

  7.   

    楼上的方法试了试 
    安装32位的驱动OK 64位的就不ok了
    我的Excel应用程序是32位的 难道就只能用32位的驱动? 
    现在调查这个问题 要确切的答案 望高手指教
      

  8.   

    32位的excel应用程序用64位的驱动报的错就是 驱动和应用程序结构体系不对
    在管理工具里配的DOBC DNS连接测试能连接上
    只是在excel vba中连的时候报错
      

  9.   

    在管理工具里配的DOBC DNS连接测试能连接上:首先确定你的控制面板的ODBC数据源是32位的还是64位的,应该是64位的。
    32位的要通过运行C:\Windows\SysWOW64\odbcad32.exe才行
      

  10.   

    恩 就是在C:\Windows\SysWOW64\odbcad32.exe下配置的32位能连上
    在vba中使用上面的而配置也行在管理工具里配64的驱动也能连上,但在vba中就不报错
     
    数据源?是不是mysql server? 数据库是64位的
      

  11.   

    在管理工具里配64的驱动也能连上,但在vba中使用配好的odbc dsn就报错写错了 不好意思 
      

  12.   

    恩 就是在C:\Windows\SysWOW64\odbcad32.exe下配置的32位能连上
    在vba中使用上面的而配置也行因为是32位的驱动在管理工具里配64的驱动也能连上,但在vba中使用配好的odbc dsn就报错
    因为用的是64位的驱动,驱动和应用程序结构体系不对不用纠结了,32位程序用32位的驱动,64位的程序用64位的驱动,配套使用
      

  13.   

    真的吗 难道我要解脱了?
    64位的驱动和32位的驱动在vba中的连接串写法应该一样吧????? 我的方法和你的方法的都试了,结果都一样(32的驱动ok 64驱动的不ok),不知道还有别的写法不。 如果64和32写法一样的话那就是配套的问题了。
      

  14.   

    不好意思 不知道不满意结贴不能给分 csdn应该弄个不太满意结贴 
    另个贴给你满分