Foxtable(狐表)用户栏目专家坐堂 → 数字转字符串问题(已解决)


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

主题:数字转字符串问题(已解决)

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
数字转字符串问题(已解决)  发帖心情 Post By:2013/1/2 9:49:00 [只看该作者]

各位老师,

 

想在单元格中设置编号的顺序号,在单元格中输入4,输入后自动转换为“0000”,如果是3则自动转换为“000” 以此类推,输入任何一个数字都可以转换为数字所代表的“0”的个数,代码要怎么写?

 

谢谢!

[此贴子已经被作者于2013-1-2 15:54:52编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/1/2 9:57:00 [只看该作者]

 AfterOpenProject事件代码:

 

DataTables("**表").DataCols("编号").SetFormat("000")


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/1/2 9:57:00 [只看该作者]

列属性也可以设置!

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/2 10:45:00 [只看该作者]

谢谢程版,但不是整列的如下图

  


图片点击可在新窗口打开查看此主题相关图片如下:360截图20130102103912658.jpg
图片点击可在新窗口打开查看


 

当左边是“日期格式”时,第二列就是下拉列表

只有当第一列是“顺序号位数”时第二列中输入的数字才要自动转换为“0000”的样式,数字是任意的,不固定的。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:动态列表项目.table


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/2 13:34:00 [只看该作者]

用了如如下代码可以了,但如果单元格内输入非数字的内容就会出错,如何才能避免这个错误?要是能动态设置单元格的数据类型就好了。但我不知道请教大家了。

 

If e.Col.Name = "值" And e.Row("类型") = "顺序号位数" Then
    Dim s As String = "0000000000"
Dim i As Integer = Cint(e.text)
    If i > 10 Then
        messagebox.show("只能输入10以内的数字!","提示")
        e.Cancel = True '则禁止退出编辑模式
    Else
        e.text = s.substring(0,i)
    End If
End If

[此贴子已经被作者于2013-1-2 13:35:37编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/1/2 14:45:00 [只看该作者]

表属性,DataColChanged事件代码:

 

If e.DataCol.name = "第二列"
    If e.DataRow.Isnull("第二列") = False
        If IsNumericIsNumeric(e.DataRow("第二列"))
            e.DataRow("第二列") = Format(e.DataRow("第二列"),"0000")
        End If
    End If
End If


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2013/1/2 15:01:00 [只看该作者]

If e.DataCol.name = "第二列"
    If e.DataRow("第一列") = "顺序号位数"
        If e.DataRow.Isnull("第二列") = False
            If IsNumeric(e.DataRow("第二列"))
                If e.DataRow("第二列") <> 0
                    e.DataRow("第二列") = Format(e.DataRow("第二列"),"0".PadLeft(e.DataRow("第二列"),"0"))
                End If
            End If
        End If
    End If
End If

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/2 15:08:00 [只看该作者]

谢谢程版,但第二列是字符型,通用的,即不同的表用的结构不一样,其他都解决了,只是当左边类型为“顺序号位数”时如何限制值这个单元格只能输入0—9的数字就行,如果左边类型是字符串,那就限制不能输入数字,这样的功能要如何实现?

 

谢谢!

 

 


图片点击可在新窗口打开查看此主题相关图片如下:示例.gif
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-1-2 15:23:03编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/1/2 15:50:00 [只看该作者]

那你判断下输入的是不是数值型 不就行了.

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/1/2 15:54:00 [只看该作者]

对啊,怎么没想到,解决了。谢谢blackzhu,程版及CZY!


 回到顶部
总数 12 1 2 下一页