一半一半 发表于:2009-07-18 17:42:36
发票代码表四个字段:fpdm,fpID,xsrq,bs 均为字符型数据
fpdm字段中有多条记录,如:0844001,0844051,0844101,0844151,0844201,0844251.。。。。
窗体文本框“起始码” =“0844151”
Me![本数]=3
写如下程序后在运行到红字处提示错,拜托高手给指点一下,先谢谢了!
Set Rs = New ADODB.Recordset
StrTemp = "Select * From 发票代码"
Rs.Open StrTemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Rs.MoveFirst
'在“发票代码”表查找是否存在与待保存的发票代码记录相同
DoCmd.GoToRecord acActiveDataObject, , acFirst
DoCmd.FindRecord Rs("fpdm") = Me("起始码"), , True, , True
For i = 1 To Val(Me![本数])
Rs("xsrq") = Me![销售日期]
Rs("bs") = "0"
DoCmd.GoToRecord , , acNext
Next
Rs.Update
Rs.Close
Dim Rec As New ADODB.Recordset
Rec.Open "发票代码", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Rec.MoveFirst
For k = 1 To Rec.RecordCount
If Rec!fpdm = Me.起始码 Then
’这里写你需要的操作代码
Else
Rec.MoveNext
End If
Next k
With Rec
.Update
.Close
End With
With Rec
.Update
.Close
End With
这段要调整下
运行了一下,没有出现提示,但好像循环多了些,看看了表,只更新了第一条记录,下面两条未更新:
加红字出现你不能移动到制定纪录,去掉红字只能更新第一次记录。
Dim Rec As New ADODB.Recordset
Rec.Open "发票代码", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Rec.MoveFirst
For k = 1 To Rec.RecordCount
If Rec!fpdm = Me.起始码 Then
'这里写你需要的操作代码
For i = 1 To Val(Me![本数])
Rec("xsrq") = Me![销售日期]
Rec("bs") = "0"
DoCmd.GoToRecord , , acNext
Next
Else
Rec.MoveNext
End If
Next k
With Rec
.Update
.Close
End With
不好意思,请再帮检查一下问题。
光看代码头晕,你最好上传附件,随附件说明你到底要作成一个什么样的效果,可能我的理解有出入,呵呵
问题在:窗体----发票销售记录-----保存按钮
附件:
点击下载此附件
想法:发票购入时大部分是连号,但销售时不可能都连上。因此建立发票代码表,把每一本都记录在里面,销售时与代码表连接,当“bs”=0时不能出现在起始号组合框中。销售记录只记录第一本号码,由本数控制共多少号,每本50号。
当确定起始号和本数后保存,这时将用到上面的程序,根据本数进行循环替换,将原“bs”=“1”替换成“0”
这是截至目前的思路
不知道是不是这个意思,呵呵
点击下载此附件
在替换循环结束后增加移动到第一条记录和退出FOR命令好像可行
简单看了一下,估计可行,而且思路更清晰,增加了代码控制
谢谢!
总记录:9篇 页次:1/1 9 1 :