[AccessD] A Question of Timing

Jim Dettman jimdettman at verizon.net
Thu Jan 4 10:36:26 CST 2007


I'd follow gustav's advice and use seek.  I also wanted to add that you can
use seek on a remote teable, but you must open the remote database first.
See code below.

Jim.

Function SetUserPreferences(lngUserID, strObjectName, strValue As String) As
Integer

  Dim wrk As Workspace
  Dim dbCurrent As Database
  Dim dbRemote As Database
  Dim tdfAttached As TableDef
  Dim strPath As String
  Dim rst1 As Recordset
  Dim rst1Field As Field

'
' First, get the path to the MDB for the attached table.
'
  Set wrk = DBEngine.Workspaces(0)
  Set dbCurrent = wrk.Databases(0)
  Set tdfAttached = dbCurrent.TableDefs("tblUserPreferences")
  
  strPath = tdfAttached.Connect
  strPath = right$(strPath, Len(strPath) - InStr(strPath, "="))
  
  Set dbRemote = wrk.OpenDatabase(strPath, False, False)
  
'
'  Find the preference for the given user.
'
  Set rst1 = dbRemote.OpenRecordset("tblUserPreferences", DB_OPEN_TABLE)
  rst1.index = "PrimaryKey"
  rst1.Seek "=", lngUserID, strObjectName

  If rst1.NoMatch Then
    rst1.AddNew
    rst1![UserId] = lngUserID
    rst1![ObjectName] = strObjectName
  Else
    rst1.Edit
  End If
  rst1![Value] = strValue
  rst1.Update
  
  rst1.Close
  Set rst1 = Nothing
  dbRemote.Close
  Set dbRemote = Nothing
  Set tdfAttached = Nothing
  Set dbCurrent = Nothing
  Set wrk = Nothing


End Function 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock
Sent: Thursday, January 04, 2007 11:08 AM
To: accessd at databaseadvisors.com
Subject: Re: [AccessD] A Question of Timing

Hi Rocky

You could use DAO and the Seek method on this local table if it is indexed
properly.
Seek is extremely fast but the syntax is a bit weird.

/gustav

>>> bchacc at san.rr.com 04-01-2007 16:50 >>>
Dear List:

 

In my manufacturing app I translate forms to various languages on the fly -
when the form opens.  The core of the translation routine looks at each
control in a form and if it's a label or command button looks up the
language record in a table (front end) and replaces the caption with the
appropriate language.  The core of the routine is:

 

        rstControls.FindFirst "fldLanguageForm = '" & argForm & "' and
fldLanguageControl = '" _

            & ctl.Name & "'"

        If rstControls.NoMatch = False Then

 

I have noticed, especially in the Chinese translation some noticeable delay
and you can see the form repaint itself the first time it opens (the second
time it seems to go much faster).

 

So I'm wondering if I put all the translations into an array when the app
starts up and search the array instead of using FindFirst on a DAO recordset
if it will be significantly faster and maybe eliminate the flicker that
occurs during translation.  The translation is called from the Open event of
the form, BTW.

 

Another approach I have considered which would be a considerable re-write,
would be to open all the forms hidden and, instead of opening them when
needed, simply make them visible.  There are about 85 forms and I don't know
if having that many forms opne at one time will cause other problems.

 

Any opinions appreciated.

 

 

MTIA

 

 

Rocky Smolin

Beach Access Software

858-259-4334

www.e-z-mrp.com 


-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list