2012-03-25 10 views
0
Sub connectmysqlnormal() 
Dim objListObj As ListObject 

For Each objListObj In ActiveSheet.ListObjects 

objListObj.Delete 
Next 

ActiveSheet.Cells.Select 
Selection.ClearContents 
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ 
    "ODBC;DSN=localtest;", Destination:=Range("$A$1")).QueryTable 
    .CommandText = Array(_ 
    "SELECT cpu_avg_statistics_0.LOGDATE as 'Date of Month', cpu_avg_statistics_0.CPU as 'CPU Utilization %' FROM test.cpu_avg_statistics cpu_avg_statistics_0 WHERE (cpu_avg_statistics_0.LOGDATE between '2012-02-01' and '2012-02-05') AND (cpu_avg_statistics_0.SERVER_NAME='adm1') ORDER BY cpu_avg_statistics_0.LOGDATE" _ 
    ) 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .ListObject.DisplayName = "Table_Query_from_localtest" 
    .Refresh BackgroundQuery:=False 
End With 
End Sub 

mysqlでSQLを実行すると接続できます。しかし、上記のようにvbaコードに配置すると、 SQLステートメントで型の不一致エラーが発生しました。何か問題を教えてください。行のArrayを使用せずにSQLでmysqlに接続する際にタイプミスマッチエラーが発生しました。

+1

あなたは、MySQLから直接それを実行することはできますか? – NoChance

+0

はい、私は結果をmysqlで実行した後に得ることができます –

答えて

1

試してみてください。

.CommandText = Array(_ 
    "SELECT ..." _ 
    ) 
+0

それは同じです、型不一致 –

+0

申し訳ありません、申し訳ありません、配列を使用しない場合、どうしてですか? –

+0

CommandTextは "string"型のプリミティブ型です。配列はオブジェクトですが、型 "string"ではありません。 – NoChance

0

私はあなたが他のクエリテーブルのproperiesと一緒に次の行が必要だと思う:

.CommandType = xlCmdSql 
関連する問題