Foxtable(狐表)用户栏目专家坐堂 → 如何解决在不同电脑上同时录入销售单 销售单编号重复的问题?


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

主题:如何解决在不同电脑上同时录入销售单 销售单编号重复的问题?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 19:26:00 [显示全部帖子]

 1、生成编号之后,马上save这行数据;

 

 2、原本如果用compute计算编号,现在就必须用sqlcompute计算。

 

 3、原本如果用find,现在就必须用sqlFind。

[此贴子已经被作者于2014-11-18 19:26:42编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 20:01:00 [显示全部帖子]

 呃,白屏很多原因的,你尝试先去掉afterload里面的代码

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 20:09:00 [显示全部帖子]

 是的,就是应该这样。或者你不允许删除,只是把某一行作为废单处理即可。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 20:17:00 [显示全部帖子]

以下是引用jswjyjf在2014-11-18 20:13:00的发言:

假如编码是根据日期算出来的,同时选的同一日期,单子都还没有保存,销售单号是一样的,如果第一个人保存了,第二个开的单子号码 会覆盖第一个人开的号码,怎么办?

 

用代码,在datacochanged事件,在编码一生成的时候,立马保存;


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 20:37:00 [显示全部帖子]

以下是引用jswjyjf在2014-11-18 20:25:00的发言:
是的,立马保存不符合实际情况

 

编号确立,就应该保存。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 20:55:00 [显示全部帖子]

BeforeAddDataRow事件,加入代码

 

Dim d As Date = e.DataRow("销售日期")

Dim bh As String = "XS" &  Format(d,"yyMMdd") '生成销售单号的前6位,4位年,2位月.

Dim max As String
Dim idx As Integer
max = e.DataTable.sqlCompute("Max(销售单号)","销售日期 = '" & d & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得当天的最大销售单号
If max > "" Then '如果存在最大销售单号
    idx = CInt(max.Substring(9,3)) + 1 '获得最大销售单号的后三位顺序号,并加1
Else
    idx = 1 '否则顺序号等于1
End If
e.DataRow("销售单号") = bh & "-" & Format(idx,"000")


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 20:59:00 [显示全部帖子]

 那你就把e.dataTable、e.Datarow换一下即可

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 21:13:00 [显示全部帖子]

 这句改一下

 

max = DataTables("销售单").sqlCompute("Max(销售单号)","销售日期 = '" & d & "'") '取得当天的最大销售单号

 

 不可能不行


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 21:28:00 [显示全部帖子]

以下是引用jswjyjf在2014-11-18 21:24:00的发言:

刚开始生成编号 放在

BeforeAddDataRow事件,新增销售单 出错了

 

 

哦,写错了,应该放到 BeforeSaveDataRow


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/18 21:36:00 [显示全部帖子]

 我理解不了你啊,你什么时候需要生成,就执行上面的代码。

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