資料庫AAA中有2張表格,分別是DDD(商品資訊表)和EEE(商品名錄),EEE(商品名錄表)中有Sysno(系統編號)和commno(商品編號)2個欄位,系統編號單一對應一個商品編號。DDD(商品資訊表)中有兩個欄位,Sysno(系統編號)和commname(商品名稱)。。
需求:從商品名稱(DDD表中的commname)欄位中,查找含有商品名錄中商品編號(EEE-commno)的欄位,并將相應的系統編號更新進入DDD表格相應位置。
DDD EEE
sysno commname sysno commno
(空) 三星NH004電視機 S01 NH004
(空) NH004 三星電視機 S02 MI001
(空) 小米MI001電視機
(空) 小米電視機 MI001
(空) 三星電視機NH004
(空) MI001小米電視機
自動將DDD的(空)字符段賦值
Option Compare Database
Sub Date_SysNoInput()
Dim AAA As ADODB.Connection
Dim abc As ADODB.Recordset
Set AAA = CurrentProject.Connection
Set abc = New ADODB.Recordset
abc.LockType = adLockBatchOptimistic
abc.Open "EEE", AAA, , , adCmdTable
Dim bl_sysno As String
Dim bl_commno As String
Dim sql As String
Do While abc.EOF
bl_sysno = abc!SysNo
bl_commno = abc!CommNo
abc.MoveNext
sql = "UPDATE [DDD] SET [DDD].SysNo = "bl_sysno"
WHERE ((([DDD].CommName)="bl_commno" Or ([DDD].CommName) Like "*bl_commno" Or ([DDD].CommName) Like "*bl_commno*" Or ([DDD].CommName) Like "bl_commno*"));"
DoCmd.RunSQL "sql"
Loop
abc.Close
AAA.Close
Set abc = Nothing
Set AAA = Nothing
End Sub
uj5u.com熱心網友回復:
來點建議:1、代碼不能運行那是你的問題===>你必須讓代碼能夠運行起來;
2、代碼運行起來后出現錯誤,標識出錯的地點和錯誤提示;
3、發代碼的話,最好放在這里:
你的代碼,這樣看起來舒服點。
另外:在你的sql=....陳述句后面設定一個斷點或添加一行 debug.print sql看看結果是什么....
uj5u.com熱心網友回復:
他那句賦值陳述句明顯是語法錯誤。

在VB6中沒有象C/C++、Java等語言中的“轉義”字符,雙引號是用來把“字串括起來”的。
如果要把雙引號作為字串的內容,可以用連續的兩個雙引號表示一個雙引號,
(這也許是VB6中唯一的“轉義字符”
)或者,把你的SQL陳述句中的雙引號全部改用單引號。
uj5u.com熱心網友回復:
看起來問題比較多,首先 Do While abc.EOF 這個陳述句就有問題,意思是當記錄集指標到達末尾是才能進入Do回圈,主頁有意義嗎?應該修改為 Do While Not abc.EOF,這樣就是記錄集指標沒有到達末尾時進入Do回圈,到達末尾后退出回圈。abc.Open "EEE", AAA, , , adCmdTable 中EEE在哪里,AAA后面三個,號應該不對吧?EEE是連接資料表的字串,沒有EEE怎么連接?
你的二個物件的宣告好像是SP2以前的宣告格式,在SP2以后就沒有這樣宣告的,應該這樣:
Dim AAA As New ADODB.Connection就可以,不需要Set AAA = CurrentProject.Connection 等陳述句。
Dim abc As New ADODB.Recordset
uj5u.com熱心網友回復:
今天看了你的程式,問題非常多,肯定運行不起來,即就是運行起來,也是沒有辦法運行下去。首先你必須建立一個資料庫,資料庫中有二個資料表,DDD、EEE,沒有資料庫怎么運行?給你簡單做一個:
Dim AAA As New ADODB.Connection, ABC As New ADODB.Recordset, CDE As New ADODB.Recordset
Sub KKK(AAA)
AAA.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & "\BBB1.accdb"
AAA.Open
End Sub
Private Sub Form_Load()
Call KKK(AAA)
CDE.Open "Select * From EEE", AAA, 3, 2
Do While Not CDE.EOF
ABC.Open "Select * From DDD WHERE commname LIKE '%" & CDE.Fields(2) & "%'", AAA, 3, 2
Do While Not ABC.EOF
ABC.Fields(1) = CDE.Fields(2) '將EEE表中的commno的值存盤到DDD表的sysno的相應欄位中
ABC.Update
ABC.MoveNext
Loop
ABC.Close
CDE.MoveNext
Loop
CDE.Close
AAA.Close
MsgBox "操作完成!"
End Sub
不是很復雜的,看圖,左邊是操作前的DDD表,右邊是操作后的DDD表

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/76771.html
標籤:VBA
上一篇:vb中如何快速檢索?
下一篇:晶振校準系統后臺程式設計
