Has anyone ever done something like this, either update a record or add a new record?
I'm trying to update my inventory file. If the item is in inventory, I update it, if it's not in inventory, I want to add it as a new item. The code I have gives me a no current record error when I need to add a new record. I understand it is because I'm trying to access data with nothing in the recordset. Unfortunately I need to select the recordset or else I get a mismatch on my item numbers. This should be a simple problem, but I've tried numerous times to get it working to no avail.
Dim I As Integer
Dim Findquery As String
Dim db As Database
Dim rs As Recordset
Dim rs2 As Recordset
Set rs = Nothing
Set rs2 = Nothing
Set db = CurrentDb
'Set rs2 = db.OpenRecordset("Inv_Recd2")
Set rs2 = db.OpenRecordset("Select* from Inv_Recd2 order by ItemNum")
'Set rs = db.OpenRecordset("Inv_Recd")
Set rs = db.OpenRecordset("Select* from Inv_Recd order by ItemNum")
rs.MoveFirst
' loop through table Inv_Recd looking for ItemNumbers in Inv_Recd2. If the item number
' is found then edit the record with new info. If item number is not found, add a new record.
Do
Set rs2 = db.OpenRecordset("SELECT * from Inv_Recd2 WHERE [ItemNum] = '" & rs!ItemNum & "'")
If IsNull(DLookup("ItemNum", "Inv_Recd2", rs!ItemNum = rs2!ItemNum)) Then
rs2.AddNew
rs2.Fields("ItemNum") = rs.Fields("ItemNum")
rs2.Fields("ItemName") = rs.Fields("ItemName")
rs2.Fields("Cost") = rs.Fields("Cost")
rs2.Fields("Received") = rs.Fields("Received")
rs2.Fields("Price") = rs.Fields("Price")
rs2.Fields("Dept") = rs.Fields("Dept")
rs2.Fields("RPrice") = rs.Fields("RPrice")
rs2.Update
Else
Set rs2 = db.OpenRecordset("SELECT * from Inv_Recd2 WHERE [ItemNum] = '" & rs!ItemNum & "'")
rs2.Edit
rs2.Fields("ItemNum") = rs.Fields("ItemNum")
rs2.Fields("ItemName") = rs.Fields("ItemName")
rs2.Fields("Cost") = rs.Fields("Cost")
rs2.Fields("Received") = rs2.Fields("Received") + rs.Fields("Received")
rs2.Fields("Price") = rs.Fields("Price")
rs2.Fields("Dept") = rs.Fields("Dept")
rs2.Fields("RPrice") = rs.Fields("RPrice")
rs2.Update
End If
On Error GoTo Errhandler
rs.MoveNext
Loop Until rs.EOF
Errhandler:
If Errors.Count > 1 Then
For Each errX In DAO.Errors
Debug.Print "ODBC Error"
Debug.Print Err.Number
Debug.Print Err.Description
Next errX
Else
Debug.Print "VBA Error"
Debug.Print Err.Number
Debug.Print Err.Description
End If
rs.Close
Set rs = Nothing
rs2.Close
Set rs2 = Nothing
db.Close
Set db = Nothing
End Sub
I'm trying to update my inventory file. If the item is in inventory, I update it, if it's not in inventory, I want to add it as a new item. The code I have gives me a no current record error when I need to add a new record. I understand it is because I'm trying to access data with nothing in the recordset. Unfortunately I need to select the recordset or else I get a mismatch on my item numbers. This should be a simple problem, but I've tried numerous times to get it working to no avail.
Dim I As Integer
Dim Findquery As String
Dim db As Database
Dim rs As Recordset
Dim rs2 As Recordset
Set rs = Nothing
Set rs2 = Nothing
Set db = CurrentDb
'Set rs2 = db.OpenRecordset("Inv_Recd2")
Set rs2 = db.OpenRecordset("Select* from Inv_Recd2 order by ItemNum")
'Set rs = db.OpenRecordset("Inv_Recd")
Set rs = db.OpenRecordset("Select* from Inv_Recd order by ItemNum")
rs.MoveFirst
' loop through table Inv_Recd looking for ItemNumbers in Inv_Recd2. If the item number
' is found then edit the record with new info. If item number is not found, add a new record.
Do
Set rs2 = db.OpenRecordset("SELECT * from Inv_Recd2 WHERE [ItemNum] = '" & rs!ItemNum & "'")
If IsNull(DLookup("ItemNum", "Inv_Recd2", rs!ItemNum = rs2!ItemNum)) Then
rs2.AddNew
rs2.Fields("ItemNum") = rs.Fields("ItemNum")
rs2.Fields("ItemName") = rs.Fields("ItemName")
rs2.Fields("Cost") = rs.Fields("Cost")
rs2.Fields("Received") = rs.Fields("Received")
rs2.Fields("Price") = rs.Fields("Price")
rs2.Fields("Dept") = rs.Fields("Dept")
rs2.Fields("RPrice") = rs.Fields("RPrice")
rs2.Update
Else
Set rs2 = db.OpenRecordset("SELECT * from Inv_Recd2 WHERE [ItemNum] = '" & rs!ItemNum & "'")
rs2.Edit
rs2.Fields("ItemNum") = rs.Fields("ItemNum")
rs2.Fields("ItemName") = rs.Fields("ItemName")
rs2.Fields("Cost") = rs.Fields("Cost")
rs2.Fields("Received") = rs2.Fields("Received") + rs.Fields("Received")
rs2.Fields("Price") = rs.Fields("Price")
rs2.Fields("Dept") = rs.Fields("Dept")
rs2.Fields("RPrice") = rs.Fields("RPrice")
rs2.Update
End If
On Error GoTo Errhandler
rs.MoveNext
Loop Until rs.EOF
Errhandler:
If Errors.Count > 1 Then
For Each errX In DAO.Errors
Debug.Print "ODBC Error"
Debug.Print Err.Number
Debug.Print Err.Description
Next errX
Else
Debug.Print "VBA Error"
Debug.Print Err.Number
Debug.Print Err.Description
End If
rs.Close
Set rs = Nothing
rs2.Close
Set rs2 = Nothing
db.Close
Set db = Nothing
End Sub