William Hindman
wdhindman at dejpolsystems.com
Sun Feb 22 07:34:08 CST 2009
...sigh ...shakes head ...doesn't work ...tries banging head against wall
...for some reason that only makes it worse :(
..."Simple, sweet, and to the point" it ain't, eh ...and telling Drew he's
brilliant is like throwing a cat into a bag full of catnip :(
...for this specific case ...translations ...using tags makes a lot more
sense ...imnsho of course.
...now WHERE is that damn Tylenol?
William
--------------------------------------------------
From: "jwcolby" <jwcolby at colbyconsulting.com>
Sent: Sunday, February 22, 2009 8:09 AM
To: "Access Developers discussion and problem solving"
<accessd at databaseadvisors.com>
Subject: Re: [AccessD] Find First in an Array? - The Solution
> Actually I think this solution adds too much burden on the developer. The
> thing is it is the
> computer doing the work and as Rocky said, who cares if the computer is
> unhappy.
>
> Drew's solution was brilliant, rather than stepping through all the
> controls, step through all the
> RECORDS, then use the control name in the record to index into the
> controls collection.
>
> Simple, sweet, and to the point.
>
> As you grab the data, store to a collection and you are done. I did some
> testing however and
> storing to a collection specific to the form is required to keep the
> speeds up. It is at this point
> that the class begins to make sense again. One class for the form, one as
> a supervisor for doing
> this stuff. The class form holds a collection for the strings for the
> specific form, plus all the
> code for loading the data from the recordset. The supervisor has a
> collection to hold the class
> instances for each form plus the code to decide which form is being
> processed.
>
> Simple, sweet, and to the point.
>
> John W. Colby
> www.ColbyConsulting.com
>
>
> Stuart McLachlan wrote:
>> Here's my simple procedural take on the problem.
>> I started thinking about ways to avoid stepping through the whole
>> controls collection for the
>> form and to optimise looping through the ones we are interested in.
>>
>> This method opens a form containing over 200 labels and buttons with no
>> discernable delay.
>>
>> All that is required is that you:
>> a. Maintain a standard naming convention for Labels and Buttons:
>> Label1, Label2 etc and Button1001,Button1002 etc within the form
>>
>> b. Define a FormID constant in each form's module,
>> c. Define constants in each form's module which record the number of
>> labels and buttons
>> d. Store your translation strings with two fields, FormNumber and
>> ControlNumber
>>
>>
>> FormNumber - Long
>> ControlNumber - Long
>> Language1 - String
>> Language 2 - String
>> Language 3 - String
>> etc
>>
>> 1. When the user changes language, load the new one into a Translation
>> collection.
>> In a Module:
>>
>> Global gcolTranslation As New Collection
>>
>> Function GetLanguage(Language as long)
>> Dim rs as DAO Recordset
>> If gcolTranslation.Count > 0 Then
>> For i = 1 To gcolTranslation.Count
>> gcolTranslation.Remove 1
>> Next
>> End If
>> Set rs = currentdb.openrecordset("uSysTranslationTable")
>> While not rs.eof
>> gcolTranslation.Add rs(Language + 2), _
>> Format(rs(0),"00") & rs(1)
>> rs.movenext
>> wend
>> rs.close
>> set rs = nothing
>> End Function
>>
>> 2. In each Form create 3 constants:
>> Const FormID As String = "01"
>> Const NoOfLabels As Long = 200
>> Const NoOfButtons as Long = 5
>>
>> 3. Use the following on_open event for each form.
>>
>> Private Sub Form_Open(Cancel As Integer)
>> Dim ctl As Control
>> Dim x As Long
>> Dim sX As String
>> For x = 1 To NoOfLabels
>> Me("Label" & x).Caption = gcolTranslation(FormID & x)
>> Next
>> For x = 1001 To 1000 + NoOfButtons
>> Me("Button" & x).Caption = gcolTranslation(FormID & (x)
>> Next
>> End Sub
>>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>