Foxtable(狐表)用户栏目专家坐堂 → 修改后的帮助中编号代码问题


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

主题:修改后的帮助中编号代码问题

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


加好友 发短信
等级:小狐 帖子:313 积分:2913 威望:0 精华:0 注册:2012/7/20 16:04:00
修改后的帮助中编号代码问题  发帖心情 Post By:2013/10/28 16:22:00 [只看该作者]

帮助中的“网络环境复杂编号”代码稍加修改后如下,今天突然有3条数据串了,经检查“编号”表发现:本来“表名”列有“借款”这个表名,不知为什么又增加了一行相同的表名“借款”,编号从1开始了。删除这行后又正常了。。。为什么呢?“借款”这个表名很难找到么?之前都挺好的,今天突然出这个错,代码有问题?请高手帮我完善下,避免以后再出这个错误。

 

If e.DataTable.Datacols.Contains("编号") Then
    Dim cmd1 As New SQLCommand
    Dim cmd2 As New SQLCommand
    Dim Key As Integer
    Dim nm As String = e.DataTable.name
    cmd1.C '设置数据源名称
    cmd2.C
    cmd1.commandText = "Select Count(*) From [编号] Where 表名 = '" & nm & "'"
    If cmd1.ExecuteScalar = 0 Then '如果编号表不存在前缀的行,那么增加一行
        cmd1.commandtext = "Insert Into 编号 (表名,序号) Values('" & nm & "',1)"
        cmd1.ExecuteNonQuery
    End If
    cmd1.commandText = "Select [序号] From [编号] Where 表名 = '" & nm & "'"
    Do
        Key = cmd1.ExecuteScalar() '从后台获得顺序号
        cmd2.commandText = "Update [编号] Set [序号] = " & (Key + 1) & " Where [序号] = " & Key & " And 表名 = '" & nm & "'"
        If cmd2.ExecuteNonQuery() > 0 Then '更新顺序号
            Exit Do '更新成功则退出循环
        End If
    Loop
    e.DataRow("编号") = key
End If


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/28 16:27:00 [只看该作者]

不能解释,你测试下,看看什么情况下才会出现这个情况吧. 代码看起来是没问题的!

能重新错误才好办.

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/28 16:29:00 [只看该作者]

这个代码,不会重复增加的,要不你修改后台的这个表,将表名这一列设置为主键,这样就是手工想增加重复的都没办法增加的


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


加好友 发短信
等级:小狐 帖子:313 积分:2913 威望:0 精华:0 注册:2012/7/20 16:04:00
  发帖心情 Post By:2013/10/28 16:35:00 [只看该作者]

使用了2个月了,一直正常。难道是“If cmd1.ExecuteScalar = 0 Then '”的时候网络有问题,没返回1,于是代码执行了增加行的操作?


 回到顶部