Hallo,
ich habe eine DB die über ein Sprachenkennzeichen gesteuert wird.
Läuf unter Acc 2000 und Acc 2007 hervorragend.
Jetzt aber das Problem:
Wird die DB über die Runtime Acc 2000 gestartet wird scheinbar das Sprachenkennzeichen nicht berücksichtigt.
AusführenCode SetSpracheID (1)
ist die erste Zeile bei der Autoexec.
Es gibt ein Modul für die Sprache:
Option Compare Database
Option Explicit
Public Const cValidationText As Integer = 4
Public Const cStatusText As Integer = 3
Public Const cToolTipText As Integer = 2
Public Const cCaption As Integer = 1
Dim GlbSpracheID As Long
Function GetSpracheID() As Long
GetSpracheID = GlbSpracheID
End Function
Function SetSpracheID(SpID As Long)
'
' Spracheinstellung setzen.
' 1 = Deutsch
' 2 = Englisch
' 3 = Niederländisch
GlbSpracheID = SpID
GblSprachID = SpID
End Function
Function GetBeschriftung(CtrlName As String, Art As Integer) As String
'
' Ermittelt die Beschriftung zu einem Steuerelement
'
Dim vVar As Variant
'
' prüfen, ob ein Controlname angegeben ist
'
If Trim$(CtrlName) = "" Then
MsgBox "Kein Controlname angegeben", "GetBeschriftung"
Exit Function
End If
'
' Auswahl der Beschriftungsart
'
Select Case Art
Case cToolTipText:
'
' Tool-Tip-Text aus Tabelle "Beschriftungen" lesen
'
'vVar = DLookup("[ToolTipText]", "Beschriftungen", _
' "[Steuerelementname]='" & CtrlName & "' AND " & _
' "[SpracheID]=" & Str$(GlbSpracheID))
Case cCaption:
'
' Beschriftung aus Tabelle "Beschriftungen" lesen
'
vVar = DLookup("[Beschriftung]", "Beschriftungen", _
"[Steuerelementname]='" & CtrlName & "' AND " & _
"[SpracheID]=" & Str$(GlbSpracheID))
Case cStatusText:
'
' Statuszeilentext aus Tabelle "Beschriftungen" lesen
'
'vVar = DLookup("[Statuszeilentext]", "Beschriftungen", _
' "[Steuerelementname]='" & CtrlName & "' AND " & _
' "[SpracheID]=" & Str$(GlbSpracheID))
Case cValidationText:
'
' Gültigkeitmeldung aus Tabelle "Beschriftungen" lesen
'
'vVar = DLookup("[Gueltigkeitsmeldung]", "Beschriftungen", _
' "[Steuerelementname]='" & CtrlName & "' AND " & _
' "[SpracheID]=" & Str$(GlbSpracheID))
End Select
GLMeineSprache = Str$(GlbSpracheID)
'
' prüfen, ob eine Beschriftung gefunden wurde
'
If IsNull(vVar) Then
GetBeschriftung = ""
'
' Den Namen des Steuerelementes in die Tabelle Beschriftung eintragen,
' damit man weiß was noch zu ergänzen ist.
'
CurrentDb.Execute "INSERT INTO Beschriftungen (SpracheID, Steuerelementname) " & _
"VALUES(1,'" & CtrlName & "');"
Else
GetBeschriftung = vVar
End If
End Function
Sub SetFormBeschriftung(AktFrm As Form)
'
' Alle Beschriftungen für ein Formular entsprechend
' der Spracheinstellung setzen.
'
Dim AktCtrl As Control
'
' Formulartitel (Überschrift)
'
AktFrm.Caption = GetBeschriftung(AktFrm.Name, cCaption)
'
' Alle Steuerelemente des Formulares abklappern
'
For Each AktCtrl In AktFrm.Controls
'
'
If AktCtrl.ControlType = acLabel Or _
AktCtrl.ControlType = acCommandButton Then
AktCtrl.Caption = GetBeschriftung(AktCtrl.Name, cCaption)
End If
Next AktCtrl
End Sub
Hallo,
wird SetSpracheID überhaupt angesprungen ? (Haltepunkt gesetzt)
oder wird dieser Befehl bereits ignoriert?
Wenn sie angesprungen wird, was passiert wenn du mit F8 schrittweise ausführst?
Hallo Peter,
danke für Deine Antwort.
kann ich in einer Runtime überhaupt mit Haltepunkte arbeiten?
Wie gesagt unter "normal Acc" läuft es sowohl bei Acc 2000, Acc 2003 und Acc 2007.
Hier habe ich das ganze mit den Debugger laufen lassen und alle Werte sind wie gewünscht.
Nur die Runtime will nicht.
Es gibt da aber noch die Besonderheit das mit einer Replikation gearbeitet wird.
Gruß
Johann
Hallo,
kennst du noch irgendeine Möglichkeit, dir das Leben noch schwerer zu machen? :D ;D :D
Oh Mann, mal sehen, ich bin am Suchen, vielleicht find' ich doch noch was um dir zu helfen... ;)