![]() |
||
![]() |
Mehrsprachige Datenbank entwickeln Mehrsprachige Datenbank entwickelnSie möchten eine Access-Anwendung als deutsche und englische Version entwickeln, dabei aber nicht zwei separate Anwendungen getrennt pflegen. Deshalb soll nur eine einzige Anwendung beide Sprachversionen vereinen. Die folgende Lösung arbeitet mit zwei Tabellen und einer VBA-Prozedur. Die Beispiel-Datenbank zum Tipp finden Sie zusammen mit den Listings auf der Heft-CD unter CHIP-Code Tipps. Public Function getText strKey As String) As String Dim rst As ADODB.Recordset Dim strLanguage As String Dim strKriterien As String ‘ Sprache ermitteln Set rst = New ADODB. Recordset strKriterien = “SELECT tblConfig.Sprache FROM tblConfig” rst.Open strKriterien, CurrentProject.Connection strLanguage = rst!Sprache rst.Close Set rst = Nothing ‘ Texte lesen Set rst = New ADODB. Recordset strKriterien = “SELECT tblTexte.” & strLanguage & “ FROM tblTexte WHERE (((tblTexte.KEY)=’” & strKey & “‘))” rst.Open strKriterien, CurrentProject.Connection getText = rst.Fields(0).Value rst.Close Set rst = Nothing End Function Diese Prozedur können Sie in einem beliebigen Modul definieren. Sie arbeitet mit einem Recordset und zwei Datenbankzugriffen via SQL. Der erste SQL-Befehl kopiert die in »tblConfig« eingetragene Sprache – zum Beispiel »Deutsch« – in die Variable »strLanguage«. Der zweite SQL-Befehl greift auf Basis dieser Variable auf die entsprechende Spalte und über das Feld »KEY« auf die entsprechende Zeile der Tabelle »tblTexte« zu. Dabei muss der Inhalt von »KEY« dem an »getText()« übergebenen Parameter »strKey« entsprechen. Mit »getText = rst.Fields(0).Value« liest die Prozedur den Inhalt des Recordsets aus. Wenn die Datenbank-Anwendung einen Text anzeigen oder ausgeben soll, übergibt sie den eindeutigen Schlüssel des Textes an die Prozedur »getText()«. Diese Funktion liefert dann den entsprechenden Text in der aktivierten Sprache zurück. Damit sich Ihre Formulare automatisch anpassen, füllen Sie in der Ereignisprozedur »Beim Öffnen« alle enthaltenen Textelemente mit den zugehörigen Inhalten. Der Befehl, der dem Tipp-Text der Kombinationsbox »cboKombinationsbox« in der Ereignisprozedur »Beim Öffnen« seinen tatsächlichen Text zuweist, sieht folgendermaßen aus: Me.cboKombinationsbox.ControlTipText = getText(“FRM_DEMO.CBO_ KOMBINATIONSBOX.CONTROLTIPTEXT”) Diese Lösung ist völlig flexibel. Wenn Sie zusätzlich noch eine französische Version bereitstellen möchten, müssen Sie nur die Tabelle »tblTexte« um eine Spalte »Französisch« erweitern, die verschiedenen Datensätze der Tabelle entsprechend aktualisieren und in das Feld »Sprache« der Tabelle »tblConfig« den Text »Französisch« eintragen. ! Achtung: Diese Lösung hat keinen Einfluss auf Standardobjekte von Windows und Access wie Dialoge zum Öffnen und Speichern oder die Schaltflächen »Ja« und »Nein« des Befehls »MsgBox«. |
![]() |