以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 新增行,保存时,某列内容自动加1 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52463) |
||||
-- 作者:tina2012 -- 发布时间:2014/6/16 17:04:00 -- 新增行,保存时,某列内容自动加1 采用“网络环境下的复杂编号”章节内容,
为测试项集新增行时,功能测试号自动加1,如下代码可以实现自动加1,但是在表Number_List中,没有新增行,没有更新。 Dim dr As DataRow = e.DataRow
但是写入以下代码后,会从0开始编号,在表Number_List中,也没有新增行,也没有更新。怎么回事呢?
Dim dr As DataRow = e.DataRow If dr.RowState <> DataRowState.Added Then \'如果不是新增行 Return \'那么返回 End If Dim cmd1 As New SQLCommand Dim cmd2 As New SQLCommand Dim Key As Integer cmd1.C \'设置数据源名称 cmd2.C cmd1.commandText = "Select Max(Number) from {Number_list}" Key = cmd1.ExecuteScalar() \'从后台获得顺序号 If cmd1.ExecuteScalar > 0 Then \'如果编号表不存在前缀的行,那么增加一行 cmd1.commandtext = "Insert Into Number_List (Number) Values(\'" & key + 1 & "\')" cmd1.ExecuteNonQuery End If Do Key = cmd1.ExecuteScalar() \'从后台获得顺序号 cmd2.commandText = "Update [Number_list] Set [Number] = " & (Key + 1) & "" If cmd2.ExecuteNonQuery() > 0 Then \'更新顺序号 Exit Do \'更新成功则退出循环 End If Loop e.DataRow("功能测试号") = key
此主题相关图片如下:01.jpg 此主题相关图片如下:02.jpg 此主题相关图片如下:03.jpg [此贴子已经被作者于2014-6-16 17:05:28编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2014/6/16 17:06:00 -- 重新加载一下 Number_List 就能看到了
Datatables("Number_List").Load |
||||
-- 作者:tina2012 -- 发布时间:2014/6/17 10:16:00 -- 还是不行,测试项集中测试功能号是从1到244,但是执行代码后却从99开始,Number_List中没有增加行来记录编号到哪个,怎么回事???重新打开项目后,Number_List表中,Number列所有行都变成了最大号,请帮忙解决。BeforeSaveDataRow代码: Dim dr As DataRow = e.DataRow If dr.RowState <> DataRowState.Added Then \'如果不是新增行 Return \'那么返回 End If Dim key As Integer Dim cmd1 As New SQLCommand Dim cmd2 As New SQLCommand cmd1.C \'设置数据源名称 cmd2.C \'设置数据源名称 cmd1.CommandText = "Select Max(Number) from {Number_list}" key = cmd1.ExecuteScalar cmd1.CommandText = "Insert Into Number_List(Number) Values (\'" & (key + 1) & "\')" cmd1.ExecuteNonQuery Do cmd2.commandText = "Update [Number_list] Set [Number] = " & (key + 1) & "" If cmd2.ExecuteNonQuery() > 0 Then \'更新顺序号 Exit Do \'更新成功则退出循环 End If Loop e.DataRow("功能测试号") = key + 1 |
||||
-- 作者:Bin -- 发布时间:2014/6/17 10:17:00 -- 上例子看看 |
||||
-- 作者:有点甜 -- 发布时间:2014/6/17 10:19:00 -- 不明所指,请上传例子。 |
||||
-- 作者:tina2012 -- 发布时间:2014/6/17 10:26:00 --
|
||||
-- 作者:tina2012 -- 发布时间:2014/6/17 10:26:00 -- 例子已上传 |
||||
-- 作者:有点甜 -- 发布时间:2014/6/17 10:26:00 -- 看了你的代码。这一段,删除
Do
cmd2.commandText = "Update [Number_list] Set [Number] = " & (key + 1) & ""
If cmd2.ExecuteNonQuery() > 0 Then \'更新顺序号
Exit Do \'更新成功则退出循环
End If
Loop
|
||||
-- 作者:有点甜 -- 发布时间:2014/6/17 10:27:00 -- 以下是引用tina2012在2014-6-17 10:26:00的发言:
例子已上传
没有数据源啊,打不开,看8楼。 |
||||
-- 作者:Bin -- 发布时间:2014/6/17 10:29:00 -- 无数据源无法测试. |