以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  现在使用了OPENQQ进行单号生成管理  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=191693)

--  作者:zhuxinhui
--  发布时间:2024/5/2 15:56:00
--  现在使用了OPENQQ进行单号生成管理
现在使用了OPENQQ进行单号生成管理,如果重置日期、单据类型、类型其中任意一列,都会造成所有单号重新生成
如何锁死这三列不能进行重置呢

--  作者:chnfo
--  发布时间:2024/5/4 23:08:00
--  
不要给单号过于复杂的规则,希望通过单号去识别太多信息,其实是一个很无厘头的做法。
一是单号太长,一个正常的使用者几乎是不可能通过单号去沟通的
这就象身份证号长达18位,平常在沟通时,有谁会说你去把那个身份证号是………………的人给我叫来,肯定是你把张三给我叫来啊

例如一个单号的信息包括日期、仓库编号(假设3个仓)、4种类型、还要加3位流水号,这个编号已经非常长了,完全没有必要。
而且培训成本很高啊,光让大家记住单号的规则就已经很费事了,而且各种各样的单

不允许重置,把权限不开放出来就可以了呀




--  作者:zhuxinhui
--  发布时间:2024/5/5 13:31:00
--  
不知有没有,不允许哪列不能重置的做法
--  作者:linyunu
--  发布时间:2024/5/5 13:49:00
--  
重置前判断一下
if 表列名 <>(日期、单据类型、类型)then
重置
end if

--  作者:有点蓝
--  发布时间:2024/5/5 21:02:00
--  
重置列这种功能正常不应该给普通用户使用的。因为一般是事件代码更改后,希望重置列处理一下旧数据。而发布后的程序是无法编辑事件代码的,也就不存在处理旧数据这种情况。

另外可以参考一下这里的方法是对编号数据做一个基础判断:http://www.foxtable.com/webhelp/topics/2403.htm,即如果编号的前n位是不符合要求的才去获取新的编号

        If QQClient.Ready = False Then
            PopMessage("QQClient未启动,无法生成编号!","提示",PopIconEnum.Infomation,5)
        Else
                Dim bh As String = e.DataRow("工程代码"& "-" &  Format(e.DataRow("制单日期"),"yyyyMM")
        If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前6位不符
                Dim rt As String =  QQClient.SendWait(":g" & bh & "g:")
                
Dim id As Integer
                If rt > "" Then
……
        End If

--  作者:zhuxinhui
--  发布时间:2024/5/5 21:25:00
--  
  
1、
重置列这种功能正常不应该给普通用户使用的。因为一般是事件代码更改后,希望重置列处理一下旧数据。而发布后的程序是无法编辑事件代码的,也就不存在处理旧数据这种情况。
这个也有道理,一重置就会把所有历史数据都修改了

2、这个写也是不能起到判断的作用
If CurrentTable.cols(CurrentTable.ColSel).name <> "日期" Or CurrentTable.cols(CurrentTable.ColSel).name <> "单据类型" Or CurrentTable.cols(CurrentTable.ColSel).name <> "类型"Or CurrentTable.cols(CurrentTable.ColSel).name <> "类别"Or CurrentTable.cols(CurrentTable.ColSel).name <> "单据类别"Then
            If CurrentTable IsNot Nothing AndAlso CurrentTable.ColSel >= 0 Then
                Dim dc As DataCol = CurrentTable.Cols(CurrentTable.ColSel).DataCol
                dc.RaiseDataColchanged()
            End If
        End If