Foxtable(狐表)用户栏目专家坐堂 → 并发问题?


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

主题:并发问题?

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


加好友 发短信
等级:六尾狐 帖子:1271 积分:8670 威望:0 精华:0 注册:2019/6/13 9:57:00
并发问题?  发帖心情 Post By:2024/12/13 16:03:00 [只看该作者]

'编号-删除后不断号-DataRowAdding增加一行时执行
Dim dr As DataRow = DataTables("设置表").Find("项目名称='" & e.DataTable.Name & "编号'")
If dr IsNot Nothing AndAlso dr.IsNull("设置") = False Then
    Dim max As String = e.DataTable.Compute("max(编号)")
    Dim idx As Integer
    If max > "" Then
        idx = max.Substring(Length + 1)+1
    Else
        idx = 1
    End If
    e.DataRow("编号") =  & "-" & Format(idx, "0000")
End If

这样可以在局域网,不重复不断号?如果不行,要怎么改?
[此贴子已经被作者于2024/12/15 3:10:07编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1271 积分:8670 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/12/13 16:44:00 [只看该作者]

Dim dr As DataRow = DataTables("设置表").Find("项目名称='" & e.DataTable.Name & "采购单号'")
If dr IsNot Nothing AndAlso dr.IsNull("设置") = False Then
    Dim max As String = e.DataTable.Compute("max(采购单号)")
    Dim idx As Integer
    
            Dim d As Date = e.DataRow("日期")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y, m)
            Dim fd As Date = New Date(y, m, 1) '获得该月的第一天
            Dim ld As Date = New Date(y, m, Days) '获得该月的最后一天

    
    If max > "" Then
        idx = max.Substring(dr("设置").Length + 1) + 1
    Else
        idx = 1
 


问题2:上面代码,加上日期,执行没报错,但退出项目,如何正常?
[此贴子已经被作者于2024/12/15 3:10:35编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/12/13 16:47:00 [只看该作者]

参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=177677&authorid=0&page=0&star=1

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


加好友 发短信
等级:六尾狐 帖子:1271 积分:8670 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/12/14 9:10:00 [只看该作者]


Dim dr As DataRow = DataTables("设置表").Find("项目名称='" & e.DataTable.Name & "编号'")
If dr IsNot Nothing AndAlso dr.IsNull("设置") = False Then
    Dim max As String = e.DataTable.Compute("max(编号)")
    Dim idx As Integer
    


    
    If max > "" Then
        idx = max.Substring(dr("设置").Length + 1) + 1
    Else
        idx = 1
    End If



报错
错误所在事件:表,水果单价表,DataRowAdding
详细错误信息:
调用的目标发生了异常。
从字符串“202412-20242”到类型“Double”的转换无效。
输入字符串的格式不正确。



[此贴子已经被作者于2024/12/15 3:11:18编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/12/14 9:29:00 [只看该作者]

msgbox(max)
msgbox(max.Substring(max.Length  - 4))
idx = max.Substring(max.Length  - 4) + 1

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


加好友 发短信
等级:六尾狐 帖子:1271 积分:8670 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/12/14 9:57:00 [只看该作者]

这个方法,在局域网,多人操作,会不会冲突,重复?

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/12/14 10:12:00 [只看该作者]

冲突,重复。

改为使用OpenQQ,在服务端统一生成编号,类似:http://www.foxtable.com/webhelp/topics/3008.htm
或者这里4楼:http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=145239

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


加好友 发短信
等级:六尾狐 帖子:1271 积分:8670 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/12/14 10:34:00 [只看该作者]

这里4楼:http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=145239

三、按日期和类别编号

删除后,不能从原来编号开始,比如:表A有CG-202412-001,CG-202412-002,CG-202412-003,清空或删除这三条记录,在新增时,希望从CG-202412-001,CG-202412-002,CG-202412-003依次补上。

要实现这个是不是要加一个回收表,进行回收利用?

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/12/14 10:36:00 [只看该作者]

是的加一个回收表

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


加好友 发短信
等级:六尾狐 帖子:1271 积分:8670 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/12/14 11:06:00 [只看该作者]


Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "送货日期"
        If dr.IsNull("送货日期") Then '如果数量或单价为空
            dr("送货单号") = Nothing
        Else
       Dim dr2 As DataRow = DataTables("单号设置表").Find("引用表和单号字段名称='" & e.DataTable.Name & "送货单号'")
        If dr2 IsNot Nothing AndAlso dr2.IsNull("前缀") = False Then
            Dim max As String = e.DataTable.Compute("max(送货单号)")
            Dim idx As Integer
         
            '    编号规则
            If max > "" Then
                'idx = max.Substring(dr("设置").Length + 1) + 1'不加日期的编号规则
                'msgbox(max)测试显示
                'msgbox(max.Substring(max.Length - 4))测试显示
                idx = max.Substring(max.Length - 4) + 1'加日期的编号规则
            Else
                idx = 1
            End If


End Select

报错,如图,如何改?


图片点击可在新窗口打开查看此主题相关图片如下:报错.jpg
图片点击可在新窗口打开查看



[此贴子已经被作者于2024/12/15 3:12:22编辑过]

 回到顶部
总数 15 1 2 下一页