Hallo,
ich habe eine alte Anwednung, mdb auf eine neue Version Access 365 umgestellt.
Funktioniert soweit, nur bei meiner Funktion zur Erstellung einer GUID bleibt er hängen und sagt mit Typenunverträglichkeit. Hier die Funktion
Die genaue Stelle in dieser Fkt.: VarPtr(bGUID(0))[/b], clLen)
Function CreateGUID() As String
Const clLen As Long = 50
Dim sGUID As String
Dim tGUID As GUID
Dim bGUID() As Variant
Dim lRtn As Long
Dim i As Integer
Dim bastelsGuid As String
If CoCreateGuid(tGUID) = 0 Then
bGUID = String(clLen, 0)
lRtn = StringFromGUID2(tGUID, [b]VarPtr(bGUID(0))[/b], clLen)
If lRtn > 0 Then
sGUID = Mid$(bGUID, 1, lRtn - 1)
End If
' Alle Zeichen ausser Zahlen aus dem String
' entfernen
For i = 1 To Len(sGUID)
If IsNumeric(Mid(sGUID, i, 1)) Then ' Hier mit weiterer Schleife
bastelsGuid = bastelsGuid & Mid(sGUID, i, 1) 'eventuel benötigte Leerzeichen einbauen
End If
Next i
' GUID übergeben
CreateGUID = bastelsGuid
End If
End Function
Das ganze funktioniert im alten System.
Kann es sein, dass es dort Probleme mit den dll's gibt?
' API's
Private Declare PtrSafe Function CoCreateGuid Lib "ole32.dll" (tGUIDStructure As GUID) As Long
Private Declare PtrSafe Function StringFromGUID2 Lib "ole32.dll" (rGUID As Any, _
ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long
Grüße, Babsi
Das Problem hast du nur bei einem Wechsel auf 64 Bit, da die Deklaration nicht angepasst wurde.
VarPtr liefert einen Pointer und in der Deklaration steht ByVal lpstrClsId As Long der Datentyp long - das müsste aber LongPtr sein, damit die Variable einen Pointer aufnehmen kann.
Die restlichen Parameter und vor allem die GUID Struktur sollten natürlich auch geprüft werden, wobei die Struktur das Heikelste ist, beim Rest werden Fehler eher verziehen ;)
Hallo Markusxy,
hab vielen Dank, ich wedre das prüfen.
Gruß, Babsi