dbExpress "Запись не найдена или не изменена другим пользователем" - PullRequest
3 голосов
/ 19 марта 2012

Как мне найти причину ошибки «Запись не найдена или изменена другим пользователем» при работе с dbExpress?

Как найти оператор SQL (с фактическими значениями параметров), который не выполняется?

1 Ответ

5 голосов
/ 19 марта 2012
  • убедитесь, что компилятор использует отладочные DCU.

  • установить точку останова в первой строке процедуры TSQLResolver.DoExecSQL в блоке db\Provider

  • запустить операцию, которая вызывает сообщение об ошибке (например, изменение записи в компоненте, учитывающем данные)

  • если отладчик останавливается, сгенерированную команду SQL можно просмотреть

  • проверить оператор SQL на наличие условий, которые могут вызвать ошибку

На этом этапе можно проверять только константные выражения в выражении типа ... ', где Field1 равно нулю и Field2 = 0'. в DoExecSQL оператор SQL использует заполнители (?) для значений параметров, поэтому, если условия константного выражения не показали ничего полезного, продолжайте отладку:

  • , чтобы увидеть фактические значения параметров, установите точку останова в функции TSQLConnection.Execute (в блоке SqlExpr) и выполните цикл обработки параметров.
...