Blog Schröder

Sammlung von Codeschnipseln zu Programmierproblemen.
Daten aus fremden Quellen unterliegen deren Rechten.
Siehe auch: Disclaimer auf www.computer-schroeder.de

Samstag, 13. Oktober 2007

"????????" als Wert eines SQL Server-GUID-Feldes angezeigt

Problembeschreibung
Wenn Sie mit VBA-Code (VBA = Visual Basic für Applikationen) den Wert einer Jet-Replikations-ID oder eines SQL Server-GUID-Feldes (GUID = Globally Unique Identifier) abrufen und anzeigen, erhalten Sie den Wert "????????".
Ursache
Ein GUID ist ein 16-Byte-Datenfeld, das konvertiert werden muss, um von Microsoft Access interpretiert werden zu können.
Lösung
Konvertieren Sie das GUID-Feld mit der Funktion StringFromGUID() in eine Zeichenfolge, damit Access ein GUID-Feld richtig interpretieren und anzeigen kann. Wenn Sie z.B. den folgenden Code auf ein offenes Formular anwenden, in dessen Datensatzherkunft ein GUID-Feld enthalten ist, sehen Sie eine Zeichenfolge hexadezimaler Zahlen in geschweiften Klammern, denen das Wort "guid" vorangestellt ist, wiederum in geschweifte Klammern gesetzt.
Beachten Sie, dass
Debug.Print StringFromGUID(Forms![Formularname]![GUIDFeldname])
etwa so angezeigt wird:
{guid {3B9B63A3-863D-11CF-8CAE-00AA00C0016B}}
aus Microsoft Knowledge Base: 278099 (http://support.microsoft.com/kb/278099/en-us/)

Extraktion und Aufbereitung:

Function °°StringFromGUID(guid As Control) As String
Dim s As String
s = StringFromGUID(guid)
s = Right(s, Len(s) - 6)
°°StringFromGUID = Left(s, Len(s) - 1)
End Function

Labels: , , ,

Montag, 24. September 2007

GUID in Access erzeugen

Option Explicit

Public Type TYP_GUID
bytes(15) As Byte
End Type

Public Declare Function CoCreateGuid Lib "OLE32.dll" _
(Guid As TYP_GUID) As Long
Public Declare Function StringFromGUID2 Lib "OLE32.dll" _
(Guid As TYP_GUID, _
ByVal lpszString As String, _
ByVal iMax As Long) As Long

Public Function CreateGUID() As String
'// --------------------------------------------------------
'// Methode: | Erzeugen einer eindeutigen GUID
'// --------------------------------------------------------
'// Parameter: | -
'// --------------------------------------------------------
'// Rückgabe: | GUID als String
'// | z.B.:{A7FFA6B1-0377-4A75-8CB9-B95FB5CF545A}
'// --------------------------------------------------------
'// Autor: | Stefan Kulpa
'// | EDV Innovation & Consulting - Dormagen
'// --------------------------------------------------------
Dim uGuid As TYP_GUID
Dim sBuffer As String
Dim lResult As Long

sBuffer = VBA.Space(78)
CoCreateGuid uGuid
lResult = StringFromGUID2(uGuid, sBuffer, Len(sBuffer))
CreateGUID = _
Left$(StrConv(sBuffer, vbFromUnicode), lResult - 1)

End Function
(www.kulpa-online.com)

Labels: ,