|
各位大侠:
在下初学ACCESS,想编一个库房入库的程序。
先介绍以下思路:
1.如果录入信息中有序列号,就直接在库存清单中添加一条新记录。
2.如果录入信息中没有序列号,且无库存寿命,则在库存清单中查找是否有相同的库存物品。如果没有,就添加新纪录。若有则在原有记录上更新数量。
3.如果录入信息中没有序列号,但有库存寿命,则在库存清单中查找是否有具有相同库存寿命的相同物品。如果有的话,就在原有记录上更新数量。若没有,则添加新记录。
源代码的运行结果是:
当输入信息中没有序列号时,程序运行正常。
但输入信息中没有序列号和库存寿命是,程序报错“无效使用 NULL”。
在下也调试过程序,发现问题出在源代码中的拉红的部分,如果把这部分去掉,程序能正常运行。
拉红的部分主要用于查找库存中是否有相同件号的物品。
请各位大侠帮在下看一下问题到底出哪了。
在下不胜感激。
以下是源代码:
Private Sub 保存记录_Click()
On Error GoTo Err_保存记录_Click
Dim rs As DAO.Recordset
Dim fd11, fd12 As String
Set rs = CurrentDb.OpenRecordset("入库登记")
If IsNull(Me.名称) Then
MsgBox ("请输入名称")
End If
If IsNull(Me.件号) Then
MsgBox ("请输入件号")
End If
If IsNull(Me.序列号) Then
MsgBox ("请填写序列号")
End If
If IsNull(Me.数量) Then
MsgBox ("请输入数量")
End If
If IsNull(Me.库房) Then
MsgBox ("请输入库房")
End If
If IsNull(Me.架位) Then
MsgBox ("请输入架位")
End If
If IsNull(Me.入库状态) Then
MsgBox ("请输入入库状态")
End If
If IsNull(Me.类型) Then
MsgBox ("请输入类型")
End If
fd11 = Me.件号
fd11 = Replace(fd11, "-", "")
fd11 = Replace(fd11, "/", "")
fd11 = Replace(fd11, ".", "")
fd11 = UCase$(fd11)
'Me.Text89 = fd11
With rs
.AddNew
!入库验收批次号 = Me.入库验收批次号
!退料单号 = Me.退料单号
!名称 = Me.名称
!件号 = Me.件号
!等同件号 = Me.等同件号
!替代件号 = Me.替代件号
!序列号 = Me.序列号
!数量 = Me.数量
!货架寿命 = Me.货架寿命
!库房 = Me.库房
!架位 = Me.架位
!适航证编号 = Me.适航证编号
!履历卡 = Me.履历卡
!运单号 = Me.运单号
!采购需求单号 = Me.采购需求单号
!入库状态 = Me.入库状态
!订单合同号 = Me.订单合同号
!类型 = Me.类型
.Update
.Close
End With
Set rs = Nothing
Dim rs1 As DAO.Recordset
Dim fd1 As DAO.Field '件号
Dim fd2 As DAO.Field '货架寿命
Dim fd3 As DAO.Field '类型
Dim fd4 As DAO.Field '数量
Dim N As Integer '计数
Dim cond
cond = Me.入库状态
Select Case cond
Case "可用"
Set rs1 = CurrentDb.OpenRecordset("库存清单")
Set fd1 = rs1.Fields("件号")
Set fd2 = rs1.Fields("货架寿命")
Set fd3 = rs1.Fields("类型")
Set fd4 = rs1.Fields("数量")
If Not (Me.序列号 = "N/A") Then
With rs1
.AddNew
!名称 = Me.名称
!件号 = Me.件号
!等同件号 = Me.等同件号
!替代件号 = Me.替代件号
!序列号 = Me.序列号
!数量 = Me.数量
!货架寿命 = Me.货架寿命
!库房 = Me.库房
!架位 = Me.架位
!机型 = Me.类型
.Update
.Close
End With
Set rs1 = Nothing
ElseIf (Me.货架寿命 = "N/A") Then
N = 0
rs1.MoveFirst
Do While Not rs1.EOF
fd12 = fd1
fd12 = Replace(fd12, "-", "")
fd12 = Replace(fd12, "/", "")
fd12 = Replace(fd12, ".", "")
fd12 = UCase$(fd1)
If (fd11 = fd12) And (fd3 = Me.类型) Then
N = N + 1
End If
rs1.MoveNext
Loop
If N = 0 Then
With rs1
.AddNew
!名称 = Me.名称
!件号 = Me.件号
!等同件号 = Me.等同件号
!替代件号 = Me.替代件号
!序列号 = Me.序列号
!数量 = Me.数量
!货架寿命 = Me.货架寿命
!库房 = Me.库房
!架位 = Me.架位
!机型 = Me.类型
.Update
' .Close
End With
'Set rs1 = Nothing
ElseIf N <= 1 Then
rs1.MoveFirst
Do While Not rs1.EOF
If (fd11 = fd12) And (fd3 = Me.类型) Then
rs1.Edit
fd4 = fd4 + Me.数量
rs1.Update
End If
rs1.MoveNext
Loop
Else: MsgBox "件号重复,请核实!"
'rs1.Close
'Set rs1 = Nothing
End If
ElseIf Not (Me.货架寿命 = "N/A") Then
rs1.MoveFirst
N = 0
Do While Not rs1.EOF
fd12 = fd1
fd12 = Replace(fd12, "-", "")
fd12 = Replace(fd12, "/", "")
fd12 = Replace(fd12, ".", "")
fd12 = UCase$(fd12)
If (fd11 = fd12) And (Me.类型 = fd3) And (Year(Me.货架寿命) = Year(fd2)) And (Month(Me.货架寿命) = Month(fd2)) And (Day(Me.货架寿命) = Day(fd2)) Then
N = N + 1
End If
rs1.MoveNext
Loop
If N = 0 Then
With rs1
.AddNew
!名称 = Me.名称
!件号 = Me.件号
!等同件号 = Me.等同件号
!替代件号 = Me.替代件号
!序列号 = Me.序列号
!数量 = Me.数量
!货架寿命 = Me.货架寿命
!库房 = Me.库房
!架位 = Me.架位
!机型 = Me.类型
.Update
.Close
End With
ElseIf N <= 1 Then
rs1.MoveFirst
Do While Not rs1.EOF
If (fd11 = fd12) And (fd3 = Me.类型) And (Year(Me.货架寿命) = Year(fd2)) And (Month(Me.货架寿命) = Month(fd2)) And (Day(Me.货架寿命) = Day(fd2)) Then
rs1.Edit
fd4 = fd4 + Me.数量
rs1.Update
End If
rs1.MoveNext
Loop
rs1.Close
Set rs1 = Nothing
Else: MsgBox "件号重复,请核实!"
rs1.Close
Set rs1 = Nothing
End If
End If
End Select
添加新记录.Enabled = True
添加新记录.SetFocus
保存记录.Enabled = False
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Exit_保存记录_Click:
Exit Sub
Err_保存记录_Click:
MsgBox Err.Description
Resume Exit_保存记录_Click
End Sub |
|