Foxtable(狐表)用户栏目专家坐堂 → 新增行,保存时,某列内容自动加1


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

主题:新增行,保存时,某列内容自动加1

美女呀,离线,留言给我吧!
tina2012
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:286 积分:2462 威望:0 精华:0 注册:2013/9/23 16:09:00
新增行,保存时,某列内容自动加1  发帖心情 Post By:2014/6/16 17:04:00 [显示全部帖子]

采用“网络环境下的复杂编号”章节内容,

 

为测试项集新增行时,功能测试号自动加1,如下代码可以实现自动加1,但是在表Number_List中,没有新增行,没有更新。

Dim dr As DataRow = e.DataRow
If dr.RowState <> DataRowState.Added Then '如果不是新增行
    Return '那么返回
End If
Dim key As Integer
Dim cmd As New SQLCommand
cmd.C '设置数据源名称
cmd.CommandText = "Select Max(Number) from {Number_list}"
Do
    key = cmd.ExecuteScalar
    cmd.commandText = "Update [Number_list] Set [Number] = " & (key + 1) & ""
    If cmd.ExecuteNonQuery() > 0 Then '更新顺序号
        Exit Do '更新成功则退出循环
    End If
Loop
e.DataRow("功能测试号") = key
MessageBox.show(key)

 

 

但是写入以下代码后,会从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编辑过]

 回到顶部
美女呀,离线,留言给我吧!
tina2012
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:286 积分:2462 威望:0 精华:0 注册:2013/9/23 16:09:00
  发帖心情 Post By: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


 回到顶部
美女呀,离线,留言给我吧!
tina2012
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:286 积分:2462 威望:0 精华:0 注册:2013/9/23 16:09:00
  发帖心情 Post By:2014/6/17 10:26:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:ceshiguanli.zip


 回到顶部
美女呀,离线,留言给我吧!
tina2012
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:286 积分:2462 威望:0 精华:0 注册:2013/9/23 16:09:00
  发帖心情 Post By:2014/6/17 10:26:00 [显示全部帖子]

例子已上传


 回到顶部
美女呀,离线,留言给我吧!
tina2012
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:286 积分:2462 威望:0 精华:0 注册:2013/9/23 16:09:00
  发帖心情 Post By:2014/6/17 10:38:00 [显示全部帖子]

表都是公司服务器上的,那我怎么做例子能让你们看到呢?

 回到顶部
美女呀,离线,留言给我吧!
tina2012
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:286 积分:2462 威望:0 精华:0 注册:2013/9/23 16:09:00
  发帖心情 Post By:2014/6/17 10:50:00 [显示全部帖子]

怎么找到表的某列的最大值呢???

 回到顶部