Создать новую запись со значением поля текущей записи - PullRequest
0 голосов
/ 23 марта 2020

Я хочу создать кнопку, которая создаст новую запись для ввода данных. Однако одно из полей в новой записи будет принимать значение из поля текущей записи. Моя попытка -

Option Compare Database

Public FormID As Integer
Private Sub Form_Open(Cancel As Integer)
    DoCmd.GoToRecord , , acNewRec
    FormID = Me.OpenArgs
    RespondentID = FormID
End Sub
Private Sub NextCondition_Click()
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.GoToRecord , , acNewRec
    If Me.NewRecord Then
        Me.RespondentID = FormID
    End If
End Sub

РЕДАКТИРОВАТЬ - КОНТЕКСТ: Есть две соответствующие формы - Респондент и Медицинские условия. Поскольку у каждого респондента должна быть только 1 запись в таблице респондентов, я создал новую таблицу MedicalConditions, которая допускает несколько записей для каждого респондента, поскольку у респондента может быть несколько MedicalConditions. Мы попадаем в форму MedicalConditions, нажав кнопку в форме Респондента. Итак, наш RespondentID уже известен. Фактически, это передается через OpenArgs, и, когда открывается форма medicalConditions, OpenArgs сохраняется в FormID, который имеет общую область c. Поскольку мы вводим только медицинские условия для конкретного c респондента, это должно быть отражено в таблице, указав одинаковый RespondentID для каждого медицинского состояния, введенного в этом сеансе. Таким образом, когда участник нажимает «Ввести другое условие», я хотел бы создать новую запись, чтобы он / она мог заполнить MedicalCondition, однако, поскольку это относится к одному и тому же респонденту, я бы хотел, чтобы RespondentID был перенесен в это новая запись. В моей текущей реализации я могу передать RespondentID в форму, используя OpenArgs, чтобы первая запись имела правильный RespondentID. Однако моя проблема в том, что когда я go добавляю еще одно медицинское условие, RespondentID равен 0 (а не предыдущему значению).

1 Ответ

0 голосов
/ 24 марта 2020

На вашем месте я бы попробовал это, назначив значение по умолчанию для RespondentID через Me.RespondentID.DefaultValue = CLng (Me.OpenArgs) в Form_Open (), как это:

'Public FormID As Integer
Private Sub Form_Open(Cancel As Integer)
    Me.RespondentID.DefaultValue = CLng(Me.OpenArgs)
    DoCmd.GoToRecord , , acNewRec
    'FormID = Me.OpenArgs
End Sub
Private Sub NextCondition_Click()
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.GoToRecord , , acNewRec
    '
    'If Me.NewRecord Then
    '    Me.RespondentID = FormID
    'End If
    '
End Sub

Кстати, у всех NewRecords будет автоматически назначено значение RespondentID.value в Access VBA с тем же .Value = .DefaultValue . Publi c var FormID теперь бесполезен, так что закомментировано. CLng (Me.OpenArgs) преобразует строку в Long.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...