以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于maxlength的一个小问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174381)

--  作者:hfapplehao
--  发布时间:2022/1/12 22:52:00
--  关于maxlength的一个小问题
设想是这样的.双击某个单元格,如果这个单元格是字符型,且最大字符数超过64位,就跳出一个窗口来显示全部内容
然后根据老师提示,写了如下判断条件代码.结果发现这段代码遇到双精度小数的列 竟然判断也是true ,虽然不知道什么原因,但是还是想请教下老师,有什么方法来绕开这个双精度小数列呀

 
图片点击可在新窗口打开查看此主题相关图片如下:双精度小数.png
图片点击可在新窗口打开查看

if CurrentTable.DataTable.DataCols(CurrentTable.Colsel).Isstring And CurrentTable.DataTable.DataCols(CurrentTable.Colsel).maxlength >=64


--  作者:有点蓝
--  发布时间:2022/1/13 8:47:00
--  
是要判断这个单元格里内容的字符个数?还是判断这个单元格所在列的列长度?
--  作者:hfapplehao
--  发布时间:2022/1/13 9:38:00
--  
判断条件如下
该单元格类型为字符型,且所在列的允许最大输入字符的长度超过64个字符。
但是双精度小数貌似也是符合上面的要求的图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/1/13 9:44:00
--  
If CurrentTable.DataTable.DataCols(CurrentTable.Colsel).Isstring AndAlso CurrentTab


--  作者:hfapplehao
--  发布时间:2022/1/13 14:07:00
--  
神奇啊...,问题虽然是解决了,可是我的逻辑却出了问题
and 是两个都算,然后取交集嘛!
 andalso 是先算左侧,再算右侧! 
不管怎么说,下面的运算结果是一样的呀。可是这段代码用在判断列就有差别了
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/1/13 15:11:00
--  
 andalso 是先算左侧,如果左侧为真,再算右侧;如果左侧为假,就不再算右侧

上面的测试使用数字来测试是不正确的,应该使用逻辑值测试,看帮助的测试代码。

and既是逻辑运算符,也是位移运算符:https://www.yiibai.com/vb.net/vb.net_bitshift_operators.html,如果使用数字测试,vb.net 就把and当做位移符号了