Изменить определенный ключ записи в Access с помощью набора записей ADO VBA

Наша работа использует пользовательскую форму Excel в качестве внешнего интерфейса, который в настоящее время загружается в базу данных доступа. Я хочу разрешить пользователю редактировать записи доступа из того же внешнего интерфейса, не задерживая базу данных, входя в доступ. Кажется, я не могу найти хороших или простых ответов на этот вопрос на форумах, так как большинство вопросов касаются только массовых обновлений записей в доступе. Вот что у меня есть до сих пор. Имя базы данных — «database3» (это база данных доступа mdb). Я хочу найти совпадение из пользовательской формы (текстовое поле2) в поле идентификатора в доступе. Затем я хочу, чтобы значение textbox1 заменило текущее значение в столбце1. Буду признателен за любую помощь, так как я новичок в работе с ADO, но рад узнать об этом больше.

`Sub Save_Data()

    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\sam\Desktop\Database3.mdb" & ";Jet OLEDB:Database"
    #Else
        nConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & "C:\Users\sam\Desktop\Database3.mdb" & ";Jet OLEDB:Database"
    #End If
    
    
    sqlQuery = "Select * from Table1"
    
    'Open the recordset
    
    nRecordset.Open Source:=sqlQuery, ActiveConnection:=nConnection, CursorType:=adOpenKeyset, LockType:=adLockOptimistic
    
    
If nRecordset.Fields("Column1").Value = UserForm1.TextBox2.Value Then


        nRecordset.Edit.Fields("Column1") = TextBox1.Value
        
        .Update
        
        .Close
    
End If

    
    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`

Является ли поле ID и Column1 двумя разными полями?

CDP1802 08.12.2022 16:00
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
1
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для ADO не требуется редактирование, поэтому попробуйте:

If nRecordset.Fields("Column1").Value = UserForm1.TextBox2.Value Then
    nRecordset.Fields("Column1").Value = UserForm1.TextBox1.Value        
    nRecordset.Update   
End If
nRecordset.Close

Большое спасибо. Я буду помнить это в будущем. Это было намного проще, чем я думал. Я ценю ваше время.

Samuel Lindemulder 08.12.2022 19:27

Другие вопросы по теме