By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,827 Members | 2,211 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,827 IT Pros & Developers. It's quick & easy.

Carry data over to new record...

P: n/a
I'm trying to get the "Carry data over to new record"
code to work from Allen Browne's site:
http://allenbrowne.com/ser-24.html
I follwed the instruction explicitly and somethings not working... any
clues?

Thanks all!!
Brian

Dec 30 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
Is your computer plugged in?
Seriously, though, if you just say "something's not working", no one is
going to have any idea how to help you.
Here is a link that has some tips on asking questions so that you get good
help-
http://www.mvps.org/access/netiquette.htm

-John

<ca***************@yahoo.com> wrote in message
news:11**********************@g43g2000cwa.googlegr oups.com...
I'm trying to get the "Carry data over to new record"
code to work from Allen Browne's site:
http://allenbrowne.com/ser-24.html
I follwed the instruction explicitly and somethings not working... any
clues?

Thanks all!!
Brian

Dec 30 '05 #2

P: n/a
Sorry!
Here's what I did..
Open a new form in Design View with 4 text boxes bound to 4 fields in a
table.
In the Properties Box, selected the BeforeInsert event, and typed in
[Event Procedure]
"Call CarryOver(Me)"
Created a module "basCarryOver" and typed this code:

Sub CarryOver(frm As Form)
On Error GoTo Err_CarryOver
' Purpose: Carry the values over from the last record to a new one.
' Usage: In a form's BeforeInsert event procedure, enter:
' Call CarryOver(Me)
' Notes: This example limited to text boxes and combo boxes.
' Text/combo boxes must have same Name as the fields they
represent.
Dim rst As DAO.Recordset
Dim ctl As Control
Dim i As Integer

Set rst = frm.RecordsetClone
If rst.RecordCount > 0 Then
rst.MoveLast
For i = 0 To frm.count - 1
Set ctl = frm(i)
If TypeOf ctl Is TextBox Then
If Not IsNull(rst(ctl.Name)) Then
ctl = rst(ctl.Name)
End If
ElseIf TypeOf ctl Is ComboBox Then
If Not IsNull(rst(ctl.Name)) Then
ctl = rst(ctl.Name)
End If
End If
Next
End If

Exit_CarryOver:
Set rst = Nothing
Exit Sub

Err_CarryOver:
Select Case Err
Case 2448 'Cannot assign a value
Debug.Print "Value cannot be assigned to " & ctl.Name
Resume Next
Case 3265 'Name not found in this collection.
Debug.Print "No matching field name found for " & ctl.Name
Resume Next
Case Else
MsgBox "Carry-over values were not assigned, from " & ctl.Name
& _
". Error #" & Err.Number & ": " & Err.Description,
vbExclamation, "CarryOver()"
Resume Exit_CarryOver
End Select
End Sub
The record selector gives a new record but without the text boxes
pre-filled with the last record's values.

Thanks! Brian

Dec 30 '05 #3

P: n/a
Ok, that's better. Does your event procedure look like this:

Private Sub Form_BeforeInsert(Cancel As Integer)
Call CarryOver(Me)
End Sub

And are the names of your textboxes exactly the same as the fields they are
bound to?

It's not clear if the function is getting called at all (being able to go to
a new record with the record selector isnt proof), so you could put this
line:
msgbox "Carry Over was called"
after the dim statements in the CarryOver procedure to make sure it got
called.

hope this helps
-John

<ca***************@yahoo.com> wrote in message
news:11*********************@g44g2000cwa.googlegro ups.com...
Sorry!
Here's what I did..
Open a new form in Design View with 4 text boxes bound to 4 fields in a
table.
In the Properties Box, selected the BeforeInsert event, and typed in
[Event Procedure]
"Call CarryOver(Me)"
Created a module "basCarryOver" and typed this code:

Sub CarryOver(frm As Form)
On Error GoTo Err_CarryOver
' Purpose: Carry the values over from the last record to a new one.
' Usage: In a form's BeforeInsert event procedure, enter:
' Call CarryOver(Me)
' Notes: This example limited to text boxes and combo boxes.
' Text/combo boxes must have same Name as the fields they
represent.
Dim rst As DAO.Recordset
Dim ctl As Control
Dim i As Integer

