Excel VBA MySQL“SELECT * FROM table”不完整的信息

Excel VBA代码从MySQL数据库中select值,我有一个很奇怪的问题。 我使用以下列构build了一个简单的数据库:

  1. ID
  2. 名称

让我们假设有以下的东西:

01; 泛; 彼得; NYC
02; P: 彼得; NYC

但现在的问题,如果我从我的表中select*它只显示我以下输出:

01; P: 泛; NYC
02; P: 泛; NYC

这意味着我只能看到一个入口的最小长度……那里发生了什么? 我在这个任务的不同模块里有非常随意的VBA代码:

公共variables:

Public cn As ADODB.Connection Public rs As ADODB.Recordset Public strSql As String 

连接模块:

 Public Function connectDB() Dim strServer_Name As String Dim strDB_Name As String Dim strUser_ID As String Dim strPassword As String With Sheet2 strServer_Name = .Range("B2").Value strDB_Name = .Range("B3").Value strUser_ID = .Range("B4").Value strPassword = .Range("B5").Value End With Set cn = New ADODB.Connection cn.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver}" & _ ";SERVER=" & strServer_Name & _ ";DATABASE=" & strDB_Name & _ ";UID=" & strUser_ID & _ ";PWD=" & strPassword & "" End Function 

子模块:

 Sub request() strSql = "SELECT * FROM test" Call connectDB Set rs = New ADODB.Recordset rs.Open strSql, cn, adOpenDynamic With Sheet1.Range("A1") .ClearContents .CopyFromRecordset rs End With Call disconnectDB End Sub 

这是一个VBA问题还是在我的MySQL有任何错误?

好吧,我在这篇文章中find了一个解决scheme: sql-query-doesnt-return-full-results-for-only-one-field

像其他人一样解决它。 在我的代码中,它看起来像这样:

 Sub request() Dim iCols As Integer Dim iRows As Integer strSql = "SELECT * FROM test" Call connectDB Set rs = New ADODB.Recordset rs.Open strSql, cn, adOpenDynamic iRows = 10 While Not rs.EOF For iCols = 0 To rs.Fields.Count - 1 Tabelle1.Cells(iRows, iCols + 1).Value = rs.Fields(iCols).Value Next rs.MoveNext iRows = iRows + 1 Wend Call disconnectDB End Sub 

但是,感谢所有试图帮助我的人!