[AccessD] GUID PK

Gustav Brock Gustav at cactus.dk
Fri Sep 29 06:36:34 CDT 2006


Hi Martin

I guess you need a GUID in its string representation.
We use this function which (or similar) is quite common.

Public Type GUID
  Data1         As Long
  Data2         As Integer
  Data3         As Integer
  Data4(0 To 7) As Byte
End Type

Private Declare Function CoCreateGuid Lib "ole32.dll" ( _
  ByRef pguid As GUID) As Long
  
Private Declare Function StringFromGUID2 Lib "ole32.dll" ( _
  ByRef rguid As Any, _
  ByVal lpstrClsId As Long, _
  ByVal cbMax As Long) As Long

Public Function GetGUIDString() As String

' Create a GUID and return its string representation.
'
' 2002-12-15. Cactus Data ApS, CPH.

  ' Length of GUID string per definition.
  Const clngGUID    As Long = 38
  ' Length of buffer with added space for zero terminator.
  Const clngBuffer  As Long = clngGUID + 1
  
  Dim udtGuid       As GUID
  Dim strGUID       As String * clngGUID
  Dim abytGUID()    As Byte
  
  ' Dim byte array.
  abytGUID() = String(clngBuffer, vbNullChar)
  ' Create GUID.
  If CoCreateGuid(udtGuid) = 0 Then
    ' GUID was successfully created.
    If StringFromGUID2(udtGuid, VarPtr(abytGUID(0)), clngBuffer) = clngBuffer Then
      ' GUID was successfully copied into byte array abytGUID in Unicode.
      ' Convert byte array to Ansi GUID string stripping zero terminator.
      strGUID = abytGUID
    End If
  End If
  
  GetGUIDString = strGUID

End Function

As Marty tells, those GUIDs will always contain 4 at position 13. You may set off from the crowd by replacing this char with something else.

/gustav

>>> mwp.reid at qub.ac.uk 28-09-2006 21:52:32 >>>
Havnt needed this much help in some time
 
I am doing an update to a system table. The table has a PK of ReplicationID Data type number. 
 
The insert includes some of the XML stuff I posted earlier. The new issue is when you run the wizard the insert happens by magic including the GUID PK.
 
How can I create this GUID via CODE?
 
Martin
 
Martin WP Reid
Training and Assessment Unit
Riddle Hall
Belfast
 
tel: 02890 974477




More information about the AccessD mailing list