If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
Create GUID in Access 2003 Application
Hi All,
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,... |
#2
|
|||
|
|||
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,... |
#3
|
|||
|
|||
Thanks Maurice, this did the trick
"StCyrM" wrote: 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,... |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Access 2003 won't create reports. | James | Setting Up & Running Reports | 2 | September 27th, 2004 06:27 PM |
access 2003 can't open an access 2000 mdb | Sean | General Discussion | 7 | August 13th, 2004 06:41 AM |
Access 2003 | RK | General Discussion | 12 | June 14th, 2004 10:16 AM |
Problem running Access 2003 and Access 2000 apps on same machine. | Rathtap | General Discussion | 3 | June 13th, 2004 01:30 AM |
Continual Error 1321 Trying to Install Office 2003 | Chad Harris | General Discussions | 9 | June 11th, 2004 08:19 AM |