订单ID:编码规则为固定字段“DD-”+订单生成日期年月日字段“050328”(其中“050328”表示2005年3月28号)+自动递增字段“000”,格式如"DD-050328001"
其中,最难的是对日期的判断:如今天无订单则"自动递增字段"为"000"+1,否则为今天所有订单中最大的那个尾数+1.
求!!!!!!!!!!!!!!!!!!!!!!!!!!!
19 个解决方案
#1
'订单应该有个单据日期吧
'参考以下代码,将字段和表改为自己的内容
Dim R As New ADODB.Recordset
Dim 单据数 As Long
Dim 单据编号 As String
R.Open "Select count(订单日期) from 订单 订单日期=#" & Date & "#"
单据数=R(0) '单据数量,如果没有单据则为0,如果有单据则为今天单据的总数
R.Close
单据编号="DD" & "......" & Format(单据号+1,"000")
'参考以下代码,将字段和表改为自己的内容
Dim R As New ADODB.Recordset
Dim 单据数 As Long
Dim 单据编号 As String
R.Open "Select count(订单日期) from 订单 订单日期=#" & Date & "#"
单据数=R(0) '单据数量,如果没有单据则为0,如果有单据则为今天单据的总数
R.Close
单据编号="DD" & "......" & Format(单据号+1,"000")
#2
Dim R As New ADODB.Recordset
这一句不懂,能不能解说得详细一点!
是不是可以先用DLookup找出今天有没有订单,如无则为0,如有则用DMax找出今天尾数最大的ID号,然后再加1为新编号,但我不知道怎样写这代码,因为DMax有两个判断条件:1、日期是今天;2、在今天的订单中找出尾数最大的订单.
这一句不懂,能不能解说得详细一点!
是不是可以先用DLookup找出今天有没有订单,如无则为0,如有则用DMax找出今天尾数最大的ID号,然后再加1为新编号,但我不知道怎样写这代码,因为DMax有两个判断条件:1、日期是今天;2、在今天的订单中找出尾数最大的订单.
#3
Private Sub cmdSave_Click()
If i = 1 Then
Dim strMax As String
If IsNull(DLookup("[SOrderID]", "tblSorder", "SOrderStartDate" = "#" & Date & "#")) Then
strMax = 0
Else
strMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate" = "#" & Date & "#")
End If
Me![SOrderID] = Format(Date, "yymmdd") & Format(strMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
If i = 1 Then
Dim strMax As String
If IsNull(DLookup("[SOrderID]", "tblSorder", "SOrderStartDate" = "#" & Date & "#")) Then
strMax = 0
Else
strMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate" = "#" & Date & "#")
End If
Me![SOrderID] = Format(Date, "yymmdd") & Format(strMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
#4
晕啊,难到你是说在 Access 里面的VBA操作,怎么不说清楚
r 是打开一个 ADO 的数据集,在Access 里面也可以定义数据集,不过你如果硬要用
Access 的方法 DLookup 这个冬冬我不太会用
不过如果可以执行Sql 语句也可以 ,关键是这一句:Select count(订单日期) from 订单 订单日期=#" & Date & "#"
取出今天已有订单的数量,
r 是打开一个 ADO 的数据集,在Access 里面也可以定义数据集,不过你如果硬要用
Access 的方法 DLookup 这个冬冬我不太会用
不过如果可以执行Sql 语句也可以 ,关键是这一句:Select count(订单日期) from 订单 订单日期=#" & Date & "#"
取出今天已有订单的数量,
#5
以上代码错在哪里,请指正!
其中i是判断是新增还是修改的变量,SOrderStartDate为订单日期,SOrderID为订单号,tblSorder为订单表,strMax为今天订单数!
够详细了吧!
其中i是判断是新增还是修改的变量,SOrderStartDate为订单日期,SOrderID为订单号,tblSorder为订单表,strMax为今天订单数!
够详细了吧!
#6
对啊!我全部是在access里做的,小弟不是科班出身,大大的菜鸟!请帮小弟将代码改好。
比如:怎样将Select count(订单日期) from 订单 订单日期=#" & Date & "#"写到access里的VBA中
比如:怎样将Select count(订单日期) from 订单 订单日期=#" & Date & "#"写到access里的VBA中
#7
为此我整整搞了一个多月,还是没搞懂啊!!!
急!!!!!!!!
急!!!!!!!!
#8
那你用DCount 吧
直接用DCount 就可以
Private Sub cmdSave_Click()
If i = 1 Then
Dim lngMax As Long
lngMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate" = "#" & Date & "#")
Me![SOrderID] = Format(Date, "yymmdd") & Format(lngMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
直接用DCount 就可以
Private Sub cmdSave_Click()
If i = 1 Then
Dim lngMax As Long
lngMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate" = "#" & Date & "#")
Me![SOrderID] = Format(Date, "yymmdd") & Format(lngMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
#9
老大,不行啊!
第一个还可以,但再加一个就弹出错误了:您输入的值不符合为字段或控件所定义的有效性规则。
不知道是什么原因
第一个还可以,但再加一个就弹出错误了:您输入的值不符合为字段或控件所定义的有效性规则。
不知道是什么原因
#10
哪一句出的错
#11
SOrderID 是不是有定义什么规则,你把规则去掉或看看生成的字符串有什么地方与规则冲突
#12
我也不知道啊!
我感觉是这一句:"SOrderStartDate" = "#" & Date & "#"
我感觉是这一句:"SOrderStartDate" = "#" & Date & "#"
#13
SOrderStartDate它的值是MSCAL.Calendar.7取出来的,格式为2004-4-19
#14
这一句 : "SOrderStartDate" = "#" & Date & "#"
换成 "SOrderStartDate =#" & Date & "#"
Private Sub cmdSave_Click()
If i = 1 Then
Dim lngMax As Long
lngMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate =#" & Date & "#")
Me![SOrderID] = Format(Date, "yymmdd") & Format(lngMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
换成 "SOrderStartDate =#" & Date & "#"
Private Sub cmdSave_Click()
If i = 1 Then
Dim lngMax As Long
lngMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate =#" & Date & "#")
Me![SOrderID] = Format(Date, "yymmdd") & Format(lngMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
#15
老大,可以了,真是谢谢
#16
那两句代码有什么区别啊
#17
那一句有语法错误的,你自己输错的,我没用调试器,所以没注意
#18
知其然,亦要知其所以然!
明天等着收分!60分全归你!
谢谢你的顶力相助!
明天等着收分!60分全归你!
谢谢你的顶力相助!
#19
能加你为好友吗?
继续学习!
继续学习!
#20
#1
'订单应该有个单据日期吧
'参考以下代码,将字段和表改为自己的内容
Dim R As New ADODB.Recordset
Dim 单据数 As Long
Dim 单据编号 As String
R.Open "Select count(订单日期) from 订单 订单日期=#" & Date & "#"
单据数=R(0) '单据数量,如果没有单据则为0,如果有单据则为今天单据的总数
R.Close
单据编号="DD" & "......" & Format(单据号+1,"000")
'参考以下代码,将字段和表改为自己的内容
Dim R As New ADODB.Recordset
Dim 单据数 As Long
Dim 单据编号 As String
R.Open "Select count(订单日期) from 订单 订单日期=#" & Date & "#"
单据数=R(0) '单据数量,如果没有单据则为0,如果有单据则为今天单据的总数
R.Close
单据编号="DD" & "......" & Format(单据号+1,"000")
#2
Dim R As New ADODB.Recordset
这一句不懂,能不能解说得详细一点!
是不是可以先用DLookup找出今天有没有订单,如无则为0,如有则用DMax找出今天尾数最大的ID号,然后再加1为新编号,但我不知道怎样写这代码,因为DMax有两个判断条件:1、日期是今天;2、在今天的订单中找出尾数最大的订单.
这一句不懂,能不能解说得详细一点!
是不是可以先用DLookup找出今天有没有订单,如无则为0,如有则用DMax找出今天尾数最大的ID号,然后再加1为新编号,但我不知道怎样写这代码,因为DMax有两个判断条件:1、日期是今天;2、在今天的订单中找出尾数最大的订单.
#3
Private Sub cmdSave_Click()
If i = 1 Then
Dim strMax As String
If IsNull(DLookup("[SOrderID]", "tblSorder", "SOrderStartDate" = "#" & Date & "#")) Then
strMax = 0
Else
strMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate" = "#" & Date & "#")
End If
Me![SOrderID] = Format(Date, "yymmdd") & Format(strMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
If i = 1 Then
Dim strMax As String
If IsNull(DLookup("[SOrderID]", "tblSorder", "SOrderStartDate" = "#" & Date & "#")) Then
strMax = 0
Else
strMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate" = "#" & Date & "#")
End If
Me![SOrderID] = Format(Date, "yymmdd") & Format(strMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
#4
晕啊,难到你是说在 Access 里面的VBA操作,怎么不说清楚
r 是打开一个 ADO 的数据集,在Access 里面也可以定义数据集,不过你如果硬要用
Access 的方法 DLookup 这个冬冬我不太会用
不过如果可以执行Sql 语句也可以 ,关键是这一句:Select count(订单日期) from 订单 订单日期=#" & Date & "#"
取出今天已有订单的数量,
r 是打开一个 ADO 的数据集,在Access 里面也可以定义数据集,不过你如果硬要用
Access 的方法 DLookup 这个冬冬我不太会用
不过如果可以执行Sql 语句也可以 ,关键是这一句:Select count(订单日期) from 订单 订单日期=#" & Date & "#"
取出今天已有订单的数量,
#5
以上代码错在哪里,请指正!
其中i是判断是新增还是修改的变量,SOrderStartDate为订单日期,SOrderID为订单号,tblSorder为订单表,strMax为今天订单数!
够详细了吧!
其中i是判断是新增还是修改的变量,SOrderStartDate为订单日期,SOrderID为订单号,tblSorder为订单表,strMax为今天订单数!
够详细了吧!
#6
对啊!我全部是在access里做的,小弟不是科班出身,大大的菜鸟!请帮小弟将代码改好。
比如:怎样将Select count(订单日期) from 订单 订单日期=#" & Date & "#"写到access里的VBA中
比如:怎样将Select count(订单日期) from 订单 订单日期=#" & Date & "#"写到access里的VBA中
#7
为此我整整搞了一个多月,还是没搞懂啊!!!
急!!!!!!!!
急!!!!!!!!
#8
那你用DCount 吧
直接用DCount 就可以
Private Sub cmdSave_Click()
If i = 1 Then
Dim lngMax As Long
lngMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate" = "#" & Date & "#")
Me![SOrderID] = Format(Date, "yymmdd") & Format(lngMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
直接用DCount 就可以
Private Sub cmdSave_Click()
If i = 1 Then
Dim lngMax As Long
lngMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate" = "#" & Date & "#")
Me![SOrderID] = Format(Date, "yymmdd") & Format(lngMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
#9
老大,不行啊!
第一个还可以,但再加一个就弹出错误了:您输入的值不符合为字段或控件所定义的有效性规则。
不知道是什么原因
第一个还可以,但再加一个就弹出错误了:您输入的值不符合为字段或控件所定义的有效性规则。
不知道是什么原因
#10
哪一句出的错
#11
SOrderID 是不是有定义什么规则,你把规则去掉或看看生成的字符串有什么地方与规则冲突
#12
我也不知道啊!
我感觉是这一句:"SOrderStartDate" = "#" & Date & "#"
我感觉是这一句:"SOrderStartDate" = "#" & Date & "#"
#13
SOrderStartDate它的值是MSCAL.Calendar.7取出来的,格式为2004-4-19
#14
这一句 : "SOrderStartDate" = "#" & Date & "#"
换成 "SOrderStartDate =#" & Date & "#"
Private Sub cmdSave_Click()
If i = 1 Then
Dim lngMax As Long
lngMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate =#" & Date & "#")
Me![SOrderID] = Format(Date, "yymmdd") & Format(lngMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
换成 "SOrderStartDate =#" & Date & "#"
Private Sub cmdSave_Click()
If i = 1 Then
Dim lngMax As Long
lngMax = DCount("[SOrderID]", "tblsorder", "SOrderStartDate =#" & Date & "#")
Me![SOrderID] = Format(Date, "yymmdd") & Format(lngMax + 1, "000")
ElseIf i = 2 Then
Me.SOrderID.Locked = True
End If
Me.Caption = "保存"
Call StateR
Me.RecordsetType = conSnapshot
End Sub
#15
老大,可以了,真是谢谢
#16
那两句代码有什么区别啊
#17
那一句有语法错误的,你自己输错的,我没用调试器,所以没注意
#18
知其然,亦要知其所以然!
明天等着收分!60分全归你!
谢谢你的顶力相助!
明天等着收分!60分全归你!
谢谢你的顶力相助!
#19
能加你为好友吗?
继续学习!
继续学习!