Конфликт записи при обновлении основной формы из всплывающего окна - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть «клавиатура», созданная в Access, которая используется для ввода данных в основной форме с помощью Google Remote Desktop с телефона Android (большая часть ввода будет выполняться локально с помощью компьютера и обычной клавиатуры).

Основная форма на основе многотабличного запроса содержит данные. Удаленный пользователь (Android) нажимает на поле формы и появляется всплывающее окно с клавиатурой, где пользователь выбирает буквы указателем мыши и в конечном итоге нажимает кнопку OK, которая перезаписывает данные исходного поля основной формы выбранными буквами.

Пока все хорошо, но при выходе из основной формы появляется MessageBox конфликта конфликтов, и все вновь отредактированные данные с «клавиатуры» исчезают - исходные данные появляются снова, другими словами, ничего не меняется.

Код для кнопки ОК на всплывающей клавиатуре:

Private Sub tOK_Click()

    Dim p As String
    Dim f As String
    Dim c As String
    Dim txtResult As String
    Dim pFrmName As String
    Dim frmName As String
    Dim ctrl As String

    'On Error GoTo errHandler
    pFrmName = Me.pFrmName  ' the first three or the lasr three strings can be dropped as they contain the same data
    frmName = Me.frmName
    ctrl = Me.ctrlName
    p = pFrmName
    f = frmName
    c = ctrl

    If p = c Then
        Forms(f).SetFocus
        Forms(f)(c).Value = Me.txtResult
    Else
        Forms(f)(p)(c).SetFocus
        Forms(f)(p)(c).Value = Me.txtResult
    End If

У меня есть функция vkbddata, которую я помещаю в событие OnClick основной формы textBox.

Как мне вводить данные удаленно, избегая конфликта записи?

*********************************************** ********** 08 сентября 2018 года Функции:

Option Compare Database
Option Explicit

Function vkbdData()
'used to provide data to virtual keyboard so it can assign new data to underlying form
On Error GoTo err_handler

If Forms!f00_logon!vkbd = True Then 'if user checks virtual keyboard

Dim ctrl As Control
Dim ctrlName As String
Dim pFrmName As String ' parent form if one exists
Dim frmName As String
Dim ctrlcaption As String
Dim sValue As String

If IsNull(Screen.ActiveForm.Controls.Parent) Then
frmName = Screen.ActiveForm.ActiveControl.Name
Else
frmName = Screen.ActiveForm.Name
End If
pFrmName = Screen.ActiveForm.ActiveControl.Name

ctrlcaption = ""

ctrlName = Screen.ActiveControl.Name
    If IsNull(Screen.ActiveControl.Value) Then
    sValue = ""
    Else
    sValue = Screen.ActiveControl.Value
    End If
'Debug.Print ctrlName

vkbdData = keyBoardPopUp(frmName, pFrmName, ctrlName, ctrlcaption, sValue)

End If

Exit_Form:
 Exit Function

err_handler:
 MsgBox Err.Description
 Resume Exit_Form


End Function

Public Function keyBoardPopUp(pFrmName, frmName, ctrlName, ctrlcaption, sValue) As String
Dim frm As Object
Dim ctrl As Control
Dim sParameters As String

'strange deliminators (>,|, ...) to make it easy to tell what each parameter value is
sParameters = pFrmName & ">" & frmName & "|" & ctrlName & "^" & ctrlcaption & "~" & sValue
'Debug.Print "SParameters  " & sParameters
DoCmd.OpenForm "frm_keyboard", , , , , , sParameters


End Function

Write Conflict Error

...