Excel VBA程序停止执行MySQL查询

时间:2013-07-06 05:43:07

标签: mysql vba excel-vba excel

我的excel VBA应用程序出了问题。我使用我的excel VBA连接MySQL以从数据库中获取一些值。查询是“左外连接”,它将表1的非现有数据与表2连接。表1有26000行,表2有320000行。有关我的查询的更多详细信息,请参阅以下链接。

MySQL optimized query for not in

VBA代码工作得很好,直到今天早上。早上我收到“发送命令到程序”的问题。但是,我只是忽略了警告并执行了程序。有效。停止程序后,我决定修复上述错误。我只是为Microsoft网站的错误做了“修复它”解决方案,我的程序停止执行上述查询。我对将会发生什么感到无能为力。

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

修改

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

1 个答案:

答案 0 :(得分:0)

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

作为最终决议,我做了以下步骤。

  • 已打开C:\ Program Files(x86)\ Microsoft Office \ Office14。
  • 右键单击Excel.exe并选择“属性”
  • 选择兼容性并取消选中“在兼容模式下运行此程序”选项。