reneemettrie
Terugkerende gebruiker
- Lid geworden
- 1 aug 2006
- Berichten
- 1.279
Na de nuttige suggesties van Octafish heb ik wat zitten spelen met TempVars en een tabel om vertalingen voor captions op formulieren en/of rapporten te voorzien.
De tabel ziet er zo uit (label_caption is de oorspronkelijk caption die gelijk is aan de veldnaam):
Label_Caption NL FR
Close Form Sluiten Fermer
frm_members Leden Membres
ID ID ID
mem_Name Naam Nom
mem_Town Stad Ville
tbl_Members Leden Membres
Op een startformulier staat een groep keuzerondjes (fra_taal) om de taal te kiezen
Code van het startformulier:
In een algemene module staat volgende sub:
Die ik aanroep in elk formulier waar de captions moeten vertaald worden:
Nu mijn vragen:
1. Hoe kan ik die sub in de algemene module aanpassen zodat hij ook bruikbaar is voor rapporten?
2. Is mijn werkwijze correct of kan het beter
?
De tabel ziet er zo uit (label_caption is de oorspronkelijk caption die gelijk is aan de veldnaam):
Label_Caption NL FR
Close Form Sluiten Fermer
frm_members Leden Membres
ID ID ID
mem_Name Naam Nom
mem_Town Stad Ville
tbl_Members Leden Membres
Op een startformulier staat een groep keuzerondjes (fra_taal) om de taal te kiezen
Code van het startformulier:
Code:
Private Sub Form_Open(Cancel As Integer)
With TempVars
.Add "Fieldname", "NL"
End With
End Sub
Private Sub fra_taal_AfterUpdate()
Select Case fra_taal.Value
Case 1
TempVars("Fieldname") = "NL"
Case 2
TempVars("Fieldname") = "FR"
End Select
End Sub
In een algemene module staat volgende sub:
Code:
Sub Translate(Formname As String)
Dim ctl As Control, fieldname As String, tablename As String, criterium As String
fieldname = TempVars("Fieldname")
tablename = "tbl_translations"
For Each ctl In Forms(Formname).Controls
If TypeOf ctl Is Label Or TypeOf ctl Is CommandButton Or TypeOf ctl Is OptionGroup Then
criterium = "label_Caption = '" & ctl.Caption & "'" '
ctl.Caption = Nz(DLookup(fieldname, tablename, criterium), ctl.Caption)
End If
Next
End Sub
Die ik aanroep in elk formulier waar de captions moeten vertaald worden:
Code:
Private Sub Form_Open(Cancel As Integer)
Translate Formname:=Me.Name
End Sub
Nu mijn vragen:
1. Hoe kan ik die sub in de algemene module aanpassen zodat hij ook bruikbaar is voor rapporten?
Code:
Sub Translate(ObjectName As String, Verzameling as ???????) 'waarbij verzameling dus forms of reports kan zijn
.....
For Each ctl In Verzameling(Objectname).Controls
.......
2. Is mijn werkwijze correct of kan het beter
