Tipps und Tricks 6/2002

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Christoph Spielmann, Düsseldorf

In der vorliegenden Ausgabe von Access im Unternehmen präsentieren wir Ihnen wieder einige Tipps & Tricks, die es in sich haben. Sie erfahren, wie Sie beliebige Dateien von Access aus öffnen, ohne die Anwendung auswählen zu müssen und wie Sie unerwünschte Zeichen aus Dateinamen entfernen können. Außerdem stellen wir Ihnen eine Möglichkeit vor, um ein Laufband in den Formularen Ihrer Access-Anwendung unterzubringen.

Unter Windows ist bekanntlich jede Dateierweiterung mit einer passenden Anwendung verknüpft. Dieser Tipp zeigt Ihnen, wie Sie eine Datei von Access aus direkt zusammen mit der zugeordneten Anwendung öffnen.

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd _    As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters _    As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Quellcode 1

Public Function OpenDocument(DocumentFile As String) As Long
    Dim ret As Long
        If Len(DocumentFile) > 0 Then
            ret = ShellExecute(Application.hWndAccessApp, "open", DocumentFile, _                vbNullChar, "", 1)
            If Err Then
                OpenDocument = 0
            ElseIf ret > 32 Then
                OpenDocument = -1
            Else
                OpenDocument = ret
            End If
        Else
        OpenDocument = 0
    End If
End Function

Quellcode 2

Die Information darüber, welche Anwendungen für welche Dateien zuständig sind, ist in der Registry von Windows untergebracht. Nun wäre es sehr mühselig, die Informationen hier auszulesen. Zum Glück kann Windows da mit einer passenden API-Funktion aufwarten, die Ihnen diese Arbeit abnimmt. Diese API-Funktion trägt den Namen ShellExecute und wird wie in Quellcode 1 deklariert:

Da die einzelnen Parameter etwas unübersichtlich sind, kann der Aufruf mit Hilfe der VBA-Prozedur aus Quellcode 2 vereinfacht werden.

Public Function CreateValidFilename(ByVal Filename _    As String) As String
    Dim i As Long
    Dim Text As String
    Dim Länge As Long
    Dim Zeichen As String
    For i = 1 To Len(Filename)
        Select Case Asc(Mid$(Filename, i, 1))
            Case Is < 32, 92, 47, 58, 42, 63, 34, 60, _                62, 124
                Mid$(Filename, i, 1) = "_"
        End Select
    Next
    CreateValidFilename = Filename
End Function

Quellcode 3

Diese Funktion erwartet als Parameter lediglich den Dateinamen der zu öffnenden Datei. Als Ergebnis erhalten Sie im Fehlerfall einen Wert kleiner oder gleich 0 zurück. Wenn Sie beispielsweise die Excel-Datei C:\Mappe1.xls in Excel öffnen möchten, dann geben Sie lediglich den folgenden Ausdruck an:

OpenDocument "C:\Mappe1.xls"

Die komplette Funktion finden Sie im Modul modOpenDocument der BeispieldatenbankTippsTricks0206.mdb.

Bei der Eingabe eines Dateinamens sind fast alle Zeichen erlaubt. Eine Ausnahme bilden jedoch die folgenden Zeichen:

\ / : * " < > |

Die Prozedur aus Quellcode 3 prüft einen Dateinamen auf eines dieser Zeichen und ersetzt dieses automatisch durch einen Unterstrich. Wenn Sie dieser Funktion beispielsweise den Text Umsatz 2002/2003.xls übergeben, wird dieser in Umsatz 2002_2003.xls umgewandelt und kann als Dateiname verwendet werden.

Die komplette Funktion finden Sie im Modul modDateiname der Beispieldatenbank Tipps-Tricks0206.mdb.

Effekte mit Texten waren früher bei der Programmierung unter DOS immer sehr beliebt. Schließlich waren es die einzigen Effekte, die sich mit Hilfe des ASCII-Codes realisieren ließen. Dieser Artikel zeigt, wie Sie einen solchen Effekt in Form eines Laufbandes unter Access realisieren.

Die Anforderung

Sie möchten einen langen Text auf dem Bildschirm darstellen, der sofort ins Auge sticht. Sie haben jedoch auf dem Desktop zu wenig Platz.

Also liegt es nahe, den Text von links nach rechts über den Bildschirm laufen zu lassen, wie Sie es beispielsweise von dem n-tv News-Ticker her kennen (siehe Bild 1).

Die Strategie ist einfach: Sie schneiden einen Teil der Zeichenkette aus, den Sie dann auf dem Bildschirm anzeigen. Bei jedem Schritt verschieben Sie den Ausschnitt um ein Zeichen weiter nach hinten. Sobald Sie am Ende angelangt sind, beginnen Sie wieder von vorne.

Darüber hinaus sollte das Tool nicht nur ein einziges Laufband, sondern mehrere Laufbänder gleichzeitig mit unterschiedlichen Texten darstellen können. Dies realisieren Sie am einfachsten mit Hilfe eines Klassenmoduls.

Public Sub Init(Text As String, AnzahlZeichen As String)
    m_AnzahlZeichen = AnzahlZeichen
    m_CurrentPos = 1
    If Len(Text) < AnzahlZeichen Then
        m_Text = Text & String(AnzahlZeichen - _            Len(Text), " ")
    Else
        m_Text = Text + " "
    End If
End Sub

Quellcode 4

Public Sub RefreshText()
    Dim res As String
    res = Mid(m_Text, m_CurrentPos, m_AnzahlZeichen)
    m_CurrentPos = m_CurrentPos + 1
    If m_CurrentPos + m_AnzahlZeichen > Len(m_Text) Then
        res = Left(res + m_Text, m_AnzahlZeichen)
    End If
    If m_CurrentPos > Len(m_Text) Then
        m_CurrentPos = 1
    End If    
    RaiseEvent RefreshText(res)
End Sub

Quellcode 5

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar