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


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

主题:编号的问题

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
编号的问题  发帖心情 Post By:2011/9/20 17:14:00 [只看该作者]

If e.DataCol.Name = "员工姓名" Then
    If e.DataRow.IsNull("员工姓名") Then
        e.DataRow("工号") = Nothing
    Else
        Dim cmd As New SQLCommand
        Dim dt As DataTable
        cmd.C
        cmd.CommandText = "SELECT * From {销售人员档案}"
        dt = cmd.ExecuteReader()
        If dt.Datarows.Count > 0 Then
            e.DataRow("工号") = Format(dt.Compute("Max(工号)") + 1,"000")
        Else
            e.DataRow("工号") = "HG" & "001"
        End If
    End If
End If

  这个带有字符的编号,一直提示字符不能转换成DOUBLE数据不成功,我用转换字符的函数也不行

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/20 17:28:00 [只看该作者]

感觉你这段代码很不严谨

1、先是判断后台是否有数据,后面又从已经加载的表中取编号的最大值,不有些矛盾吗?

2、至于出错,是因为你的工号列是个字符型,内容时"HG001"、"HG002",这样的内容怎么能和1相加呢?

[此贴子已经被作者于2011-9-20 17:29:05编辑过]

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


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

    我的判断是看后台工号列有没有数据,如果有在工号列的数据上加上1,没有的话就是HG001,关键就是HG001就是带有字符不能增加,我转换了也不行?你帮我看看这个HG增加我怎么写代码?

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/9/20 17:52:00 [只看该作者]

Val("HG008".Substring(2))+1

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/20 17:58:00 [只看该作者]

如果你是根据已经加载的表取最大编号,何必从后台判断是否有数据呢?

直接:

 

if datatables("某表").Datarows.count > 0 Then

end if

 

不就行了吗?

 

至于相加问题,这样解决:

 

Dim s As String = dt.Compute("Max(工号)")
Dim v As Integer = s.SubString(2)
 e.DataRow("工号") = Format(v + 1,"000")

 

 


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


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2011/9/20 19:26:00 [只看该作者]

本来是想不加载的.

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


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2011/9/20 20:48:00 [只看该作者]

我是不想加载数据而增加行时编号增加1,代码:

If e.DataCol.Name = "员工姓名" Then
    If e.DataRow.IsNull("员工姓名") Then
        e.DataRow("工号") = Nothing
    Else
        Dim cmd1 As New SQLCommand
        Dim dt1 As DataTable
        Dim dr As DataRow
        cmd1.C
        cmd1.CommandText = "SELECT * From {单号定义}"
        dt1 = cmd1.ExecuteReader()
        dr = dt1.find("表名='" & CurrentTable.Name & "'")
        If dr IsNot Nothing Then
            Dim cmd As New SQLCommand
            Dim dt As DataTable
            cmd.C
            cmd.CommandText = "SELECT * From {销售人员档案}"
            dt = cmd.ExecuteReader()
            If dt.Datarows.Count>0 Then
                Dim s As String = dt.Compute("Max(工号)")
                Dim v As Integer = s.SubString(2)
                e.DataRow("工号") = Format(v + 1,"000")
            Else
                e.DataRow("工号") = dr("单号定义") & "001"
            End If
        End If
    End If
End If

帮忙看看!

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


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2011/9/20 21:50:00 [只看该作者]

搞定

 回到顶部