Solved

Cannot add record using addnew with recordset

Posted on 2011-09-13
7
341 Views
Last Modified: 2012-05-12
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

Open in new window

0
Comment
Question by:tmalmond
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 36531568
what is the sql of query "qryWashedTrays"?  are you using more than one table in this query

why not just use the table as the domain for recordset rsWashed ?
0
 

Author Comment

by:tmalmond
ID: 36531614
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.
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 36531673
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]![txtTrayID] Then


why not, change your query "qryCoatedTrays" to have a criteria , where TrayID=" & Forms![frmScanTray]![txtTrayID]

then test accordingly

if rstCoated.Eof then exit function

'place code to add record to rsWahed here





0
Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

 
LVL 14

Accepted Solution

by:
pteranodon72 earned 500 total points
ID: 36531688
You never commit your transaction.
HTH,
pT72
0
 
LVL 74

Expert Comment

by:Jeffrey Coachman
ID: 36531819
<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?

0
 
LVL 75
ID: 36531852
I believe pT72 is correct ... there is no (transaction) Commit !

mx
0
 

Author Closing Comment

by:tmalmond
ID: 36532335
Bingo, left out the committrans. Good call.
0

Featured Post

Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
Microsoft Access is a place to store data within tables and represent this stored data using multiple database objects such as in form of macros, forms, reports, etc. After a MS Access database is created there is need to improve the performance and…
In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

729 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question