Set rst = frm.RecordsetClone
If rst.RecordCount > 0 Then
rst.MoveLast
For i = 0 To frm.count - 1
Set ctl = frm(i)
If TypeOf ctl Is TextBox Then
If Not IsNull(rst(ctl.Name)) Then
ctl = rst(ctl.Name)
End If
ElseIf TypeOf ctl Is ComboBox Then
If Not IsNull(rst(ctl.Name)) Then
ctl = rst(ctl.Name)
End If
End If
Next
End If

Exit_CarryOver:
Set rst = Nothing
Exit Sub

Err_CarryOver:
Select Case Err
Case 2448 'Cannot assign a value
Debug.Print "Value cannot be assigned to " & ctl.Name
Resume Next
Case 3265 'Name not found in this collection.
Debug.Print "No matching field name found for " & ctl.Name
Resume Next
Case Else
MsgBox "Carry-over values were not assigned, from " & ctl.Name
& _
". Error #" & Err.Number & ": " & Err.Description,
vbExclamation, "CarryOver()"
Resume Exit_CarryOver
End Select
End Sub
The record selector gives a new record but without the text boxes
pre-filled with the last record's values.

Thanks! Brian

Dec 31 '05 #4

P: n/a
I like to use

With DoCmd
.RunCommand acCmdSelectRecord
.RunCommand acCmdCopy
.RunCommand acCmdPasteAppend
End With

called with a Command Button's OnClick or a PopUp Menu Selection.

This permits "carrying" the values of any record, not just the last
entered or showing. More clicks are not required as the button creates
a new record with just one click.
One can have problems with unique indexes / primary keys / counters but
if one thinks things out carefully these can be overcome.

Dec 31 '05 #5

P: n/a
To help you debug your code,
1. Check that it compiles okay, by choosing Compile on the Debug menu.

2. Temporarily comment out the error handler, by adding a single quote to
the first line:
'On Error GoTo Err_CarryOver

3. Immedately below that, enter:
Stop

Now when the code runs, it will stop and highlight the Stop line. You can
then press F8 to single-step through the code, and see what is happening
until you identify the problem.

--
Allen Browne - Microsoft MVP. Perth, Western Australia.
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.
<ca***************@yahoo.com> wrote in message
news:11*********************@g44g2000cwa.googlegro ups.com...
Sorry!
Here's what I did..
Open a new form in Design View with 4 text boxes bound to 4 fields in a
table.
In the Properties Box, selected the BeforeInsert event, and typed in
[Event Procedure]
"Call CarryOver(Me)"
Created a module "basCarryOver" and typed this code:

Sub CarryOver(frm As Form)
On Error GoTo Err_CarryOver
' Purpose: Carry the values over from the last record to a new one.
' Usage: In a form's BeforeInsert event procedure, enter:
' Call CarryOver(Me)
' Notes: This example limited to text boxes and combo boxes.
' Text/combo boxes must have same Name as the fields they
represent.
Dim rst As DAO.Recordset
Dim ctl As Control
Dim i As Integer

Set rst = frm.RecordsetClone
If rst.RecordCount > 0 Then
rst.MoveLast
For i = 0 To frm.count - 1
Set ctl = frm(i)
If TypeOf ctl Is TextBox Then
If Not IsNull(rst(ctl.Name)) Then
ctl = rst(ctl.Name)
End If
ElseIf TypeOf ctl Is ComboBox Then
If Not IsNull(rst(ctl.Name)) Then
ctl = rst(ctl.Name)
End If
End If
Next
End If

Exit_CarryOver:
Set rst = Nothing
Exit Sub

Err_CarryOver:
Select Case Err
Case 2448 'Cannot assign a value
Debug.Print "Value cannot be assigned to " & ctl.Name
Resume Next
Case 3265 'Name not found in this collection.
Debug.Print "No matching field name found for " & ctl.Name
Resume Next
Case Else
MsgBox "Carry-over values were not assigned, from " & ctl.Name
& _
". Error #" & Err.Number & ": " & Err.Description,
vbExclamation, "CarryOver()"
Resume Exit_CarryOver
End Select
End Sub
The record selector gives a new record but without the text boxes
pre-filled with the last record's values.

Thanks! Brian

Dec 31 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.