以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  备注列的判断  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174624)

--  作者:hfapplehao
--  发布时间:2022/1/24 10:37:00
--  备注列的判断
如何判断某列是不是备注列呀
看论坛上用 maxlength = -1 来判断,但是实际运行起来
貌似内部表和外部表(sql)运行的结果都不一样。

判断代码如下
Dim dr As DataCol = CurrentTable.DataTable.datacols(CurrentTable.colsel)
messagebox.show(dr.MaxLength)
If dr.IsString AndAlso dr.MaxLength >=64 Then
    messagebox.show("字符列,最大输入长度超过64")
Else If dr.MaxLength = -1 Then
    messagebox.show("备注列,最大字符超过255")
Else
    messagebox.show("其他列")
End If
运行结果
内部表,备注列的单元格,

255
字符列,最大输入长度超过64

SQL表

-1
备注列,最大字符超过255

也就是说判断列在不同的表,判断的结果不一样,有什么好方法来判断列是不是备注列呀?


--  作者:有点蓝
--  发布时间:2022/1/24 10:50:00
--  
内部表我测试备注列也是返回-1.

请上传实例说明

--  作者:hfapplehao
--  发布时间:2022/1/24 11:28:00
--  
以下是引用有点蓝在2022/1/24 10:50:00的发言:
内部表我测试备注列也是返回-1.

请上传实例说明 

对于新建的备注列,测试结果是-1
但是对于原来的字符列改成的备注列,测试的结果就变了

而且对于sql 表
不同备注列 测试的maxlength 长度都不一样


--  作者:有点蓝
--  发布时间:2022/1/24 11:45:00
--  
那就这样判断吧

ElseIf dr.MaxLength = -1 orelse dr.MaxLength > 255 Then
    messagebox.show("备注列,最大字符超过255")


--  作者:hfapplehao
--  发布时间:2022/1/24 11:49:00
--  
没那么简单呀!
有的备注列,里面的内容是分行的。
如果用上面的命令判断的话,会发现备注列的maxlength = 备注列内容第一行的字符长度
也就是说 等于16 或者25

而且不光如此,上面的判断会和双精度数据冲突

比如你判断某一个双精度列,得出的maxlength = -1
 这样就完全乱套了


--  作者:有点蓝
--  发布时间:2022/1/24 12:17:00
--  
MaxLength不可能是其中一行的长度。请上传实例说明
--  作者:hfapplehao
--  发布时间:2022/1/24 16:29:00
--  
代码放进了内部函数里面
这个内部表的数据是通过*.mdb数据导入的。判断的时候全部乱了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:备注列测试.rar



--  作者:有点蓝
--  发布时间:2022/1/24 16:53:00
--  
我测试没有问题,不知道您怎么测试的?

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看



--  作者:hfapplehao
--  发布时间:2022/1/25 8:45:00
--  
以下是引用有点蓝在2022/1/24 16:53:00的发言:
我测试没有问题,不知道您怎么测试的?

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

问题如下:看看备注列的maxlength 并不是-1,SQL数据库备注列有时候是-1,有时候甚至是16或者255,或者更大的一个数,到是日期类型/和双精度类型的maxlength 也等于 -1
 这样就思维就很混乱了。

我想问的老师的问题就是有么有一个方法或者命令能准确的判断备注列。但是这样测试下去,发现maxlength也不可用呀!



--  作者:有点蓝
--  发布时间:2022/1/25 9:00:00
--  
都说了,要么是-1,要么是大于255。不要那么死板好吗!

上面截图哪个备注列是16或者是255的?!!

并不是列名称有“备注列”3个字的就是备注列,要看列类型好不好!!上面截图只有【工程类型】和【备注列1】2个列才是备注类型的列,都是大于255的,其它的都是普通的字符列或者非字符列