Office中国论坛/Access中国论坛

标题: 自定义自动编号的问题 [打印本页]

作者: loginwjd303    时间: 2010-3-24 01:33
标题: 自定义自动编号的问题
本帖最后由 loginwjd303 于 2010-3-28 23:52 编辑

附档中我自定义自动编号为何老是出错,但将"ABC"改成"123"又可以.谢谢![attach]41744[/attach]
出错窗体为 订单_ADO事务
如何才能将其中的订单ID改成如 RA-100324-001 增量为1的自定义编号



解决如下:
Dim stID As String
    If IsNull(Me.OpenArgs) Then
             Dim day As String
       If IsNull(DLookup("订单ID", "订单")) Then           '检查表内是否有数据
            stID = "RK" & Format(Date, "yyyymm") & "001"
       Else
            day = Mid(DMax("订单ID", "订单"), 3, 6)          '取出编号中的日期
             If day = Format(Date, "yyyymm") Then                              '对比日期
                 stID = "RK" & Format(Date, "yyyymm") & Format(CLng(Mid(DMax("订单ID", "订单"), 9, 11) + 1), "000")
             Else
                 stID = "RK" & Format(Date, "yyyymm") & "001"
             End If
       End If
   
    Else
        stID = Me.OpenArgs
    End If

    Set mADOTransForm = New ADOTransForm
    mADOTransForm.InitForm Me, "Select * From 订单 Where 订单ID='" & stID & "'", Me.订单明细_子窗体, "Select * From 订单明细 Where 订单ID='" & stID & "'"

    If mADOTransForm.FormDataMode Then
        Me.Caption = "添加订单"
         Me.订单ID.DefaultValue = "'" & stID & "'"
    Else
        Me.Caption = "编辑订单"
    End If
   
  Me.订单明细_子窗体.Form.订单ID.DefaultValue = "'" & stID & "'"

在这里要感谢HI-WZJ版主一对一的辅导,版主当时提到引号的问题.对于帮助本帖的其他老师一并致谢!
作者: hi-wzj    时间: 2010-3-24 10:44
建议将问题所在窗体标识出来,便于大家查看。
作者: loginwjd303    时间: 2010-3-24 11:55
如何才能将其中的订单ID改成如 RA-100324-001 增量为1的自定义编号
作者: chuang0321    时间: 2010-3-24 12:26
利用VBA语言,X代表需要递增的ID文本数据,y用于进行最后三位数的递增计算
Private Sub Form_Load()
Dim x As String
Dim y As Integer

x = "RA-100324-099"
y = Right(x, 3) + 1

If y < 10 Then
   x = Left(x, 12)
   Else
     If y >= 10 And y < 100 Then
       x = Left(x, 11)
       Else
         If y >= 100 Then
           x = Left(x, 10)
        End If
    End If
End If

MsgBox x & y   ;此处显示的结果就是递增后的结果,可以直接赋值给新的ID

End Sub
作者: loginwjd303    时间: 2010-3-24 13:57
感谢chuang0321 ,但还是不行,出错
作者: chuang0321    时间: 2010-3-26 09:31
我在你的“订单_子”中加入了如下语句,可以实现该窗体id的自动增加,不过数据库数据录入、保存等其他问题需要你自己解决

Private Sub Form_Load()

Dim x As String
Dim y As Integer

If Me.NewRecord Then
If DCount("[订单ID]", "订单") = 0 Then
  订单ID = "RA-100324-001"
Else
x = DMax("[订单ID]", "订单")
y = Right(x, 3) + 1

If y < 10 Then
   x = Left(x, 12)
   Else
     If y >= 10 And y < 100 Then
       x = Left(x, 11)
       Else
         If y >= 100 Then
           x = Left(x, 10)
        End If
    End If
End If


订单ID = x & y
'MsgBox x & y   '此处显示的结果就是递增后的结果,可以直接赋值给新的ID
End If
End If
End Sub
作者: loginwjd303    时间: 2010-3-28 01:01
改后提示数据类型不对.
作者: wanghaishen    时间: 2010-3-30 10:17
为了看东西,所以回复东西!
作者: icefox2008    时间: 2010-4-25 04:28
学习下,希望有更简单的代码.上面看到我头大
作者: bujiu01    时间: 2010-4-27 14:21
好厉害
作者: michael100    时间: 2010-5-6 14:11
学习中
作者: michael100    时间: 2010-5-7 13:39
学习了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3