[英]editing all fields in an access row based off of primary key
我的工作使用 excel 中的用戶窗體作為 Access 數據庫的前端模塊。 我希望能夠根據該數據庫中的唯一交易 ID(主鍵)編輯采購訂單中的所有字段。 到目前為止,我使用的代碼似乎隨機更新了一些記錄而不是其他記錄而沒有給出任何錯誤。 Access 數據庫是一個.mdb 文件(2003)。 我想知道是否有在編輯期間從一個字段移動到另一個字段的命令,但似乎無法想出您為什么需要它的原因?
``
Sub EDIT_PO()
On Error GoTo ErrorHandler
Application.EnableCancelKey = xlDisabled
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim nConnection As New ADODB.Connection
Dim nRecordset As New ADODB.Recordset
Dim sqlQuery As String
'Connection Strings - Dynamic Path
#If Win64 Then
nConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & "C:\Users\samue\OneDrive\Desktop\Database1.mdb"
#Else
nConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\Users\samue\OneDrive\Desktop\Database1.mdb"
#End If
sqlQuery = "Select * from PO_TABLE"
'Open the recordset
nRecordset.Open Source:=sqlQuery, ActiveConnection:=nConnection, CursorType:=adOpenKeyset, LockType:=adLockOptimistic
If nRecordset.Fields("Transaction ID").Value = CStr(POform.poformtransid.Value) Then
With nRecordset
.Fields("PO Number").Value = POform.poformponumber.Value
.Fields("PO Date").Value = CDate(POform.poformpodate.Value)
.Fields("Status").Value = POform.poformstatus.Value
.Fields("Material ID").Value = POform.poformmatid.Value
.Fields("Unit Cost").Value = CDbl(POform.poformunitcost.Value)
.Fields("QTY").Value = CDbl(POform.poformamount.Value)
.Fields("QTY Units").Value = POform.poformunits.Value
.Fields("Vendor ID").Value = POform.poformvendorid.Value
.Fields("Receipt Date").Value = CDate(POform.poformreceiptdate.Value)
.Fields("Supporting File").Value = POform.poformsf1.Value
.Fields("Lot Identifier").Value = POform.poformlotinfo.Value
.Update
.Close
End With
End If
nRecordset.Close
nConnection.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
ErrorHandler:
MsgBox Err.Description & " " & Err.Number, vbOKOnly + vbCritical, "Database Error"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
nConnection.Close
End Sub
``
你只是打開表,所以任何記錄都可能是第一條。 嘗試過濾您要編輯的特定記錄:
sqlQuery = "Select * from PO_TABLE Where [Transaction ID] = '" & CStr(POform.poformtransid.Value) & "'"
或者,如果 ID 是數字:
sqlQuery = "Select * from PO_TABLE Where [Transaction ID] = " & CStr(POform.poformtransid.Value) & ""
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.