![]() |
||
![]() |
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½. |
![]() |