Запись dbExpress не найдена или изменена другим пользователем

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

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


person mjn    schedule 19.03.2012    source источник


Ответы (1)


  • убедитесь, что компилятор использует Debug DCU.

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

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

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

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

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

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