Так что это проблема, которая начала происходить день назад.
У меня есть файл базы данных Access, в котором хранится форма для создания заданий, обновления сектора заданий и удаления из таблицы MySQL.
Для этой формы используются две таблицы: локальная, хранящаяся в Access с именем «Маршрут задания», и другая с помощью драйвера ODBC для MYSQL, версия ANSI 5.3, называемая «To Do».Локальная таблица хранит предоставленные пользователем данные, содержащие информацию обо всех областях работы и состоянии, в то время как таблица MYSQL показывает только одну область работы за раз.
Когда создается новая запись, текстовое поле подробно из AccessФорма хранится в обеих таблицах.Если каждое задание содержит до 4 различных секторов (например, [дата начала], [область1], [ответственное лицо 1], [описание1], ... [область4], [ответственное лицо 4], [описание4]).Всякий раз, когда данные обновляются до следующего состояния, в локальной таблице увеличивается только поле счетчика заданий, а каждое поле в таблице MYSQL с именем «Задачи» обновляется до следующих полей состояния.
Соединениек серверу это хорошо, и все работало нормально, пока не возникла проблема в функции обновления.
По сути, эта функция работает так, что в элементе управления списком все текущие данные задания запрашиваются из таблицы «Задачи».Пользователь выбирает запись и нажимает кнопку, которая загружает информацию о следующем секторе из «Маршрута задания» в различные элементы управления текстовым полем.Пользователь может изменить эти входные данные текстового поля, если они хотят - единственное, что изменяется при запуске функции, это «To Do».Информация в «Маршруте работы» остается неизменной.Когда пользователь нажимает кнопку обновления, данные поля следующего сектора обновляются до «To Do», в то время как для счетчика текущего сектора увеличивается только счетчик в «Job Route».
Моя проблема заключается в следующем.По большей части почти все работает нормально, но для одного из полей таблицы «Задачи» не обновляются значения, которые должны быть из текстового поля.Так, например, если элемент управления textbox был установлен на «Wyntile», имя поля должно быть установлено на это, но по какой-то причине вместо этого появляется другое значение, пример = «Яблоки».Вот код:
Private Sub moveJob2_Click()
'get the job number
JobNum = Text31
CurrArea = DLookup("[Area]", "[To_Do]", "[Job_Number] =""" & JobNum & """")
area1 = DLookup("[Area1]", "[Job Route]", "[Job Number] =""" & JobNum & """")
area2 = DLookup("[Area2]", "[Job Route]", "[Job Number] =""" & JobNum & """")
area3 = DLookup("[Area3]", "[Job Route]", "[Job Number] =""" & JobNum & """")
area4 = DLookup("[Area4]", "[Job Route]", "[Job Number] =""" & JobNum & """")
'get what the current area is
Current = DLookup("[Current]", "[Job Route]", "[Job Number] =""" & JobNum & """")
'if the current area is the first area then check to make sure there is a second
'if so, then set the new area to it
If Current = 1 Then
If area2 = "---" Then
MsgBox area1 + " was the last area in the route. The job cannot be moved."
Exit Sub
End If
newArea = area2
ElseIf Current = 2 Then
If area3 = "---" Then
MsgBox area2 + " was the last area in the route. The job cannot be moved."
Exit Sub
End If
newArea = area3
ElseIf Current = 3 Then
If area4 = "---" Then
MsgBox area3 + " was the last area in the route. The job cannot be moved."
Exit Sub
End If
newArea = area4
Else
MsgBox area4 + " was the last area in the route. The job cannot be moved."
Exit Sub
End If
'set up link to both the To_Do and Job Route tables
Dim dbJobNumbers As DAO.Database
Dim rstJob As DAO.Recordset
Dim jobRoute As DAO.Recordset
Set dbJobNumbers = CurrentDb
Set rstJob = dbJobNumbers.OpenRecordset("To_Do")
Set jobRoute = dbJobNumbers.OpenRecordset("Job Route")
' >> Edit the job in the To_Do table
****' ERROR: Out of all these, only [Person_In_Charge] is being set to something
****' completely different from Text33, which wasn't changed by the user.
rstJob.FindFirst "[Job_Number]=""" + Text31 + """"
rstJob.Edit
rstJob("[Area]").Value = newArea
rstJob("[Person_In_Charge]").Value = Text33
rstJob("[Equipment]").Value = Text37
rstJob("[Description]").Value = Text35
rstJob.Update
'update the current area for the Job Route
jobRoute.FindFirst "[Job Number]=""" + Text31 + """"
jobRoute.Edit
jobRoute("[Current]").Value = CInt(Current) + 1
jobRoute.Update
'success message
MsgBox Text31 + " has been moved from " + CurrArea + " to " + newArea + "."
'requery the listboxes
Dim selectParas As String
selectParas = "SELECT [a].[Job_Number] as [Job Number], [a].[Description], [a].[Person_In_Charge] as [Person in Charge], [a].[Area] " & _
" FROM [To_Do] As [a];"
listRemoveJobs.RowSource = selectParas
listRemoveJobs.Requery
listChangeJobArea.RowSource = selectParas
listChangeJobArea.Requery
End Sub
Функция работает нормально, и даже сейчас, когда я проверяю ее снова, она работает как запрограммировано.Хотя сегодня я получил сообщение об ошибке «Вставка ODBC в« To Do »не удалась», но это для другой функции ».Поэтому я подумал, что что-то не так в соединении ODBC / таблице MySQL, но когда я проверял таблицу в phpmyadmin, большая часть этой таблицы соответствует формату других таблиц mysql, используемых в Access.
Такжеобратите внимание, что человек, который сообщил мне об этой проблеме, работает на старой версии Windows XP, где ранее на этом компьютере были известные проблемы с определенным экземпляром драйвера OBDC ANSI 5.3, который ранее полностью исчез из списка источников данных Access.(Драйвер все еще установлен в Windows).Тогда, очевидно, экземпляр драйвера позже снова волшебным образом появился снова в списке DS, когда тот компьютер был перезагружен.... Я знаю, что это довольно долго, но я не могу найти причину, по которой происходит эта ошибка обновления в Access.Есть ли известная проблема ODBC, имеющая проблемы со стабильностью в соединении?Почему при обновлении значение меняется на что-то совершенно другое?Любое понимание будет оценено.