Michael Brösdorf
michael.broesdorf at web.de
Fri Jul 16 14:13:35 CDT 2004
Hi Jim,
thank you for the code sample! But the question still is: how do I
declare/set glTimestampNumber?
If I assign the timestamp value to a variant, comparing does not work as
expected. Vartype(rst!timestampnumber)
tells me that it is an array of byte values, but assigning it to a byte
array gives me a type conflict.
(The app uses a grid control that works unbound, so all of the methods of
locking/transactions etc. you mentioned
will not work here)
Michael
-----Ursprüngliche Nachricht-----
Von: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com]Im Auftrag von Jim Lawrence
(AccessD)
Gesendet: Freitag, 16. Juli 2004 18:18
An: Access Developers discussion and problem solving
Betreff: RE: [AccessD] Working with TSQL Timestamp values in Access VBA?
Hi Michael:
Assuming that the time-stamp value is recorded in SQL and you have a key in
the record in question and you are using ADO then:
...
Set objCmd = New ADODB.Command
With objCmd
.ActiveConnection = gstrConnection
.CommandText = "CheckRecord"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("@intEmployeeNumber", adInteger,
adParamInput, , Employeenumber)
End With
Set rs1 = New ADODB.Recordset
With rs1
.Open objCmd, , adOpenStatic, adLockReadOnly
If .BOF = False And .EOF = False Then
.MoveLast
If ![TimestampNumber] = glTimestampNumber Then
SaveRecord = True
Else
SaveRecord = False
End If
Else
SaveRecord = True
End If
End With
...
...but you should not have to be using the timestamp method to track whether
a record on the SQL server was updated on client station. There are three
considerations:
1. The initial recordset that retrieved the data from the server should have
locked the record.
...
rsEmployee.Open objCmd, , adOpenDynamic, adLockOptimistic
...
2. Setting transaction lock, when updating the record and responding to any
error, by rolling the transaction back and notify the station user can catch
record conflicts.
On Error GoTo Err_UpDateRecord
...
objConn.BeginTrans
...
objConn.Execute strSQL
Exit_UpdateRecord:
Exit Function
Err_UpdateRecord:
objConn.RollbackTrans
ShowConflictMsg ("SaveEmployee")
Resume Exit_UpdateRecord
...
3. The SQL server has methods for handling/buffering record conflicts built
into it.
Even though the previous code samples are not complete I hope there is
sufficient information to make the snippets useful and informative.
HTH
Jim
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Michael
Brösdorf
Sent: Friday, July 16, 2004 7:57 AM
To: Access Developers discussion and problem solving
Subject: [AccessD] Working with TSQL Timestamp values in Access VBA?
Dear group,
for an unbound form in my Access 2K application I want to compare the value
of a timestamp column to that of the same record on the server to find out
if modifications have been made by other users.
Unfortunately I can't find a way to store such timestamp values in a
variable.
Is it possible to convert timestamp values to a number or a string in a
deterministic way?
(In TSQL, the CONVERT-function does not allow for explicit type conversion
of timestamp values.)
Michael
--
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
--
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com