作者 主題: VBA連結ODBC的語法問題  (閱讀 20054 次)

0 會員 與 1 訪客 正在閱讀本文。

tw00024101

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
VBA連結ODBC的語法問題
« 於: 2005-10-04 17:55 »
Private Sub CommandButton1_Click()

Dim StartDate As String
StartDate = "20050101"

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access Database;DBQ=C:\USERSVB\COC00\GOD00\TEMP\BakDb0120050923163407.mdb;DefaultDir=C:\USERSVB\COC00\GOD00\TEMP;DriverI" _
        ), Array("d=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination _
        :=Range("A3"))
        .CommandText = Array( _
        "SELECT D125.D_12501, D125.D12502, D125.D12503, D125.D12505, D125.D12506, D125.D12507" & Chr(13) & "" & Chr(10) & "FROM `C:\USERSVB\COC00\GOD00\TEMP\BakDb0120050923163407`.D125 D125" & Chr(13) & "" & Chr(10) & "WHERE (D125.D_12501 >=StartDate And D125.D_1" _
        , "2501<='20050801')" & Chr(13) & "" & Chr(10) & "ORDER BY D125.D_12501")
       
        '.Name = "來自 MS Access Database 的查詢"
        '.FieldNames = True
        '.RowNumbers = False
        '.FillAdjacentFormulas = False
        '.PreserveFormatting = True
        '.RefreshOnFileOpen = False
        '.BackgroundQuery = True
        '.RefreshStyle = xlInsertDeleteCells
        '.SavePassword = False
        '.SaveData = True
        '.AdjustColumnWidth = True
        '.RefreshPeriod = 0
        '.PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
     End With
    'ActiveWindow.ScrollColumn = 2
    'ActiveWindow.ScrollColumn = 3
    'ActiveWindow.ScrollColumn = 1

End Sub
------
這是一個Excel利用VBA連結access資料庫的一段程式,
程式中,如果
WHERE (D125.D_12501 >=StartDate 改成 WHERE (D125.D_12501 >='20050101'
則會有查詢結果出現,但是'20050101'想用StartDate變數來代替,則會發生錯誤。
請問各位大大,是不是語法中出了什麼問題,或者是寫法不對?
煩請各位大大指教...感恩~~~

jslin

  • 可愛的小學生
  • *
  • 文章數: 15
    • 檢視個人資料
回覆: VBA連結ODBC的語法問題
« 回覆 #1 於: 2010-09-01 13:55 »
可以先透過 Response = MsgBox(StartDate )
去查看字串變數 StartDate  所得到是什麼 ??
看來應該是 20050101 少了前後引號 '20050101' 吧 !!

James Li

  • 可愛的小學生
  • *
  • 文章數: 15
    • 檢視個人資料
回覆: VBA連結ODBC的語法問題
« 回覆 #2 於: 2011-01-14 10:40 »

        ), Array("d=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination _
        :=Range("A3"))
        .CommandText = Array( _
        "SELECT D125.D_12501, D125.D12502, D125.D12503, D125.D12505, D125.D12506, D125.D12507" & Chr(13) & "" & Chr(10) & "FROM `C:\USERSVB\COC00\GOD00\TEMP\BakDb0120050923163407`.D125 D125" & Chr(13) & "" & Chr(10) & "WHERE (D125.D_12501 >=StartDate And D125.D_1" _
        , "2501<='20050801')" & Chr(13) & "" & Chr(10) & "ORDER BY D125.D_12501")
  

End Sub
------
這是一個Excel利用VBA連結access資料庫的一段程式,
程式中,如果
WHERE (D125.D_12501 >=StartDate 改成 WHERE (D125.D_12501 >='20050101'
則會有查詢結果出現,但是'20050101'想用StartDate變數來代替,則會發生錯誤。
請問各位大大,是不是語法中出了什麼問題,或者是寫法不對?
煩請各位大大指教...感恩~~~

"WHERE (D125.D_12501 >=StartDate And D125.D_1" 錯在這裡