Почему в форме доступа отображается сообщение об ошибке «Номер списка указан в списке заказов более одного раза»? Связанные запросы открываются нормально - PullRequest
0 голосов
/ 26 февраля 2020

Я работаю над базой данных Access с серверной частью SQL. Иногда, когда я открываю определенную форму, я получаю сообщение об ошибке 3146 «Столбец указан более одного раза в порядке по списку».

enter image description here

Есть несколько возможных запросов, которые могли бы подать в эту форму, но я проверил и запустил их все по отдельности, и они работают нормально, так что это что-то в форма, но я не уверен. Ниже приведен снимок экрана окна «Свойства данных». Моя гипотеза состоит в том, что свойство «Порядок по» (которое я не заполнял вручную) не очищается при закрытии формы и, следовательно, при повторном открытии формы, которое в действительности помещает в одни и те же столбцы дважды.

enter image description here

Я могу временно решить проблему, открыв форму и очистив поля Filter и Order By. Это решает это на некоторое время, но периодически это случится снова, так что, вероятно, я упускаю еще одну вещь. Я вставил код в событие закрытия формы, чтобы установить orderby = "", но даже это не решает его полностью.

Вот код, который открывает форму из главного меню (frmProdSched - это форма в вопрос)

Private Function OpenProdSched(RunQuery, RunCaption)
    DoCmd.OpenForm "frmProdSched", , RunQuery, "", , acNormal
    Forms!frmProdSched.Caption = RunCaption
    gScheduleRptQry = RunQuery
    Me.Refresh
End Function

, а затем код, который находится в событии Form_Current

Private Sub Form_Current()
    On Error Resume Next
    Dim strForm As String
    Dim strForm1 As String
    Dim strWhere As String

    strForm = "frmSubmittalStatus"
    strForm1 = "frmProdSched"
    strWhere = "StatusJobno = " & Me.JOBNO & ""
    If IsLoaded(strForm) Then
        If Forms(strForm).Filter = strWhere Then
            Forms(strForm1).SetFocus
        Else
            DoCmd.Close acForm, strForm
            DoCmd.OpenForm FormName:=strForm, WhereCondition:=strWhere
            Forms(strForm1).SetFocus
        End If
    End If

End Sub

Я пытался добавить этот код в событие закрытия формы, и, казалось, он работал большую часть времени, но это все еще периодически случается

Private Sub Form_Close()
    Me.Filter = ""
    Me.OrderBy = ""
End Sub

Я не уверен, что проверить дальше. Есть идеи?

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