0

Excel VBA アプリケーションに問題があります。Excel VBA を使用して MySQL に接続し、データベースからいくつかの値を取得します。クエリは、テーブル 1 の存在しないデータをテーブル 2 と結合する「左外部結合」です。テーブル 1 には 26000 行、テーブル 2 には 320000 行があります。私のクエリの詳細は、以下のリンクにあります。

not in の MySQL 最適化クエリ

VBA コードは、今日の朝まで問題なく動作していました。朝、「コマンドをプログラムに送信中に問題が発生しました」という警告が表示されました。ただし、警告を無視してプログラムを実行しました。出来た。プログラムを停止した後、上記のエラーを修正することにしました。Microsoft サイトのエラーに対して「Fix it」ソリューションを実行したところ、プログラムが上記のクエリの実行を停止しました。何が起こったのだろうと私は無知に感じます。

  • Excel を 2 回 (Microsoft professional plus 2010) 再インストールしましたが、使用できません。
  • クエリに問題があるかどうかを確認するために、MySQL サーバーでクエリを実行しました。これは問題なく動作し、実行には約 4 分かかります。
  • エクセルの互換モード(C:/program Files(x86)/Microsoft Office/Excel)を変更してみました。役に立ちませんでした。
  • プログラムを約 30 分間実行しましたが、奇妙なことにプログラムがクエリを実行していません。
  • 知らず知らずのうちに設定を変更してしまった可能性があります。しかし、オフィスを再インストールした後でも、クエリを実行できないのはなぜですか?

編集:

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 に答える