Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Westi on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

access2002. ADO recordset.not updated immediately.

Status
Not open for further replies.

taaltio

Programmer
Dec 23, 2003
11
FI
1) Is it a normal procedure to use ADODB.Recordset to modify database in Access. Is there some way know when updating is 'ready'(?) ?

There is some strange problem with my system with it. The code below works erratically: the table "tbl_kansallisuus" is always updated when the code is executed, but it takes an irregular interval before database is updated. Usually about 1 second.
I had this same problem in other places in my application too. It seems that when editing the databse with ADODB.Recodset, Access fails to see modifications until some time later, no matter how much I call for 'requery' to the form. Also If I open Access table-window, and then run a VBA code, which modifies that table's data, the table is not updated. But when I close the table window, and open it again, data is updated.

Could this be some kind of bug in Access 2002?

-------example code:
Private Sub combo1_NotInList(NewData As String, Response As Integer)
Dim intReturn As Integer
'----------------database connection starts
On Error GoTo btnTest1_Click_Err
Dim CurConn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim CurDB As Database
Set CurDB = CurrentDb
Set CurConn = New ADODB.Connection

With CurConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "data source= " & CurDB.Name
.Open
End With
Set rst = New ADODB.Recordset
'----------------database connection completed
'---------------add record start
rst.CursorType = adOpenDynamic
rst.LockType = adLockOptimistic
rst.Open "tbl_kansallisuus", CurConn, , , adCmdTable
With rst
'Add new record to end of Recordset object
.AddNew
![txt] = NewData
.Update 'Save changes
End With
rst.Close
'---------------add record completed

acFormAdd, acDialog, NewData
Response = acDataErrAdded
New_Customer_Click_Exit:
Exit Sub
btnTest1_Click_Err:
MsgBox Err.Description
Resume New_Customer_Click_Exit
End Sub
 
You don't say that what you see has caused a problem. What problem is caused?

I don't believe Access ever uses a dynamic cursor even though it is available. I believe it always coerces the cursor to static. You can check this out yourself by looking at the properties of the connection.

Unless you have a specific reason for leaving the instance of the recordset always destroy or it can cause unanticipated problems since the memory is not released.
rst.Close
Set rst = Nothing




 
Example of iterating through the properties collections.

Dim pp As ADODB.Property
For Each pp In CurConn.Properties
Debug.Print "property name = "; pp.Name
Debug.Print "property value = "; pp.Value
Next

For Each pp In rst.Properties
Debug.Print "property name = "; pp.Name
Debug.Print "property value = "; pp.Value
Next
 
