PowerBuilder не хранит сообщение об ошибке от SQL Server должным образом - PullRequest
0 голосов
/ 23 августа 2011

Кажется, у меня странная проблема при использовании SqlErrText из DataWindow в нашем приложении.

DataWindow выполняет хранимую процедуру, позволяет вызывать ее vp_ut_storedProc, и в моем случае она выдает ошибку при обновлении DataWindow.

Когда я вхожу в функцию для создания сообщения об ошибке для нашего приложения, SqlErrText передается следующим образом (как параметр asErrText ):

SQLSTATE = 42000
Microsoft SQL Server Native Client 10.0
TimestampNV|Someone Has Updated the Record. Please Refresh.

No changes made to the database

execute dbo.vp_ut_storedProc

Я знаю, что PowerBuilder получает полный текст ошибки, и это хорошо. Но когда мы пытаемся сохранить текст ошибки в локальную переменную

isErrText = asErrText

Значение isErrText: SQLSTATE = 42000

Так что почему-то он полностью игнорирует все после второй строки. Я думаю, это как-то связано с тем, как PowerBuilder читает в строке, но я не знаю, почему это происходит.

Я должен также отметить, что он не ограничивается только этим одним окном данных. Это случается с некоторыми из них.

1 Ответ

0 голосов
/ 09 марта 2012

поместите это в событие dberror вашего окна данных

строка s_temp

длинный l_start, l_end

l_start = 42 + Pos (sqlerrtext, «Собственный клиент Microsoft SQL Server 10.0»)

l_end = Pos (sqlerrtext, sqlsyntax) - l_start - 3

ЕСЛИ l_end <= 0, ТО l_end = Len (sqlerrtext) - l_start </p>

s_temp = Mid (sqlerrtext, l_start, l_end)

fw_msg (s_temp) // может написать это в окне сообщения (this.title, s_temp) // вместо

ВОЗВРАТ 1

если ошибка вставки или выбора. он игнорирует синтаксис и выдает ошибку. если это другая ошибка. он показывает остальную часть кода ошибки

...