Foxtable(狐表)用户栏目专家坐堂 → 自动编号问题


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

主题:自动编号问题

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


加好友 发短信
等级:童狐 帖子:220 积分:1893 威望:0 精华:0 注册:2013/5/20 23:54:00
自动编号问题  发帖心情 Post By:2017/4/26 18:13:00 [只看该作者]

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:表,转送表,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“4-025”到类型“Integer”的转换无效。
输入字符串的格式不正确。
老师,自动编号代码后出现这个提示,请帮忙解决

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


加好友 发短信
等级:童狐 帖子:220 积分:1893 威望:0 精华:0 注册:2013/5/20 23:54:00
  发帖心情 Post By:2017/4/26 18:14:00 [只看该作者]

Dim eb As DataRow 
    eb = DataTables("计划明细1").Find("工piao编号 = '" & e.DataRow("工piao编号") & "'")    
    If eb  IsNot Nothing '如果找到, 则设置各列内容
        e.DataRow("试样编号")= eb("试样编号")
        e.DataRow("材检编号")= eb("材检编号")
        e.DataRow("工号")= eb("工号")
        e.DataRow("部件图号")= eb("部件图号")
        e.DataRow("零件图号")= eb("零件图号")
        e.DataRow("零件名称")= eb("零件名称")
        e.DataRow("材质")= eb("材质")
        e.DataRow("数量")= eb("数量")
        e.DataRow("规格")= eb("下料尺寸") 
    End If

If e.DataCol.Name = "开具日期" Then
    If e.DataRow.IsNull("开具日期") Then
        e.DataRow("转送单号") = Nothing
    Else
        Dim d As Date = e.DataRow("开具日期")
        Dim y As Integer = d.Year
        Dim fd As Date = New Date(y,1,1) '获得该月的第一天
        Dim ld As Date = fd.AddYears(1)
        Dim bh As String = Format(d,"yyyy") '生成编号的前6位,4位年,2位月.
        If e.DataRow("转送单号").StartsWith(bh) = False '如果编号的前6位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(转送单号)","开具日期 >= #" & fd & "# And 开具日期 < #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(bh.length+1)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("转送单号") = bh & "-" & Format(idx,"000")
        End If
    End If

[此贴子已经被作者于2017/4/26 18:14:26编辑过]

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


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

 代码应该没有问题的,如果你【转送单号】列存在一个不正确的单号,那么会导致你代码报错的,你查询一下是否有【不一样】的单号。

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


加好友 发短信
等级:童狐 帖子:220 积分:1893 威望:0 精华:0 注册:2013/5/20 23:54:00
  发帖心情 Post By:2017/4/26 18:25:00 [只看该作者]

我将数据库的数据都删除了还是同样提示

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


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

以下是引用yuyu060712在2017/4/26 18:25:00的发言:
我将数据库的数据都删除了还是同样提示

 

不,可,能。我测试没问题。实例上传上来测试。


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


加好友 发短信
等级:童狐 帖子:220 积分:1893 威望:0 精华:0 注册:2013/5/20 23:54:00
  发帖心情 Post By:2017/4/26 18:35:00 [只看该作者]

老师,我的思路是,打开一个窗口,窗口打开时该表自动增加10行,日期为系统日期,该10行的转送单号为自动编号,其实我只要第一个自动编号,自动编号进行10行的填充,可能是那里出了问题,刚删除了数据,重新打开没有问题了,但不知道后面运行会出问题不?谢谢老师


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


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

AfterLoad事件,把代码改成

 

Dim t As Table = Tables("表A")
Dim bh As String = ""
For i As Integer = 1 To 10
    Dim nr As Row = t.AddNew
    If i = 1 Then
        nr("开具日期") = Date.Today
        bh = nr("转送单号")
    End If
    systemready = False
    nr("开具日期") = Date.Today
    nr("转送单号") = bh
    systemready = True
Next


 回到顶部