以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 编号的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=12923) |
-- 作者:blackzhu -- 发布时间: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数据不成功,我用转换字符的函数也不行
|
-- 作者:狐狸爸爸 -- 发布时间:2011/9/20 17:28:00 -- 感觉你这段代码很不严谨 1、先是判断后台是否有数据,后面又从已经加载的表中取编号的最大值,不有些矛盾吗? 2、至于出错,是因为你的工号列是个字符型,内容时"HG001"、"HG002",这样的内容怎么能和1相加呢? [此贴子已经被作者于2011-9-20 17:29:05编辑过]
|
-- 作者:blackzhu -- 发布时间:2011/9/20 17:46:00 -- 我的判断是看后台工号列有没有数据,如果有在工号列的数据上加上1,没有的话就是HG001,关键就是HG001就是带有字符不能增加,我转换了也不行?你帮我看看这个HG增加我怎么写代码? |
-- 作者:don -- 发布时间:2011/9/20 17:52:00 -- Val("HG008".Substring(2))+1 |
-- 作者:狐狸爸爸 -- 发布时间:2011/9/20 17:58:00 -- 如果你是根据已经加载的表取最大编号,何必从后台判断是否有数据呢? 直接:
if datatables("某表").Datarows.count > 0 Then end if
不就行了吗?
至于相加问题,这样解决:
Dim s As String = dt.Compute("Max(工号)")
|
-- 作者:布莱克朱 -- 发布时间:2011/9/20 19:26:00 -- 本来是想不加载的. |
-- 作者:布莱克朱 -- 发布时间: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 帮忙看看!
|
-- 作者:布莱克朱 -- 发布时间:2011/9/20 21:50:00 -- 搞定 |