Хорошо, у меня есть макрос, который входит и проверяет таблицу, чтобы определить формат приложения, установленного пользователем. Если для этого формата задан европейский формат, он запускает функцию, которая просматривает таблицу и меняет форматирование даты с ММ / дд / гггг на дд / мм / гггг. кажется, все настроено правильно, и когда форматирование выполняется в США, макрос работает правильно (что следует учитывать, если он пропустит эту строку, если форматирование не установлено на европейский.) Однако, когда форматирование установлено на европейский, я получаю это выскакивающая ошибка во время выполнения:
Run-Time error '3052':
File sharing lock count exceeded. Increase MaxLocksPerFile registry entry.
Теперь я всегда осторожен, когда получаю ошибку, в которой говорится, что исправление заключается в изменении чего-либо в реестре. Не говоря уже о том, что я бы не хотел, чтобы клиент делал это только для того, чтобы приложение работало. Однако я дал ему шанс, чтобы посмотреть, действительно ли это решит проблему, выполнив эти шаги. Хотя, когда я изменил MaxLocksPerFile по умолчанию с его значения по умолчанию (9500) на (30 000) и снова запустил макрос, я все равно получил ту же ошибку при чуть большем числе.
Прежде чем я получу сообщение об ошибке после прохождения примерно 12 000 строк, после изменения должно появиться около 15 0000 строк.
Это заставляет меня поверить, что я некорректно закрываю свои обновления после изменения каждой строки.
Это мой код ниже:
Public Function UKDateFormat() As Variant
Dim varPieces As Variant
Dim strNew As String
Dim varReturn As Variant
Dim Strsql As String
Dim db As dao.Database
Dim rstAlarmdetDateMod As dao.Recordset
Dim i As Long
Set db = CurrentDb()
Strsql = "select AlarmDate From AlarmdetDateMods;"
Set rstAlarmdetDateMod = db.OpenRecordset(Strsql, dbOpenDynaset)
If (rstAlarmdetDateMod.RecordCount > 0) Then
rstAlarmdetDateMod.MoveFirst
i = 0
While (rstAlarmdetDateMod.EOF) = False
i = i + 1
rstAlarmdetDateMod.Edit
rstAlarmdetDateMod![alarmdate] = CDate(Format(rstAlarmdetDateMod![alarmdate], "dd/MM/yyyy"))
rstAlarmdetDateMod.Update
rstAlarmdetDateMod.MoveNext
Wend
End If
rstAlarmdetDateMod.Close
db.Close
End Function
Это мой запрос на обновление:
UPDATE DISTINCTROW AlarmdetDateMods SET AlarmdetDateMods.AlarmDate = CDate(Format([AlarmDate],"dd/mm/yyyy"));
Что я хотел бы знать: что именно я делаю неправильно с моей функцией, что она вызывает эту ошибку, и как я могу исправить ее таким образом, чтобы мне не пришлось вдаваться и изменять реестр, чтобы эта функция работала?
Любая помощь или предложения с благодарностью.
Благодаря.