Я работаю над базой данных Access с серверной частью SQL. Иногда, когда я открываю определенную форму, я получаю сообщение об ошибке 3146 «Столбец указан более одного раза в порядке по списку».
Есть несколько возможных запросов, которые могли бы подать в эту форму, но я проверил и запустил их все по отдельности, и они работают нормально, так что это что-то в форма, но я не уверен. Ниже приведен снимок экрана окна «Свойства данных». Моя гипотеза состоит в том, что свойство «Порядок по» (которое я не заполнял вручную) не очищается при закрытии формы и, следовательно, при повторном открытии формы, которое в действительности помещает в одни и те же столбцы дважды.
Я могу временно решить проблему, открыв форму и очистив поля 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
Я не уверен, что проверить дальше. Есть идеи?