tmalmond
asked on
Cannot add record using addnew with recordset
I am working on a project that adds a newrecord to a recordset based on information contained in another recordset. I can't get the new record to add for some reason . I am attaching code.
Option Compare Database
Public Function CheckCoating()
'This function Checks to see if tray was coated prior to wash/block
On Error GoTo Err_CheckCoating
'This function Checks to see if tray was coated prior to wash/block
Dim rstCoated As DAO.Recordset
Dim rstWashed As DAO.Recordset
Dim Response As String
Dim Msg As String
Dim ID As String
Dim flag1 As Integer
Dim recordidX As Integer
Dim trayidX As String
Dim lotnumberX As String
Dim partnumberX As String
Dim OperatornameX As String
Dim starttimeX As Date
Dim endtimeX As Date
Dim endoperatorX As String
Dim approvedX As Boolean
Dim coatedX As Boolean
Dim coatopX As String
Dim coattmX As Date
'set variables to empty
recordidX = Empty
trayidX = Empty
lotnumberX = Empty
partnumberX = Empty
OperatornameX = Empty
starttimeX = Empty
endtimeX = Empty
endoperatorX = Empty
approvedX = Empty
coatedX = Empty
coatopX = Empty
coattmX = Empty
flag1 = 0
'Setup recordset
Set rstCoated = CurrentDb.OpenRecordset("qryCoatedTrays")
Set rstWashed = CurrentDb.OpenRecordset("qryWashedTrays")
'Create a transaction to prevent data loss
Workspaces(0).BeginTrans
'Check for data
If rstCoated.BOF = True Then
MsgBox "There are no coated trays"
Workspaces(0).Rollback
Exit Function
End If
rstCoated.MoveFirst
Do Until rstCoated.EOF
If rstCoated!TrayID = Forms![frmScanTray]![txtTrayID] Then
With rstCoated
recordidX = !RecordID
trayidX = !TrayID
lotnumberX = !LotNumber
partnumberX = !PartNumber
OperatornameX = CurrentUser()
coatedX = !Coated
coatopX = !CoatOp
coattmX = !CoatTM
End With
starttimeX = Now()
endtimeX = Empty
endoperatorX = Empty
approvedX = False
With rstWashed
.AddNew
!RecordID = recordidX
!TrayID = trayidX
!LotNumber = lotnumberX
!PartNumber = partnumberX
!OperatorName = OperatornameX
!StartTime = starttimeX
!EndTime = endtimeX
!EndOperator = endoperatorX
!Approved = approvedX
!Coated = coatedX
!CoatOp = coatopX
!CoatTM = coattmX
.Update
End With
flag1 = flag1 + 1
Exit Do
End If
rstCoated.MoveNext
Loop
If flag1 = 0 Then
MsgBox "Tray not coated"
Workspaces(0).Rollback
Exit Function
End If
Exit_CheckCoating:
Exit Function
Err_CheckCoating:
Workspaces(0).Rollback
MsgBox Err.Description
End Function
ASKER
I was told that it is better to use a query. The query is all the fields in the table. Just for kicks, I tried what you suggested and it didn't change.
I have done this many times and never had a problem. Its just weird.
I have done this many times and never had a problem. Its just weird.
why do you need a complete recordset of rsCoated from query "qryCoatedTrays"
and here you are testing the TrayID to be the same as the one displayed in the form
If rstCoated!TrayID = Forms![frmScanTray]![txtTr ayID] Then
why not, change your query "qryCoatedTrays" to have a criteria , where TrayID=" & Forms![frmScanTray]![txtTr ayID]
then test accordingly
if rstCoated.Eof then exit function
'place code to add record to rsWahed here
and here you are testing the TrayID to be the same as the one displayed in the form
If rstCoated!TrayID = Forms![frmScanTray]![txtTr
why not, change your query "qryCoatedTrays" to have a criteria , where TrayID=" & Forms![frmScanTray]![txtTr
then test accordingly
if rstCoated.Eof then exit function
'place code to add record to rsWahed here
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
<I was told that it is better to use a query.>
Told by who?, and under what circumstances...?
In any event, ...if the query is not update-able, this simply wont work...
<I have done this many times and never had a problem. >
With the exact same query?
Told by who?, and under what circumstances...?
In any event, ...if the query is not update-able, this simply wont work...
<I have done this many times and never had a problem. >
With the exact same query?
I believe pT72 is correct ... there is no (transaction) Commit !
mx
mx
ASKER
Bingo, left out the committrans. Good call.
why not just use the table as the domain for recordset rsWashed ?