• 2

使用VBA撰寫介面並與Access資料庫連結新增個人資料,但無法記錄,是否程式撰寫有誤,請求協助!求解~

想請問各程式撰寫先進與高手,使用VBA進行介面設計(圖一)要連結Access資料庫(圖二),請問該如何撰寫程式讓介面輸入的內容記錄進Access內呢?目前撰寫的程式都無法記錄(圖三),有什麼地方有錯誤呢?
使用VBA撰寫介面並與Access資料庫連結新增個人資料,但無法記錄,是否程式撰寫有誤,請求協助!求解~

使用VBA撰寫介面並與Access資料庫連結新增個人資料,但無法記錄,是否程式撰寫有誤,請求協助!求解~

使用VBA撰寫介面並與Access資料庫連結新增個人資料,但無法記錄,是否程式撰寫有誤,請求協助!求解~
2018-03-14 14:10 發佈
ACCESS版本?
Sherry0812 wrote:
使用VBA進行介面設計(圖一)


看書,爬文,到圖書館借本書先照範例做一次,你就知道了..
Sherry0812 wrote:
請問該如何撰寫程式讓介面輸入的內容記錄進Access內呢?


截圖太小,建議直接把程式碼複製貼上來,或帶檔讓人下載
Sherry0812 wrote:
目前撰寫的程式都無法記錄(圖三),有什麼地方有錯誤呢?

我20多年沒寫access的資料庫程式了,來猜猜看…
是不是ODBC driver沒設好?

Sherry0812 wrote:
想請問各程式撰寫先...(恕刪)
※Access的版本為2010

※有去圖書館借了多本書來查看練習,但仍未能有效貫通,所以希望能有先進協助確認與指導!

※相關的程式碼如下:
Private Sub CommandButton1_Click()
Dim datapath As String
Dim cclass As String
Dim cclear As String


datapath = ActiveWorkbook.Path + "\HData.accdb"

Dim conn As Object
Set conn = CreateObject("ADODB.Connection")

Dim cn As Object
Dim rs As Object
Dim strSql As String
Dim strConnection As String

Set cn = CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & datapath & ";"
cn.Open strConnection
strSql = "INSERT INTO cleanerdata (cleanerid, cleanername, add, tel, emer_name, emer_tel, relation) VALUES (' & Me.cleanerid.Text & ', ' & Me.cleanername.Text & ',' & Me.add.Text & ',' & Me.tel.Text & ',' & Me.emer_name.Text & ' , ' & Me.emer_tel.Text & ',' & Me.relation.Text & ')"



'rs.Close
cn.Close
Set cn = Nothing


MsgBox "更新完畢!"
Me.Hide
UserForm3.Show
End Sub
我沒有進行測試,但以程式碼上看起來,您指定了一個SQL的語法(INSERT INTO.....),但您沒有任何一行程式碼去執行這段SQL語法,所以應該不會寫入資料庫。

試試在cn.Close這句之前,加上一句:cn.execute strSql
希望有幫上忙
謝謝您的協助,不過加上去了以後仍然無法,而且跳出錯誤視窗
"INSERT INTO陳述式的語法錯誤"

Sherry0812 wrote:
謝謝您的協助,不過...(恕刪)


至少程式有反應了,再來請在cn.execute strSql這句之前,再加上一句:Msgbox strSql。
您得到的錯誤是說您的SQL語法有誤,所以在執行前先跳出來看看,再找找錯誤發生的地方,有可能是某空格導致,修正SQL語法的錯誤後應可成功
錯誤的地方…就是後來加上去的cn.這一串

Sherry0812 wrote:
錯誤的地方…就是後...(恕刪)


您原先的程式碼中,包含2個錯誤:
A:少加了一句執行SQL語法的程式碼
B:要被執行的SQL語法本身有錯誤

cn.Execute strSql 這句的意思是去執行strSql這句語法
所以加上 cn.Execute strSql = 解決了錯誤A
但 cn.Execute strSql 這句中的 strSql 本身可能存在錯誤
加上 cn.Execute strSql 這句雖然解決了錯誤A,但因為這句去執行了一句錯誤的SQL語法(錯誤B),所以一樣報錯!
您應該去找出您的strSql這個變數所代表的SQL語法哪裡出了錯,cn.Execute strSql <==這句本身沒錯!
GOOD LUCK!





Sherry0812 wrote:
錯誤的地方…就是後來加上去的cn.這一串...(恕刪)



用您的命名方式(access 資料庫的命名、欄位,也用一樣的方式)
寫了一個簡短的範例,自己比較看看錯在那裡




就像qekqo這位高手說的,您忘了加上執行,而且sql語法錯誤

Sub test()

Dim cn As Object, strSql As String, strConnection As String, datapath As String

Set cn = CreateObject("ADODB.Connection")
datapath = "d:\test.accdb"
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & datapath & ";"


a = "xxxxxx"
b = "yyyyyy"


strSql = "INSERT INTO cleanerdata (cleanerid, cleanername) VALUES ('" & a & "', '" & b & "')"

cn.Open strConnection
cn.Execute strSql
cn.Close

Set cn = Nothing


End Sub


  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?