A Microsoft Office (Excel, Word) forum. OfficeFrustration

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.

Go Back   Home » OfficeFrustration forum » Microsoft Access » Using Forms
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

Create GUID in Access 2003 Application



 
 
Thread Tools Display Modes
  #1  
Old September 27th, 2004, 04:13 PM
dbuschi
external usenet poster
 
Posts: n/a
Default 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  
Old September 27th, 2004, 10:13 PM
StCyrM
external usenet poster
 
Posts: n/a
Default

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  
Old September 28th, 2004, 11:33 AM
dbuschi
external usenet poster
 
Posts: n/a
Default

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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump

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


All times are GMT +1. The time now is 12:05 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.