在我们的应用程序中使用DataWindow中的SqlErrText时,我似乎遇到了一个奇怪的问题。
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在字符串中读取的方式有关,但我不知道为什么会这样。
我还应该注意,它不仅限于这一个DataWindow。它发生在很多人身上。
答案 0 :(得分:0)
将此信息放入数据窗口的dberror事件中
string s_temp
长l_start,l_end
l_start = 42 + Pos(sqlerrtext,'Microsoft SQL Server Native Client 10.0')
l_end = Pos(sqlerrtext,sqlsyntax) - l_start - 3
IF l_end< = 0 THEN l_end = Len(sqlerrtext) - l_start
s_temp = Mid(sqlerrtext,l_start,l_end)
fw_msg(s_temp)//可以在messagebox(this.title,s_temp)中写这个//而不是
返回1
如果插入或选择错误。它会忽略语法并输出错误。如果它有不同的错误。它显示了errcode的其余部分