Доступ.Как создать запись и выбрать эту запись в CBO в другой форме? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть две формы frmProductCreate и frmColourCreate.

В frmProductCreate У меня есть:

  • Поле со списком: colourID
  • Кнопка: btnColCreate

Идея заключается вчто если пользователю необходимо создать новый цвет, он может нажать кнопку «Создать», которая открывает frmColourCreate, дать имя новому цвету и нажать кнопку «Сохранить».Который сохранит новый цвет в таблице цветов (которая является источником записи для cbo ColourID в frmProductCreate).Затем запрос colourID в frmProductCreate и закрытие frmColourCreate.

Я также хочу, чтобы эта кнопка сохранения выполнялась после запроса, чтобы выбрать cbo colourID и перейти к последнему созданному цвету.т.е. последняя запись.Я попробовал несколько кодов, но не смог заставить его работать.Любая помощь будет принята с благодарностью.

Private Sub btnSavecol_Click()
    Dim cancel As Integer

    If Me.ColName = "" Then
        MsgBox "You must enter a Colour Name."
        DoCmd.GoToControl "ColName"

        cancel = True
    Else
        If MsgBox("Are you sure you want to create new Colour?", vbYesNo) = vbNo Then
            cancel = True
        Else
            CurrentDb.Execute " INSERT INTO Colours (ColName) VALUES ('" & Me.ColName & "')"

            Me.ColName = ""

            DoCmd.Close

            If CurrentProject.AllForms("frmProductCreate").IsLoaded = False Then
                cancel = True
            Else
                Forms!frmproductCreate!ColourID.Requery
                'Forms!frmproductCreate!ColourID.SetFocus
                'Forms!frmproductCreate!ColourID.items.Count = -1
                'Forms!frmproductCreate!ColourID.Selected(Forms!frmproductCreate!ColourID.Count - 1) = False

                'YourListBox.SetFocus
                'YourListBox.ListIndex = YourListBox.ListCount - 1
                'YourListBox.Selected(YourListBox.ListCount - 1) = False
            End If

            If CurrentProject.AllForms("frmProductDetails").IsLoaded = False Then
                cancel = True
            Else
                Forms!frmproductDetails!ColourID.Requery
            End If
        End If
    End If
End Sub

1 Ответ

0 голосов
/ 15 февраля 2019

Некоторые замечания:

  • Зачем нужна переменная cancel?Поскольку он не используется, я удалил его.
  • Понятия не имею, зачем вам нужно Me.ColName = "".
  • Почему вы закрываете текущую форму так рано?Я переместил DoCmd.Close в конец.
  • Я сделал ваш код немного более читабельным, удалив «код стрелки» (вложенный IFs).

Наконец попробуйтеэто:

Private Sub btnSavecol_Click()
    If Me.ColName.Value = "" Then
        MsgBox "You must enter a Colour Name."
        DoCmd.GoToControl "ColName"
        Exit Sub
    End If

    If MsgBox("Are you sure you want to create new Colour?", vbYesNo) = vbNo Then Exit Sub

    CurrentDb.Execute "INSERT INTO Colours (ColName) VALUES ('" & Me.ColName.Value & "')"

    If Not CurrentProject.AllForms("frmProductCreate").IsLoaded Then GoTo Done

    Forms!frmproductCreate!ColourID.Requery

    'This sets the ComboBox 'ColourID' to the new colour:
    'Forms!frmproductCreate!ColourID.Value = Me.ColName.Value

    'If you use an automatic generated ID in the table 'Colours', then you will have to get that ID from the color and set it to the ComboBox:
    Forms!frmproductCreate!ColourID.Value = DLookup("ColID", "Colours", "ColName = '" & Me.ColName.Value & "'")

    Me.ColName.Value = ""

    If Not CurrentProject.AllForms("frmProductDetails").IsLoaded Then GoTo Done

    Forms!frmproductDetails!ColourID.Requery

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