Zufälliger Artikel

Problemstellung:

Wie ermittle ich die Access Version und das installierte Servicepack?
Der Originalcode stammt von Smarttools - AddIn-World
und wurde von mir um das SP3 (+Hotfix) für A03 und A07, A07+SP1, A07+SP2, A07+SP3, A10,  A10 +SP1, A10 +SP2, A13, A13 +SP1 erweitert.
Die Funktion nutzt den undokumentierten Aufruf "715" von SysCmd.

Update 28.02.2014: A13 SP1 hinzugefügt
Update 14.08.2013: A10 SP2 hinzugefügt

Update 27.10.2011: A07 SP3 hinzugefügt

Update 03.07.2011: A10 SP1 hinzugefügt

Update 10.11.2010: A10 hinzugefügt
Update 20.05.2009: A07 SP2 hinzugefügt

Public Function GetAccVersAndSP() As String
    Dim sVers As String, sSP As String

    Select Case Val(SysCmd(acSysCmdAccessVer))
        Case 9    'Access 2000
            sVers = "Access 2000"
            Select Case SysCmd(715)
                Case 2719: sSP = "Kein SP!"
                Case Is >= 6620: sSP = "SP-3"
                Case Is >= 4506: sSP = "SP-2"
                Case Is >= 3822: sSP = "SP-1"
                Case Else: sSP = "Unbekanntes SP !"
            End Select

        Case 10    'Access 2002/XP
            sVers = "Access 2002/XP"
            Select Case SysCmd(715)
                Case 2627: sSP = "Kein SP!"
                Case Is >= 6501: sSP = "SP-3"
                Case Is >= 4302: sSP = "SP-2"
                Case Is >= 3409: sSP = "SP-1"
                Case Else: sSP = "Unbekanntes SP !"
            End Select

        Case 11    'Access 2003
            sVers = "Access 2003"
            Select Case SysCmd(715)
                Case 5614: sSP = "Kein SP!"
                Case Is >= 8204: sSP = "SP-3 + Hotfix"
                Case Is >= 8166: sSP = "SP-3"
                Case Is >= 6566: sSP = "SP-2"
                Case Is >= 6355: sSP = "SP-1"
                Case Else: sSP = "Unbekanntes SP !"
            End Select

        Case 12    'Access 2007
            sVers = "Access 2007"
            Select Case SysCmd(715)
                Case 4518: sSP = "Kein SP!"
                Case Is >= 6603: sSP = "SP-3"
                Case Is >= 6423: sSP = "SP-2"
                Case Is >= 6211: sSP = "SP-1"
                Case Else: sSP = "Unbekanntes SP !"
            End Select

        Case 14    'Access 2010
            sVers = "Access 2010"
            Select Case SysCmd(715)
                Case 4750: sSP = "Kein SP!"
                Case Is >= 7015: sSP = "SP-2"
                Case Is >= 6023: sSP = "SP-1"
                Case Else: sSP = "Unbekanntes SP !"
            End Select
        Case 15    'Access 2013
            sVers = "Access 2013"
            Select Case SysCmd(715)
                Case 4420: sSP = "Kein SP!"
                Case Is >= 4569: sSP = "SP-1"
                Case Else: sSP = "Unbekanntes SP !"
            End Select
    End Select
    GetAccVersAndSP = sVers & ", " & sSP

End Function

 

Aufruf:

MsgBox GetAccVersAndSP

Das Ergebnis:

 

Ähnliche Artikel

Home

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Problemstellung:
Wenn man in Access-Formularen den Mouse Cursor verändern will sind einem
ganz schnell Grenzen gesetzt.
Entweder man setzt ein Stundenglas (Eieruhr) mittels dem DoCmd-Objektes:

DoCmd.Hourglass True

oder man greift auf das Screenobjekt zurück. Aber auch hier ist nicht viel möglich. (mehr s. OH)

Screen.MousePointer = 11

Jetzt möchte ich aber z.B. eine Hand als Cursor erscheinen lassen wenn die Maus über
ein Button fährt oder die Hand soll erscheinen wenn ich über ein Bild fahre um anzuzeigen
das sich ein Link dahinter befindet.

Button herkömmlich:

 

Button mit Hand-Cursor:

Wie geht das aber? Lösung folgt.

Voraussetzungen:
Das Bsp ist ab A00 lauffähig.

Funktionsweise:
Die Lösung beruht auf API-Funktionen. Das funktioniert auch unter Vista.
Private Const IDC_HAND As Long = 32649
Private Const IDC_ARROW As Long = 32512
Private Const GCL_HCURSOR = -12
Private Declare Function LoadCursor _
    Lib "user32" _
    Alias "LoadCursorA" ( _
    ByVal hInstance As Long, _
    ByVal lpCursorName As Long) As Long
Private Declare Function SetClassLong _
    Lib "user32" _
    Alias "SetClassLongA" ( _
    ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
Dim blnIsHand As Boolean
Dann sind noch 2 Sub's erforderlich. Die erste zum setzten des Cursors (MouseMove-Ereignis des Controls)
Sub SetHandCursor()
  Dim hHandCursor As Long
  Dim R As Long

  On Error Resume Next
  If blnIsHand Then Exit Sub

  hHandCursor = LoadCursor(ByVal 0&, IDC_HAND)
  R = SetClassLong(Me.hwnd, GCL_HCURSOR, hHandCursor)
  DoEvents

  blnIsHand = True

End Sub
'Die zweite zum setzten des normalen Cursors (MouseMove-Ereignis des Detailbereiches)
Sub RemoveHandCursor()
  Dim R As Long
  Dim hArrowCursor As Long

  On Error Resume Next

  If Not blnIsHand Then Exit Sub

  hArrowCursor = LoadCursor(ByVal 0&, IDC_ARROW)
  R = SetClassLong(Me.hwnd, GCL_HCURSOR, _
                   hArrowCursor)
  DoEvents
  
  blnIsHand = False

End Sub
Alles weitere in der Bsp-DB. 
 

Dateien:
Hand-Cursor in Formularen anzeigen

ab A00

Die Zip-Datei enthält ein Version ab A00

Datum 05.02.2018
Dateigröße 50.6 KB
Download 977


Ähnliche Artikel

Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

1.png1.png9.png1.png5.png0.png8.png
Heute65
Gestern49
Diese Woche65
Dieser Monat1441
Total1191508

  • IP: 54.144.14.134
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

23. April 2018