[AccessD] Find First in an Array? - The Solution

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
> 




More information about the AccessD mailing list