[AccessD] Find First in an Array?

Rocky Smolin at Beach Access Software rockysmolin at bchacc.com
Thu Feb 19 09:40:46 CST 2009


Here's the current code BTW.  Note there's a variation for the headings on a
tab form:

On Error GoTo Err_TranslateControlForm:
Set frm = Forms(argForm)
For Each ctl In frm
    If InStr(1, gstrLanguage, "English") <> 0 Then GoTo CheckDecimalPlaces:
    If ctl.ControlType = 100 Or ctl.ControlType = 104 Then
        rstControls.FindFirst "fldLanguageForm = '" & argForm & "' and
fldLanguageControl = '" _
            & ctl.Name & "'"
        If rstControls.NoMatch = False Then
            If Nz(rstControls(gstrLanguage)) <> "" Then
                'If Nz(rstControls(gstrLanguage)) <> "" Then ctl.Caption =
rstControls(gstrLanguage)
                ctl.Caption = rstControls(gstrLanguage)
                If InStr(1, gstrLanguage, "Chinese") <> 0 Then _
                    ctl.FontName = "Arial Unicode MS"
            Else
                If Nz(rstControls(gstrLanguage)) <> "" Then ctl.Caption =
rstControls!fldLanguageEnglish
            End If
        End If
    End If

    ' Tab Page
    If ctl.ControlType = 124 Then

        rstControls.FindFirst "fldLanguageForm = '" & argForm & "' and
fldLanguageControl = '" _
            & ctl.Name & "'"
            
        If rstControls.NoMatch = False Then
            If Nz(rstControls(gstrLanguage)) <> "" Then
                ctl.Name = rstControls(gstrLanguage)
                If InStr(1, gstrLanguage, "Chinese") <> 0 Then _
                    ctl.FontName = "Arial Unicode MS"
            Else
                ctl.Name = rstControls!fldLanguageEnglish
            End If
        End If
    End If
    
CheckDecimalPlaces:
    If ctl.tag = "Currency" Then ctl.DecimalPlaces =
gintfldCurrencyDecimalPlaces

Next ctl
 


Rocky Smolin
Beach Access Software
858-259-4334
www.e-z-mrp.com
www.bchacc.com
 
 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: Thursday, February 19, 2009 6:00 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Find First in an Array?

Rocky,

I see nothing for dealing with things like tooltip etc.  If you want to deal
with that kind of thing, then you need to supply a property name where the
translation string would be stored.  I am assuming that at the moment all
data goes into labels and therefore the string is placed into the Caption
property?

John W. Colby
www.ColbyConsulting.com


Rocky Smolin at Beach Access Software wrote:
> John:
> 
> The table layout is:
> 
> fldLanguageID             Autonumber
> fldLanguageForm           Text Name of the form that the control is on
> fldLanguageControl        Text Name of the control 
> fldLanguageControlType    Text Not Used
> fldLanguageEnglish        Text
> fldLanguageChineseComplex Text
> fldLanguageChineseSimple  Text
> fldLanguageSpanish        Text
> fldLanguageFrench         Text	
> 
> In the translate routine I use:
> 
> Set frm = Forms(argForm)
> For Each ctl In frm
>     rstControls.FindFirst "fldLanguageForm = '" & argForm & "' and 
> fldLanguageControl = '" _
>         & ctl.Name & "'"
> 
> Where argForm is the form name passed to the function.  So I think I 
> might get a big boost in response time by indexing fldLanguageForm and 
> fldLanguageControl.
> 
> There are only about 2500 records in the table so I'm thinking that 
> the whole recordset is probably in memory anyway.
> 
> 
> Rocky Smolin
> Beach Access Software
> 858-259-4334
> www.e-z-mrp.com
> www.bchacc.com
>  
>  
> 
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
> Sent: Wednesday, February 18, 2009 5:46 PM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] Find First in an Array?
> 
> Does this imply a table structure of:
> 
> TR_ID		Auto
> TR_CtlName	Text
> TR_L1		text (or memo?) for language 1
> TR_L2		text (or memo?) for language 2
> Etc
> 
> I would suggest that you add a form (or container) field.  A control 
> name is unique on a form, however it could be the same on different 
> forms but have a different language string.  By having a form field 
> you could pull subsets of records based on the form name, then use the 
> control name (now guaranteed to be unique), then obtain the language
string.
> 
> It appears from your email however that you already have this stuff 
> set up, so you might be resistant to modifying how it works.
> 
> If this is all just one big table with control names guaranteed to be 
> unique then you could just stash it in one big collection.  There is a 
> problem however which is that classes get pretty slow as they get 
> large.  If you get up past 10,000 strings (I don't know the exact 
> point) it would bog back down.  If you broke it down into controls on 
> a form, then you would ensure that the total strings in any given
collection is pretty small.
> 
> Again I would build a class for all the code and the collection to 
> load one form.  then a supervisor class to hold instances of this form 
> class keyed on form name.
> 
> John W. Colby
> www.ColbyConsulting.com
> 
> 
> Rocky Smolin at Beach Access Software wrote:
>> Max:
>>
>> That would work except the table driven approach is so much more easier.
>> Easy to add a language (got French and Spanish now in addition to 
>> traditional and simplified Chinese), too, or make a change to a
> translation.
>> To add a language I just add a column for that language to the 
>> Control and Messages tables and send them to the translator.  Add 
>> that language to the language selector combo on the Preferences form, 
>> and walla! Another language.
>>
>>
>> Rocky Smolin
>> Beach Access Software
>> 858-259-4334
>> www.e-z-mrp.com
>> www.bchacc.com
> 
> --
> 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




More information about the AccessD mailing list