Hello
Simply copy and paste the following in a new module.
Best Regards
Maurice St-Cyr
Micro Systems Consultants, Inc.
Option Compare Database
' Samples:
' {3201047B-FA1C-11D0-B3F9-004445535400}
' {0547C3D5-FA24-11D0-B3F9-004445535400}
Option Explicit
DefLng A-Z
' The following is from Topic: Windows Conferencing API, GUID, MSDN April
1997
' typedef struct _GUID {
' unsigned long Data1;
' unsigned short Data2;
' unsigned short Data3;
' unsigned char Data4[8];
'} GUID;
'
'Holds a globally unique identifier (GUID), which identifies a particular _
object class and interface. This identifier is a 128-bit value.
'
'For more information about GUIDs, see the Remote Procedure Call (RPC) _
documentation or the OLE Programmer's Reference.
'
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As String * 1
End Type
Declare Function CoCreateGuid Lib "ole32.dll" (tGUIDStructure As GUID) As
Long
Const mciLen As Integer = 4 'each part's length
Public Function CreateGUID() As String
Dim sGUID As String 'store result here
Dim tGUID As GUID 'get into this structure
If CoCreateGuid(tGUID) = 0 Then 'use API to get the GUID
With tGUID 'build return string
sGUID = "{" & PadLeft(Hex(.Data1), mciLen * 2) & "-"
sGUID = sGUID & PadLeft(Hex(.Data2), mciLen) & "-"
sGUID = sGUID & PadLeft(Hex(.Data3), mciLen) & "-"
sGUID = sGUID & FormatGUIDData4(.Data4())
End With
sGUID = sGUID & "}" 'ending brace
CreateGUID = sGUID
End If
End Function
Private Function FormatGUIDData4(aryData4() As String * 1) As String
Dim i As Integer 'loop thru the array
Dim sGUID As String 'store result here
Dim sTemp1 As String 'first part here
Dim sTemp2 As String 'second part here
For i = LBound(aryData4()) To UBound(aryData4()) 'process string array
If i < 2 Then 'first part
sTemp1 = sTemp1 & Hex(Asc(aryData4(i)))
Else 'second part
sTemp2 = sTemp2 & Hex(Asc(aryData4(i)))
End If
Next
sGUID = PadLeft(sTemp1, mciLen) & "-" & PadLeft(sTemp2, mciLen * 3) 'pad
left with zeros
FormatGUIDData4 = sGUID 'return what we created
End Function
Private Function PadLeft(sString As String, iLen As Integer) As String
' Pad with left zreos if needed
Dim sTemp As String
sTemp = Right$(String$(iLen, "0") & sString, iLen)
PadLeft = sTemp
End Function
I need to insert a new record with a GUID Primary Key into a table.
Does anyone know how to create the new GUID in Access to pass it into the
INSERT script or is there a way to retrieve the GUID that is created by the
db (newid() function)?
Thanks heaps for any help, tipp,...