Foxtable(狐表)用户栏目专家坐堂 → 将截断字符串或二进制数据。


  共有2308人关注过本帖树形打印复制链接

主题:将截断字符串或二进制数据。

帅哥哟,离线,有人找我吗?
刘林
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
将截断字符串或二进制数据。  发帖心情 Post By:2020/2/17 9:39:00 [只看该作者]

.NET Framework 版本:4.0.30319.1026
Foxtable 版本:2019.12.17.18
错误所在事件:
详细错误信息:
语句已终止。
将截断字符串或二进制数据。


老师服务器出现这个错误,我是网页逐个关了,宽度逐个改了还是出这个问题,查网了说把把数据类型改成nvarchar(max)
1、如操作能改成这个
2、有哪些办法来避免这个错误

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106199 积分:540118 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/17 11:32:00 [只看该作者]

没有必要全部改为nvarchar(max),反而对性能有影响。

估计是录入的数据有问题,比如姓名设置为长度30,但是前端录入可能录入了这种数据,比如“张三             ...这里还有n个空格...”,有空格的数据导致长度不足。检查了一下数据库数据,看有没有出现后面有很多空格的数据

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/2/17 21:45:00 [只看该作者]

那我用trim去了再看有不有

另外又出了个错误,这又是什么造成的叱
Exception has been thrown by the target of an invocation.
This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106199 积分:540118 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/17 21:53:00 [只看该作者]

意思是这行已经从表格中删除,无法再修改保存。
比如:
r.delete
r("第一列") = “abc”

比如SQLcommand,或者sqladdnew返回的行,保存后在进行赋值,然后有保存。请注意SQLcommand,或者sqladdnew返回的行只能保存一次,如果需再次修改,需要重新查询获取这一行数据才能重新修改。

最后提醒的是,作为服务端,最好就不要再使用表事件了。

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/2/17 22:21:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文本文档.txt


老师我是只存了一次,提示就是这个里页面出的错,我不晓得是什么情况?请帮我看一下,我在一页的排问题

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106199 积分:540118 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/17 22:42:00 [只看该作者]

2个问题
1、
sqladdnew返回的行只能保存一次,如果需再次修改,或者取值,需要重新查询获取这一行数据才能重新修改。
……
pr("联系电话") =dr("电话")
pr("班级")=dr("班级")
pr.save() '这里保存了
pr("学校")=e.Cookies("userdw") ‘这里再赋值就不行的,后面再使用If pr("审核锁定")=True也不行的’
……

把保存的代码pr.save() 放到最后,确保保存后不再有其它代码使用到这个pr

2、下面这种方式返回的dr也没有判断,如果没有这个身份证的数据,这个就会出错的
dr =DataTables("用户").sqlfind("身份证号 = '" & e.Cookies("username") & "'")
if dr isnot nothing '没有这句判断,也容易出错

最后如果需要使用新增行的_identify,建议这样使用

dr =DataTables("用户").sqlfind("身份证号 = '" & e.Cookies("username") & "'")
If dr IsNot Nothing Then
    pr = DataTables("学生库").sqlfind("身份证号 = '" & e.Cookies("username") & "'")
    If pr Is Nothing  Then
        pr =  DataTables("学生库").sqladdNew()
    End If
    pr("身份证号")= dr("身份证号")
    pr("姓名")=dr("姓名")
    pr("联系电话") =dr("电话")
    pr("班级")=dr("班级")
    pr("学校")=e.Cookies("userdw")
    pr.save()
    pr = DataTables("学生库").sqlfind("身份证号 = '" & e.Cookies("username") & "'") ‘重新查询这一行的数据供后面使用
    If pr Is Nothing  Then  ‘理论上前面保存了这里查询这个身份证号码的数据应该是有的,不需要做这个判断也可以,但是仍然有可能会出现没有的情况的,比如保存失败,或者并发冲突等等,就是百万分之一的可能,也够头疼一阵子的,所以严谨的写法就应该加上判断
        '这里添加出错返回的代码,
return
    End If
    wb.appendcookie("myid",pr("_identify"))
    ……
End If

 回到顶部