Board logo

標題: [發問] 請問從資料庫匯出資料到execl會出現語法錯誤 [打印本頁]

作者: kkkajw    時間: 2011-10-22 22:21     標題: 請問從資料庫匯出資料到execl會出現語法錯誤

因我是程式不強,只能找網路上的範例來改簡單的程式
以下資料是在網路上找的範例,但不知少了哪些語法,也找了滿多資料
就是不知少了哪些語法,才會造成無法正常執行。


*這次撰寫的功能是在資料框A1輸入ID , 然後A2則會顯示該使用者名稱*
在編輯器的左邊 , 選擇你想要輸入資料所在的工作表 , 最簡單就是點兩下Sheet1

在右邊打上下列資料 , 這段的意思是要偵測他只要工作表欄位有更動(假設他輸入過值)

把它Excel的欄位位置接收 , 判斷是否是A1這個欄位 , 如果是 , 啟用Search這個函式來搜尋

在Excel裡 , 欄位是透過Range來表示 , 而不管是Column或是Row , 都是從1開始



Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 1 and Target.Row=1 Then
Search (Target.Text)
End If
End Sub


接收到來自上述的搜尋要求 , 進資料庫搜尋 , 並將回傳值丟給A2欄位(在Excel裡 , 欄位需選定Select才可把資料貼上 , ActiveCell.FormulaR1C1代表給選定欄位貼上這個動作)

Sub Search(ByVal id As String)
Dim conn As ADODB.ConnectionDim dbRecset As ADODB.Recordset
Dim sSQL As StringDim ss As String

初始化
Set dbRecset = New ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;PORT=3306;DATABASE=test;UID=XXX;PASSWORD=OOO;OPTION=3"
conn.Open
sSQL = "SELECT * FROM Table where id='" & id & "'"
dbRecset.CursorLocation = adUseClient
dbRecset.Open Source:=sSQL, ActiveConnection:=conn, CursorType:=adOpenForwardOnly, LockType:=adLockReadOnly, Options:=adCmdTextdbRecset.MoveFirst

取資料
While Not dbRecset.EOF
Range("A2").Select
ActiveCell.FormulaR1C1 = dbRecset(1)
dbRecset.MoveNext
Wend
dbRecset.Close
End Sub



存檔後 , 回到資料表 , 在A1上打ID , A2就可以顯示Name了^^

ps 1 資料庫的資料表就很單純的建立資料 , 不需要啥額外設定
Ps 2 如果要連到別的電腦 , 記得對方要開3306 , Excel必須啟用這個表單的巨集功能(為了安全理由 , 有些含有巨集的Excel檔案 , 開啟時巨集預設關閉 , 需手動開啟




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)