Re: [問題] Excel VBA 連結 Access 查詢有錯??

看板Office作者 (安安小成)時間16年前 (2010/01/30 19:23), 編輯推噓5(5013)
留言18則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《Steven0422 (Steven)》之銘言: : : 假設如果我要將某範圍欄位(ex:B1~B25)寫入資料庫內 : : 要怎樣全部批次寫入資料庫, : : 這程式碼要怎樣寫~~ 我把整個程式碼 po 上來~請您幫我看哪裡出問題~~ Dim myCon As New ADODB.connection Dim myRst As New ADODB.Recordset Set myCon = New connection myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\123.mdb" strsql = "select * from testdata " xxxx 是不是在這裡還少什麼??? ColumnsArray = Array("text","date") : For rowPos = 1 To 25 : val1 = Cells(rowPos,1).value : val2 = Cells(rowPos,2).value : ColumnsValue = Array(val1,val2) : RecordSet.Addnew ColumnsArray,ColumnsValue 我在 Run 的時候在↑這行出現 此處需要物件 ?? : Next : RecordSet.Update rowPos,1 這列主要是文字 rowPos,2 這列是日期 此外~~ 如果我在 form1 裡面有個 textbox 要如何強制 textbox 內容為大寫字母 請您幫我看一下~~謝謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.81.239.8 ※ 編輯: evantw 來自: 219.81.239.8 (01/30 19:27)

01/30 19:35, , 1F
1.改成 myRst
01/30 19:35, 1F

01/30 19:36, , 2F
2.在TextBox控制項的TextBox1_KeyUp事件中處理
01/30 19:36, 2F

01/30 19:37, , 3F
判斷使用者所按下的鍵的ASCII Code 介於小寫字母範圍者
01/30 19:37, 3F

01/30 19:51, , 4F
2打錯 見我回的那篇
01/30 19:51, 4F

01/30 20:09, , 5F
Run 時 RecordSet.Addnew ColumnsArray,ColumnsValue 出現
01/30 20:09, 5F

01/30 20:09, , 6F
目前的資料錄集不支援更。這可能成為提供者或所選鎖定類型
01/30 20:09, 6F

01/30 20:10, , 7F
的限制。 的錯誤訊息??是資料遭到鎖定而無法更新嗎??
01/30 20:10, 7F

01/30 20:11, , 8F
Access要先關閉。如已關閉,就還要找原因
01/30 20:11, 8F

01/30 20:14, , 9F
題外話 盡量避免 select * 一次query所有資料的寫法
01/30 20:14, 9F

01/30 20:36, , 10F
myRst.Open "textdata", myCon, , , adCmdTable 這樣改對嗎
01/30 20:36, 10F

01/30 20:36, , 11F
至於資料庫我已經確定是完全關閉了~~那還有什麼地方忽略了?
01/30 20:36, 11F
我再重新 po 改過後的程式碼 Dim myCon As New ADODB.connection Dim myRst As New ADODB.Recordset Set myCon = New connection myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\123.mdb" myRst.Open "testdata", myCon, , , adCmdTable ColumnsArray = Array("text", "date") val1 = TextBox1.Text val2 = data1.Caption ColumnsValue = Array(val1, val2) myRst.AddNew ColumnsArray, ColumnsValue : Run時↑出現 目前的資料錄集不支援更。這可能成為提供者或所選鎖定類型的限制。 myRst.Update 已經確定資料庫已經完全關閉了 那還有哪裡可能遺漏的?? ※ 編輯: evantw 來自: 219.81.239.8 (01/30 20:43) ※ 編輯: evantw 來自: 219.81.239.8 (01/30 20:47)

01/30 21:01, , 12F
myCon.ConnectionString =
01/30 21:01, 12F

01/30 21:02, , 13F
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\12
01/30 21:02, 13F

01/30 21:02, , 14F
3.mdb"
01/30 21:02, 14F

01/30 21:02, , 15F
myCon.Open
01/30 21:02, 15F

01/30 21:03, , 16F
myCon.Open那行改成如上的程式碼
01/30 21:03, 16F

01/30 21:10, , 17F
還是不行 >"<
01/30 21:10, 17F

01/30 21:22, , 18F
有引用項目嗎?
01/30 21:22, 18F
沒有~~用引用項目 我剛剛試著用Ya...查出現的 錯誤號碼 3251 結果連結到微軟的網站 在照著上面寫的方式改了一行就好了 原本 myRst.Open "testdata", myCon, , , adCmdTable 改成 myRst.Open "testdata", myCon, adOpenKeyset, adLockOptimisti 這樣就可以了 =.= 其餘沒變 上面寫的理由是 預設情況下,ADO 資料錄集開啟與 adLockReadOnly ,不允許新增和刪除鎖定類型。 所以 若要允許新增] 與 [刪除,開啟與鎖定型別 adLockOptimistic 或 adLockPessimistic 雖然我還無法理解再說什麼 但是卻可以正常新增資料了 ^^ 不過還是感謝 S 大您麼幫助囉 ^0^ 3Q~~ ※ 編輯: evantw 來自: 219.81.239.8 (01/30 21:34)
文章代碼(AID): #1BP1Q_yp (Office)
文章代碼(AID): #1BP1Q_yp (Office)