簡體   English   中英

根據主鍵編輯訪問行中的所有字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM