Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]窗体中增加自定义编号,在局域网同时添加记录时发生同编号冲突,

李应强  发表于:2009-07-20 11:45:54  
复制

窗体中增加自定义编号,代码如下:
Private Sub 姓名_Enter()
If IsNull(ID.value) Then
        ID.value = "N" & Format(CLng(DMax("mid(ID,2,7)", "档案目录") + 1), "000000")
        原编号.value = ID.value
    End If
End Sub

例如现在编号为N002812,
那么在A机上,单击添加记录,进入姓名栏目时,会自增N002813编号,
如果在B机上,同时操作,就会出现也增加N002813的编号,在保存时,就会出现同编号冲突,不能保存数据。

如果A、B二机各自操作,则不会发生如下情况。

故障初步诊断:因为代码只实现了在窗体中增加了编号,而并未写入后台数据表中,所以另一台机取最大值时,仍然是相同的旧值,导致新增了相同的编号,最终产生不能保存的结果。

窗体打开时,用了如下命令“DoCmd.GoToRecord , , acNewRec”,这样就会进入空白的记录处。

我的想法,刷新ID的字段值,让其一增加就写入表中,但是如果用了Requery命令,就会导致,刷新后,进入了窗体的第一条记录,实在是苦恼,这样就不能正常的录入数据了。
 
用了DoCmd.GoToRecord , acNext
    DoCmd.GoToRecord , acPrevious
就会出现不断增加数值的问题。

 

Top
竹笛 发表于:2009-07-20 12:02:50

你是采用绑定表的方式吧!试试下面的代码:

Private Sub 姓名_Enter()
If IsNull(ID.value) Then
        ID.value = "N" & Format(CLng(DMax("mid(ID,2,7)", "档案目录") + 1), "000000")
        原编号.value = ID.value

        me.refresh
    End If
End Sub


 



总记录:1篇  页次:1/1 9 1 :