So disconnected means recordset can only be connected in same rout


W

Webtechie

Hello,

I am struggling to understand disconnected recordsets.

I have a form that opens and using VBA, I am creating a recordset.

Great.

Then while in another sub routine, I open another form for data entry. I've
tried to reconnect to the disconnected recordset and it doesn't work.

So I've set the recordset (rsGuestData) to a new recordset

set rsGuestData = NEW ADODB.RECORDSET

1) open that recordset
2) Populate fields

With rsGuestData

.Source = mySQL
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open Options:=adCmdText
.MoveLast
rsGuestCount = .Bookmark

End With

With frmKeyLeads

If Len(rsGuestData!firstname) > 0 Then
.txtFirstName.Text = rsGuestData!firstname
End If

If Len(rsGuestData!lastname) > 0 Then
.txtLastName.Text = rsGuestData!lastname
End If

If Len(rsGuestData!telephone) > 0 Then
.txtTelephone.Text = CStr(rsGuestData!telephone)
End If


Question

1) Why do I have to create a new recordset?
2) Is it that you can't reference a disconnected recordset from a different
procedure/sub routine?

I appreciate any help on this.

Tony
 
Ad

Advertisements

B

Banana

1) You have to create a new recordset because it's basically a container
for whatever you need it at a moment. Your question is akin to asking,
"Why do I need to create a form?" Maybe I'm not understanding.

2) You didn't specify where you declared the rsGuestData. You have to be
mindful of the scope a variable has. If you use a Dim statement inside a
routine, then it goes out of scope at end of routine. If you declare it
at module level, then its scope is more longer. In case of code behind
of form, it's alive as long as the form is open then goes out of scope
once the form closes. Most of times, if not all times, recordsets that
are intended to be used as a form's recordsource ought to be declared at
module level.

3) It should be noted that you would use several events to drive the
whole process. For example, you'd use form's OnLoad to instantiate the
recordset which you already did, but you would then refer to form's
BeforeUpdate event to validate records and you would also need to use
form's Close event to re-connect the recordset and fire UpdateBatch
method to re-synchronize the changes made.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top