Foxtable(狐表)用户栏目专家坐堂 → [求助]


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

主题:[求助]

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


加好友 发短信
等级:幼狐 帖子:90 积分:779 威望:0 精华:0 注册:2017/11/23 8:55:00
[求助]  发帖心情 Post By:2018/11/29 11:22:00 [只看该作者]

老师,今天碰到一个问题,应该怎么改:
.NET Framework 版本:2.0.50727.5420
Foxtable 版本:2018.10.9.1
错误所在事件:窗口,设备新增,AfterLoad
详细错误信息:
索引和长度必须引用该字符串内的位置。
参数名: length

窗口,设备新增,AfterLoad:
Tables("杭康设备总表").allowedit = True
Tables("杭康设备总表").AddNew

'---------以下是自动生成公司编号--------------------------
Dim i As String = DataTables("杭康设备总表").Compute("max(公司编号)")
Dim idx As Integer
If i > " " Then
    idx = cint(i.SubString(8,5)) +1
Else
    idx = 1
End If
Tables("杭康设备总表").Current("公司编号") = "ZJHK/ZY-" & ForMAT(idx,"00000")
Tables("杭康设备总表").Current("序号") = DataTables("杭康设备总表").Compute("max(序号)")+1
'---------以上是自动生成公司编号-----------------------------

Dim gsbh As WinForm.TextBox = e.Form.Controls("公司编号")
Dim ybh As WinForm.TextBox = e.Form.Controls("原编号")

ybh.Value = gsbh.Value  
Dim r As Row = Tables("杭康设备总表").Current

r("原编号") = ybh.Value

-----------------
公司编号列有如下各种内容:
ZJHK/ZY-768
ZJHK/ZY-17-01
ZJHK/ZY-Y01
ZJHK/ZY-CZ01
ZJHK/ZY-AQM01
ZJHK/ZY-17135-3
ZJHK/ZY-18108
以前一直能用,不报错,这几天增加了一列(表结构改动了),新增就报错了,编号不能自动生成。请老师帮助。谢谢。
只要求生成的编号试样:ZJHK/ZY-18108 就成。其他的排除。
[此贴子已经被作者于2018/11/29 11:34:36编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/29 11:32:00 [只看该作者]

1、不同类型的编号,编写的代码不能一样的。

 

2、你写的这个代码,意识是前8位是前缀,后面5位是编号,但对于【ZJHK/ZY-768】或 【ZJHK/ZY-CZ01】就不适用了

 

idx = cint(i.SubString(8,5)) +1

 

你可以尝试改成比如

 

idx = val(i.SubString(8)) +1

 

但这样,也不能匹配你所有的编号的,必须有相同的规律才行。

 

3、具体实例发上来测试,说明你要做到什么效果。


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


加好友 发短信
等级:幼狐 帖子:90 积分:779 威望:0 精华:0 注册:2017/11/23 8:55:00
  发帖心情 Post By:2018/11/29 11:36:00 [只看该作者]

只要求生成的编号试样:ZJHK/ZY-18108 就成。其他的排除。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/29 11:38:00 [只看该作者]

代码改成这样试试,看弹出什么

 

Dim i As String = DataTables("杭康设备总表").Compute("max(公司编号)")
msgbox(i)
Dim idx As Integer
msgbox(i.length)
If i > "" Then
    idx = val(i.SubString(8)) +1
Else
    idx = 1
End If
msgbox(idx)

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


加好友 发短信
等级:幼狐 帖子:90 积分:779 威望:0 精华:0 注册:2017/11/23 8:55:00
  发帖心情 Post By:2018/11/29 11:46:00 [只看该作者]

ZJHK/ZY-Y10
11
1


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/29 11:50:00 [只看该作者]

1、你数据里面,为什么有这样的数据?【ZJHK/ZY-Y10】?

 

2、或者,你可以把

 

Dim i As String = DataTables("杭康设备总表").Compute("max(公司编号)")

 

改成

 

Dim i As String = DataTables("杭康设备总表").Compute("max(公司编号)", "len(公司编号)=13")


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


加好友 发短信
等级:幼狐 帖子:90 积分:779 威望:0 精华:0 注册:2017/11/23 8:55:00
  发帖心情 Post By:2018/11/29 11:55:00 [只看该作者]

有的。我现在要生成8+5的编号,然后比原编号+1就成
ZJHK/ZY-00000

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/29 11:55:00 [只看该作者]

改成

 

Dim i As String = DataTables("杭康设备总表").Compute("max(公司编号)", "len(公司编号)=13")

 

 


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


加好友 发短信
等级:幼狐 帖子:90 积分:779 威望:0 精华:0 注册:2017/11/23 8:55:00
  发帖心情 Post By:2018/11/29 12:00:00 [只看该作者]

.NET Framework 版本:2.0.50727.5420
Foxtable 版本:2018.10.9.1
错误所在事件:窗口,设备新增,AfterLoad
详细错误信息:
从字符串“AQM30”到类型“Integer”的转换无效。
输入字符串的格式不正确。
 
老师,把这有字符串的排除就可以了。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/29 12:08:00 [只看该作者]

改成

 

Dim i As String = DataTables("杭康设备总表").Compute("max(公司编号)", "len(公司编号)=13 and substring(公司编号, 9, 1) in ('0','1','2','3','4','5','6','7','8','9')")


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