以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  备注截短问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92160)

--  作者:douglas738888
--  发布时间:2016/10/27 16:33:00
--  备注截短问题

请教老师,搭接SQLSERVER服务器,在窗口表中的备注输入500字符,被提示自动截短为225字符    操作列被允许的最大长度255

 

服务器上的备注数据类型自动设置的是NVARCHAR(MAX)是可以小于8000字符的,且可最大存为2G容量

 

表中的列属性设置的也是备注型,  窗口设计的TEXT设置的是多行文本TRUE  最大字符32767

 

请问是哪里的问题???

[此贴子已经被作者于2016/10/27 16:52:16编辑过]

--  作者:有点蓝
--  发布时间:2016/10/27 17:01:00
--  
窗口表是副本还是其它的?窗口表如何生成的?
--  作者:douglas738888
--  发布时间:2016/10/27 17:07:00
--  
窗口中用的正本,上部是TEXT录入控件绑定到正本表的列  下部是正本表     项目启动后就加载表进来
[此贴子已经被作者于2016/10/27 17:09:43编辑过]

--  作者:有点蓝
--  发布时间:2016/10/27 17:13:00
--  
确定列类型是备注型,而不是字符型的
--  作者:douglas738888
--  发布时间:2016/10/27 17:16:00
--  
是的,单机版接本机ACCESS测试没有问题;现在搭上服务器SQLSERVER  就报错自动截短。
--  作者:有点蓝
--  发布时间:2016/10/27 17:18:00
--  
备份项目和代码,去掉这个外部表重新添加试试
--  作者:douglas738888
--  发布时间:2016/10/27 20:29:00
--  

老师,还是不行,做了个没有任何代码的窗口测试也是这样, 但是在项目设计里面通过外部数据表加载数据库的表进来,点击列...的按钮添加内容没有任何提示,正常。

 

就是在窗口录入数据 和在窗口里面的表(有备注列)添加内容就错误提示。    经测试,项目中所有设置为备注类型的表和TEXT多行文本都存在同样的问题

 

 


图片点击可在新窗口打开查看此主题相关图片如下:未标题-1.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/10/27 20:37:22编辑过]

--  作者:有点蓝
--  发布时间:2016/10/27 20:59:00
--  
我测试没有如何问题哦。不管是在狐表创建的表还是直接在sql数据库创建的表都没有问题,也试过正本,sqltable;绑定正本绑定窗口表都没有问题。

估计是你的项目本身有问题了。创建新项目试试有没有这个问题。

最后上传你的项目看看。

--  作者:douglas738888
--  发布时间:2016/10/28 11:48:00
--  

老师,问题找到了,在编写系统操作日志里面的代码的时候出现的,现在的问题是,在项目设计里面的表备注添加超过225字符没有问题,就是在窗口的正本TEXT或者

 

正本TABLE的备注添加就报错截短

 

应该是这段代码有问题,不启用就不出现截短问题,但是无法记录信息了,请老师看看

 

If e.DataTable.Name <> "系统数据日志" Then 

    If e.DataRow.RowState = 2 Then
        Return
    Else
        Dim dr As DataRow = DataTables("系统数据日志").AddNew
        dr("ID") = e.DataRow("_Identify")
        dr("用户") = _UserName
        dr("涉及表") = e.DataTable.Name
        dr("涉及列") = e.DataCol.Name
        dr("涉及行") = e.DataRow("_Identify")
        dr("时间") = Date.Now
        dr("操作") = """" & e.OldValue &  """ 改成了 """ & e.NewValue & """"
        Dim str As String = ""
        For Each c As DataCol In e.DataTable.DataCols
            str += c.Name & "=" & e.DataRow(c.Name) & "|"
        Next
        dr("原行数据") = str
    End If
End If


--  作者:有点蓝
--  发布时间:2016/10/28 12:02:00
--  
"操作"列改为备注咯

另外nvarchar(max)最多4000个字符,超过要用ntext