I don't know what has caused the problem. This is my 1st access application, and the same problem with Recordset has been present every time I'v used it.
Here are the properties: (resulted from adding the code)
property value = True
property name = Jet OLEDB:Lock Retry
property value = 0
property name = Jet OLEDB:Exclusive Async Delay
property value = 0
property name = Jet OLEDB:Shared Async Delay
property value = 0
property name = Jet OLEDB:page Timeout
property value = 0
property name = Jet OLEDB:Recycle Long-Valued Pages
property value = False
property name = Jet OLEDB:Reset ISAM Stats
property value = True
property name = Jet OLEDB:Connection Control
property value = 2
property name = Jet OLEDB:ODBC Parsing
property value = False
property name = Jet OLEDB:page Locks to Table Lock
property value = 0
property name = Jet OLEDB:Sandbox Mode
property value = False
property name = Jet OLEDB:Transaction Commit Mode
property value = 0
property name = Preserve on Abort
property value = False
property name = Blocking Storage Objects
property value = True
property name = Use Bookmarks
property value = True
property name = Skip Deleted Bookmarks
property value = False
property name = Bookmark Type
property value = 1
property name = Cache Deferred Columns
property value = False
property name = Fetch Backwards
property value = True
property name = Hold Rows
property value = True
property name = Scroll Backwards
property value = True
property name = Column Privileges
property value = True
property name = Preserve on Commit
property value = True
property name = Defer Column
property value = True
property name = Delay Storage Object Updates
property value = True
property name = Immobile Rows
property value = False
property name = Literal Bookmarks
property value = False
property name = Literal Row Identity
property value = False
property name = Maximum Open Rows
property value = 0
property name = Maximum Pending Rows
property value = 1
property name = Maximum Rows
property value = 0
property name = Column Writable
property value = True
property name = Memory Usage
property value = 0
property name = Notification Phases
property value = 27
property name = Bookmarks Ordered
property value = False
property name = Others' Inserts Visible
property value = False
property name = Others' Changes Visible
property value = True
property name = Own Inserts Visible
property value = True
property name = Own Changes Visible
property value = True
property name = Quick Restart
property value = True
property name = Reentrant Events
property value = False
property name = Remove Deleted Rows
property value = True
property name = Report Multiple Changes
property value = True
property name = Row Privileges
property value = False
property name = Row Threading Model
property value = 1
property name = Objects Transacted
property value = True
property name = Updatability
property value = 7
property name = Strong Row Identity
property value = False
property name = IAccessor
property value = True
property name = IColumnsInfo
property value = True
property name = IColumnsRowset
property value = True
property name = IConnectionPointContainer
property value = True
property name = IRowset
property value = True
property name = IRowsetChange
property value = True
property name = IRowsetIdentity
property value = False
property name = IRowsetInfo
property value = True
property name = IRowsetLocate
property value = True
property name = IRowsetResynch
property value = False
property name = IRowsetScroll
property value = False
property name = IRowsetUpdate
property value = True
property name = ISupportErrorInfo
property value = False
property name = ILockBytes
property value = False
property name = ISequentialStream
property value = True
property name = IStorage
property value = False
property name = IStream
property value = False
property name = IRowsetIndex
property value = False
property name = Column Set Notification
property value = 3
property name = Row Delete Notification
property value = 3
property name = Row First Change Notification
property value = 3
property name = Row Insert Notification
property value = 3
property name = Row Resynchronization Notification
property value = 3
property name = Rowset Release Notification
property value = 3
property name = Rowset Fetch Position Change Notification
property value = 3
property name = Row Undo Change Notification
property value = 3
property name = Row Undo Delete Notification
property value = 3
property name = Row Undo Insert Notification
property value = 3
property name = Row Update Notification
property value = 3
property name = Append-Only Rowset
property value = False
property name = Change Inserted Rows
property value = True
property name = Return Pending Inserts
property value = False
property name = IConvertType
property value = True
property name = Notification Granularity
property value = 2
property name = Access Order
property value = 2
property name = Lock Mode
property value = 1
property name = Server Data on Insert
property value = True
property name = IRowsetCurrentIndex
property value = False
property name = Jet OLEDB:Validate Rules On Set
property value = False
property name = Jet OLEDB:Fat Cursor Cache Size
property value = 0
property name = Jet OLEDB:Enable Fat Cursors
property value = False
property name = Jet OLEDB:partial Bulk Ops
property value = 0
property name = Jet OLEDB:pass Through Query Connect String
property value =
property name = Jet OLEDB:ODBC Pass-Through Statement
property value = False
property name = Jet OLEDB:Grbit Value
property value = 176
property name = Jet OLEDB:Use Grbit
property value = 0
property name = Jet OLEDB:Stored Query
property value = False
property name = Jet OLEDB:Locking Granularity
property value = 2
property name = Jet OLEDB:Bulk Transactions
property value = 0
property name = Jet OLEDB:Inconsistent
property value = True
property name = Jet OLEDB:pass Through Query Bulk-Op
property value = False
property name = Bookmarkable
property value = True
 
I am using Access 2000 and I have not run into a problem with the delay. Perhaps some of the default property settings have changed between versions. If I was debugging this I would start looking at property settings. Things like lock type, cache size, granularity, cursor type, etc.....

Some links.



This Link discusses read and write timing in Access Jet 4.0.

 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top