Form_Open - alle Steuerelemente deaktiviert

Schlafor

Mitglied
Jetzt ist es mal wieder soweit. VBA schafft mich jedesmal :suspekt:

ich habe in Access VBA eine "Datenbankanwendung" erstellt.
Diese habe ich stolz wie Oskar an meinen Prof. gesandt.

Tja, meinte er - beim Öffnen der DB sind alle Steuerelemente deaktiviert.
Nach Wechsel in den Layoutmodus und anschließend zurück in die Formularansicht,
werden laut seiner Aussage die gewünschten Steuerelemente schließlich aktiviert
und die Anwendung läuft normal weiter.

Weder bei meinem System (Win XP, Office Ultimate 2007, zusätzlich Access 2003),
noch auf dem System eines Kollegen (WIn XP auf MacBook über Virtual Machine,
Office Ultimate 2007) treten Probleme auf.

Ich aktiviere bei Form_Open die gewünschten Steuerelemnte.
Alle Steuerelemente sind auf einem Register (Reiterkarten) untergebracht.
Abhängig von bereits getätigten Selektionen werden Steuerelemente aktiviert
bzw. deaktiviert um den Nutzer zu leiten.

Weitere Infos:
- ich starte im Hintergrund Excel über OLE
- Erstellt wurde die Datenbank auf wechselnden Versionen von Access (2000,2003,2007)

Hier ein bisschen Code:

Code:
Private Sub Form_Open(Cancel As Integer)
    
    ' set title
    Me.Caption = "X"
    
    ' open the database connection
    ' start Excel in background
    analysis.initialize
    
    ' link ex access database
    iosLinked = analysis.checkForIOSDB
    
    ' activate controls
    Call highlightActiveBoxes
End Sub

' In dieser Function prüfe ich nur welcher Reiter ausgewählt wurde und rufe die entsprechende Methode auf, die die Aktivierung der Steuerelemente übernimmt.

Code:
Private Function highlightActiveBoxes() As Object
    Select Case Me.MainTab.value
        Case 0
            Me.ImportSchemaList.Enabled = True
            If Me.MasterImport.Enabled Then
                Me.MasterImport.Requery
            End If
            Call importControl
        Case 1
            If iosLinked Then
                Me.LinkIOSCommand.Enabled = True
                Me.IOSImportList.Enabled = True
                Me.IOSImportList.RowSource = AnalysisSQL.getSQLIOSImports
                Me.IOSImportList.Requery
            Else
                Me.IOSImportList.Enabled = False
                Me.LinkIOSCommand.Enabled = True
            End If
            Me.ConsumptionImportList.Enabled = True
            Me.ConsumptionImportList.Requery
            Call TimeSeriesAnalysisControl
        Case 2
            Me.AnalysisForecastList.Enabled = True
            Me.AnalysisForecastList.Requery
            Call forecastControl(Me.AnalysisForecastList)
        Case 3
            Me.ResultAnalysisList.Enabled = True
            Me.ResultAnalysisList.Requery
            Call ResultControl(Me.ResultAnalysisList)
        Case 4
            If Not Me.ExportAnalysisList.Enabled Then
                Me.ExportAnalysisList.Enabled = True
            Else
                Me.ExportAnalysisList.Requery
            End If
            Call exportControl
    End Select
End Function

In dieser Function werden die Steuerelemente abhängig von den Nutzerangaben
aktiviert und deaktiviert. Ist aber nur für eine Reiterkarte.

Code:
Private Function importControl()
    
    If Me.ImportSchemaList.ListIndex + 1 <= 0 Then
        Call highlightBox(Me.SchemaBox)
        Me.MasterData.Enabled = False
        Me.ConsumptionData.Enabled = False
        Me.FileFolderPath.Enabled = False
        Me.MasterImport.Enabled = False
        Me.StartImport.Enabled = False
        Me.SearchFileFolder.Enabled = False
    Else
        If Me.ConsumptionData.value And (Not Me.MasterData.value Or IsNull(Me.MasterData.value)) Then
            Me.MasterImport.Enabled = True
            Me.MasterImport.Requery
        Else
            Me.MasterImport.Enabled = False
        End If
        
        If IsNull(Me.MasterData.value) And IsNull(Me.ConsumptionData.value) _
        Or Not Me.MasterData.value And Not Me.ConsumptionData.value _
        Or Me.ConsumptionData.value And Me.MasterImport.ListIndex + 1 <= 0 _
        Or IsNull(Me.MasterData.value) And Not Me.ConsumptionData.value _
        Or Not Me.MasterData.value And IsNull(Me.ConsumptionData.value) Then
            Call resetBox(Me.SchemaBox)
            Call resetBox(Me.PathBox)
            Call highlightBox(Me.DataBox)
            Me.MasterData.Enabled = True
            Me.ConsumptionData.Enabled = True
            Me.MasterData.SetFocus
            Me.FileFolderPath.Enabled = False
            Me.SearchFileFolder.Enabled = False
            Me.StartImport.Enabled = False
        End If
        
        If (IsNull(Me.MasterData.value) Or Not Me.MasterData.value) _
        And Me.ConsumptionData.value And _
        Me.MasterImport.ListIndex + 1 > 0 Then
            Call resetBox(Me.DataBox)
            Call highlightBox(Me.PathBox)
            Me.FileFolderPath.Enabled = True
            Me.SearchFileFolder.Enabled = True
        End If
        
        If Me.MasterData.value And (IsNull(Me.ConsumptionData.value) _
        Or Not Me.ConsumptionData.value) Then
            Call highlightBox(Me.DataBox)
            Call highlightBox(Me.PathBox)
            Me.FileFolderPath.Enabled = True
            Me.SearchFileFolder.Enabled = True
        End If
        
        If Me.ConsumptionData.value And (Not Me.MasterData.value Or IsNull(Me.MasterData.value)) Then
            
        End If
        
        If Me.MasterData.value And Me.ConsumptionData.value Then
            Call resetBox(Me.DataBox)
            Call highlightBox(Me.PathBox)
            Me.FileFolderPath.Enabled = True
            Me.SearchFileFolder.Enabled = True
        End If
                
        If Me.FileFolderPath.Enabled Then
            Me.FileFolderPath.SetFocus
            If StrComp("", Me.FileFolderPath.Text) <> 0 Then
                Call resetBox(Me.DataBox)
                Call highlightBox(Me.StartBox)
                Me.StartImport.Enabled = True
            Else
                Call resetBox(Me.StartBox)
            End If
        Else
            Call resetBox(Me.StartBox)
        End If
    End If
End Function

HighlightBox und resetBox ändern nur die Hintergrund- und Rahmenfarben eines Box-Elements.
 
Zuletzt bearbeitet:

Schlafor

Mitglied
Ok, ich gebe zu: es ist ein bisschen viel verlangt sich in den ganzen Code hinein zu versetzen.

Könntet Ihr denn, falls Ihr ähnliches bereits erlebt habt, kurz Eure Lösung posten?

Vielen Dank im Voraus.

Gruß

Schlafor
 

Schlafor

Mitglied
Uuuhudelliiee,

der Problemstellung stand wohl noch niemand gegenüber. Ich werde mich wohl an den Rechner meines Profs setzen und dort die Sache testen müssen :).

Hat sich damit erledigt. Ich werde dann aber noch die Lösung posten, falls jemand irgendwann ein ähnliches Problem haben sollte.

Gruß

Schlafor