Foxtable(狐表)用户栏目专家坐堂 → 求助:登录名后有很多空格,User.Name也必须加".Trim"才能正常使用


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

主题:求助:登录名后有很多空格,User.Name也必须加".Trim"才能正常使用

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


加好友 发短信
等级:婴狐 帖子:44 积分:600 威望:0 精华:0 注册:2016/10/1 11:15:00
求助:登录名后有很多空格,User.Name也必须加".Trim"才能正常使用  发帖心情 Post By:2017/4/13 15:18:00 [只看该作者]

我用了外部数据表来管理用户信息。是在SQL2005里面直接创建了一个User的表,严格按照帮助文档里面的方法添加的

Name nvarchar(50) 设为了主键
Type int
Config ntext

一直发现登录的时候窗口中用户名一栏和以前的项目不同,是个蓝条,今天才发现,这个蓝条是因为用户名后面有n个空格,然后默认又是全选状态,所以选了很多空格就是一个蓝条。

前几天也发现一次引用 User.Name的时候出错,当时的解决办法是设置一个变量,然后把User.Name赋值给这个变量,就正常了。

今天在PrepareEdit事件中再次引用 User.Name,一直无效,折腾许久才发现是空格搞得怪。

下面的代码可以正常工作,因为 User.Name 后面加了 .Trim,否则就无效。

If e.Row("业务员") <> User.Name.Trim Then
    e.Cancel = True
End If

我在想是否因为在SQL中设置了那个 Name 是 nvarchar(50),这个50是不是字符数?难道SQL2005自动给后面补充满了50个字符?因为我把登录框用户名那里点了一下用光标挪到最左面,然后用光标从左向右一个一个数,发现加上名字的三个字正好是50个字符。
而如果用开发者登录一次,然后下次登录就能看到只有开发者三个字,没有那些看不到头的空格造成的蓝条。我觉得是因为开发者账户是存储在项目中,而不是在SQL的数据表中。

是否应该在SQL里面修改一下Name的长度?还是有别的设置技巧?Name 允许 Null 值等?

求解,谢谢!



[此贴子已经被作者于2017/4/13 15:27:20编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/13 15:27:00 [只看该作者]

 如果你设置成 nchart(50) 才会自动填充空格,nvarchar(50)不会填充空格。

 

 你尝试新增一个用户,看其保存的数据有没有空格。

 

 如果只是你原来数据有空格,你可以写代码把清除,保存,即可

 

For Each dr As DataRow In DataTables("users").DataRows
    dr("name") = dr("name").trim()
Next


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


加好友 发短信
等级:婴狐 帖子:44 积分:600 威望:0 精华:0 注册:2016/10/1 11:15:00
  发帖心情 Post By:2017/4/13 15:35:00 [只看该作者]

色老师,你太棒了!

我重新打开SQL里面用户的数据表,发现果真是我把Name设置成了nchart(50) 

非常感谢。

 回到顶部