0

我的 excel VBA 应用程序有问题。我使用我的 excel VBA 连接到 MySQL 以从数据库中获取一些值。该查询是“左外连接”,它将表 1 的不存在数据与表 2 连接起来。表 1 有 26000 行,表 2 有 320000 行。我的查询的更多详细信息可以在下面的链接中找到。

MySQL 优化查询为 not in

直到今天早上,VBA 代码都运行良好。早上我收到“向程序发送命令时出现问题”警告。但是,我只是忽略了警告并执行了程序。有效。停止程序后,我决定修复上述错误。我刚刚为 Microsoft 站点的错误执行了“修复它”解决方案,我的程序停止执行上述查询。我不知道会发生什么。

  • 我重新安装了两次excel(Microsoft Professional plus 2010),但没有用。
  • 我在 MySQL 服务器中运行查询以检查查询是否有问题。它工作得很好,大约需要 4 分钟才能执行。
  • 我尝试更改 excel 的兼容模式(C:/program Files(x 86)/Microsoft Office/Excel)。它没有帮助。
  • 我运行我的程序大约半小时,但奇怪的是我的程序没有执行查询。
  • 我相信我可能在不知不觉中改变了我的设置。但是即使重新安装了office,为什么我无法执行查询?

编辑:

Private Sub CommandButton1_Click()
Start
End Sub

Function Start()
Dim f1, f2, f3, Increment
Dim oConn As ADODB.Connection
Dim rsPass As ADODB.Recordset
Dim sql As String
Dim strBatchName, obj, res

Set oConn = New ADODB.Connection
oConn.Open "ramesh"
sql = "My Left outer join query goes here"
Set obj = oConn.Execute(sql)
Do Until obj.EOF
Sleep 1000
f1 = obj.Fields(0).Value
f2 = obj.Fields(1).Value
f3 = obj.Fields(2).Value
Increment = GetMaximumID
Search f1:=f1, f2:=f2, f3:=f3, 
Increment:=Increment
obj.MoveNext
Loop
oConn.Close
End Function

Function GetMaximumID() As Integer

Dim oConn As ADODB.Connection
Dim rsPass As ADODB.Recordset
Dim sql As String
Dim Increment, obj
Set oConn = New ADODB.Connection
oConn.Open "ramesh"
sql = "SELECT max(id) FROM AutoIncrementor"
Set obj = oConn.Execute(sql)
Increment = obj.Fields(0).Value
oConn.Close
GetMaximumID = Increment
End Function

Function Search goes here
4

1 回答 1

0

好吧,似乎兼容性问题造成了问题。我使用的是 Microsoft Professional plus 2010。我重新安装了 Office,并按照以下链接中提到的大部分步骤进行操作。
http://www.jkp-ads.com/Articles/StartupProblems.asp

作为最终解决方案,我执行了以下步骤。

  • 打开 C:\Program Files (x86)\Microsoft Office\Office14。
  • 右键单击 Excel.exe 并选择属性
  • 选择兼容性并取消选中“以兼容模式运行此程序”选项。
于 2013-07-06T17:11:25.620 回答