添加新条目时,多列组合框的“不在列表中”事件导致移至下一条记录

时间:2019-06-12 12:16:15

标签: access-vba

我有一个包含4列的组合框(ID,市政府,人造丝(=县),州(=省))。数据源来自3个链接表(市政,人造丝,州)。当我收到NotInList事件并将新的“市政名称”和人造丝ID添加到“市政”表中时,没有明显的原因,选择了下一条记录(焦点移到了下一条记录)。如果我从组合框中选择一个现有条目,则当前记录保持预期。

如果我仅使用标准的2列设置,则我的代码有效。如果将Municipality,Rayon和Oblast合并为一个条目,因此有2列列表,则会遇到相同的问题。我尝试了各种方法来处理在Web上发现的事件,但是问题仍然存在。显然,这与多列设置有关,但是我仍在寻找解决方法。

从NotInList事件以几种不同的形式调用

AddMunicipality。 AddMunicipalityQuestion获取有效的人造丝ID。

Public Sub AddMunicipality(newData As String, Response As Integer)
    Dim newRayon As Integer
    Dim newOblast As Integer

    On Error GoTo Error_Handler

    If AddMunicipalityQuestion(newData, newRayon) Then
        DoCmd.SetWarnings False
        DoCmd.RunSQL "INSERT INTO tbl_Municipalities (MunName, Rayon) VALUES (""" & newData & """, " & newRayon & ");"
        DoCmd.SetWarnings True
        Response = acDataErrAdded
    Else
        MsgBox "Please select a Municipality from the list.", _
        vbExclamation + vbOKOnly, "Unknown Municipality"
        Response = acDataErrContinue
    End If

Exit_Procedure:
    DoCmd.SetWarnings True
    Exit Sub

Error_Handler:
      MsgBox Err.Number & ", " & Err.Description, vbInformation, "AddMunicipality()"
    Resume Exit_Procedure
End Sub

正确添加了新的自治市,但由于某种原因,下一条记录(或新记录)成为焦点。

2 个答案:

答案 0 :(得分:0)

您是否尝试过在插入后获取行ID,然后手动对其进行过滤?例如。使用针对多列的查询,并假设RayonID是组合框中的绑定字段:

dim newItemNum as long
newItemNum = dlookup("RayonID","MulticolumnQuery","MunName='" & MunName & "'")
Me.combobox.Value =  newItemNum

答案 1 :(得分:0)

我发现了问题:毕竟与多列组合框无关。尽管它是表单上的第一个字段,但它是最后一个制表位,并且表单的Cycle属性设置为“所有记录”。我通过按Tab键输入了新记录,而从菜单中选择的是旧记录。 对所有在这个问题上浪费思想的人表示抱歉。