Foxtable(狐表)用户栏目专家坐堂 → 自动编号突然失效


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

主题:自动编号突然失效

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


加好友 发短信
等级:婴狐 帖子:43 积分:419 威望:0 精华:0 注册:2018/11/1 10:49:00
自动编号突然失效  发帖心情 Post By:2019/1/31 12:45:00 [只看该作者]

在datarowadded中的代码

Dim cmd As New SQLCommand
Dim dt As Date
cmd.C
cmd.CommandText = "Select GetDate()" '从远程数据库获取日期信息
dt = cmd.ExecuteScalar()
e.DataRow("日期") = dt
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) '获得该月的最后一天
Dim bh As String ="HP"& Format(d,"yyMM") '生成货品编号的前6位,2位字符,2位年,2位月.
e.DataRow.save '***必须在sqlcompute前先保存,才能获得当前行的真实的_identify值***
If e.DataRow("货品编号").StartsWith(bh) = False '如果货品编号的前6位不符
    Dim max As String
    Dim idx As Integer  
    max = e.DataTable.sqlCompute("Max(货品编号)","[日期] >= '" & fd & "' And [日期] <= '" & ld & "'And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大货品编号
    If max > "" Then '如果存在最大货品编号
        idx = CInt(max.Substring(6,4)) + 1 '获得最大货品编号的后四位顺序号,并加1
    Else
        idx = 1 '否则顺序号等于1
    End If
    e.DataRow("货品编号") = bh & Format(idx,"0000")
    e.DataRow.save   
End If

发布的程序,至昨天之前使用还是正常的,能够自动增加编号,但今天就始终无法自动增加。同样的功能另外的表自动编码又是正常的。不知道是不是SQL SERVER那边的问题。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/31 12:46:00 [只看该作者]

重新发布,然后测试,看是否正常。


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


加好友 发短信
等级:婴狐 帖子:43 积分:419 威望:0 精华:0 注册:2018/11/1 10:49:00
  发帖心情 Post By:2019/1/31 12:50:00 [只看该作者]

我在源程序上直接运行也不行,而且我用了很多之前备份的版本,都是这个问题

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


加好友 发短信
等级:婴狐 帖子:43 积分:419 威望:0 精华:0 注册:2018/11/1 10:49:00
  发帖心情 Post By:2019/1/31 13:03:00 [只看该作者]

感觉的现象就像是我新增加的行好像没有保存到后台数据库中,但我从菜单“外部数据表”预览,是能看到新增加项的,而且关闭程序后打开,重新加载,刚刚增加的重复项也是正常加载进来的,所以很奇怪

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


加好友 发短信
等级:四尾狐 帖子:822 积分:5782 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2019/1/31 13:05:00 [只看该作者]

我也是今天出现了很多状况,没改代码,但是有些功能运行不正常,昨天还好好的。。。

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


加好友 发短信
等级:婴狐 帖子:43 积分:419 威望:0 精华:0 注册:2018/11/1 10:49:00
  发帖心情 Post By:2019/1/31 13:11:00 [只看该作者]

难道是因为今天是1月31号的缘故?

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


加好友 发短信
等级:婴狐 帖子:43 积分:419 威望:0 精华:0 注册:2018/11/1 10:49:00
  发帖心情 Post By:2019/1/31 13:25:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq拼音截图未命名20190131.jpg
图片点击可在新窗口打开查看

还真是因为日期的原因,我把服务器时间改成2月1日,自动编号又正常了,百思不得其解图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/31 14:44:00 [只看该作者]

改一改代码

 

max = e.DataTable.sqlCompute("Max(货品编号)","[日期] >= '" & fd & "' And [日期] < '" & ld.addDays(1) & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大货品编号


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


加好友 发短信
等级:婴狐 帖子:43 积分:419 威望:0 精华:0 注册:2018/11/1 10:49:00
  发帖心情 Post By:2019/2/1 18:07:00 [只看该作者]

谢谢,甜版,代码确实解决了这个问题,但我还是没明白其中的原因,而且原来同样的代码在另一个表上是可以正常工作的,仅这一个表会出现这个情况。不知甜版能否帮我分析下大概的原因?

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/1 22:35:00 [只看该作者]

以下是引用whoisvinci在2019/2/1 18:07:00的发言:
谢谢,甜版,代码确实解决了这个问题,但我还是没明白其中的原因,而且原来同样的代码在另一个表上是可以正常工作的,仅这一个表会出现这个情况。不知甜版能否帮我分析下大概的原因?


同一份代码,在不同环境,不同表格,不同事件,甚至不同的数据下效果都未必是一样的。

这个问题应该是数据库里的日期值有时分秒导致的,比如日期值:2019-1-2 23:01:01

那么 【日期 <= 2019-1-2】只能查到:2019-1-2 0:0:0及之前的记录
只有【日期 < 2019-1-3】可以查到2019-1-3 0:0:0之前的记录,就是2019-1-2 23:59:59之前的记录
[此贴子已经被作者于2019/2/2 10:32:14编辑过]

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