Article ID: 197916
Article Last Modified on 8/5/2004
119591 How to Obtain Microsoft Support Files from Online Services
FileName Size --------------------------------------------------------- AdoGUID.bas 3KB AdoGUID.exe 60KB AdoGUID.frm 25KB AdoGUID.frx 1KB AdoGUID.mdb 80KB AdoGUID.vbp 2KB Readme.txt 4KBMicrosoft Access has a ReplicationID AutoNumber field that is a 16-byte (128 bit) Globally Unique Identifier (GUID) that uniquely identifies each record in the database. Please reference the sample project for the code that demonstrates how to SELECT specific GUIDs and Insert GUIDs using the AutoNumber field with Microsoft Access. The following function is a code snippet from the sample that demonstrates how to SELECT a specific GUID from an Access table using Microsoft ActiveX Data Objects (ADO):
Sub AccessReQueryADO()
On Error GoTo ErrorMessage
Dim adoCn As adoDb.Connection
Dim adoRs As adoDb.Recordset
Dim strCn As String
Dim strSQL As String
strCn = App.Path & "\adoGUID.mdb"
Set adoCn = New adoDb.Connection
With adoCn
.Provider = "Microsoft.JET.OLEDB.3.51"
.CommandTimeout = 500
.ConnectionTimeout = 500
.Open strCn, "admin", ""
End With
If Option7.Value = True Then
strSQL = "SELECT * FROM GUIDtable WHERE " & _
"Instr(1,[colGUID],'" & strGUID & "')"
Else
strSQL = "SELECT * FROM GUIDtable"
End If
Set adoRs = New adoDb.Recordset
With adoRs
Set .ActiveConnection = adoCn
.LockType = adLockOptimistic
.CursorLocation = adUseServer
.CursorType = adOpenForwardOnly
End With
adoRs.Open strSQL
txtMessage.Text = ""
While Not adoRs.EOF
txtMessage.Text = txtMessage.Text & _
adoRs.Fields("colGUID").Value & " | "
txtMessage.Text = txtMessage.Text & _
adoRs.Fields("colDescription").Value & vbCrLf
adoRs.MoveNext
Wend
GoTo ExitSub
ErrorMessage:
MsgBox Err.Number & " : " & vbCrLf & Err.Description
ExitSub:
Label6.Caption = "- ReQueried AccessADO GUID Table..."
Set adoCn = Nothing
Set adoRs = Nothing
End Sub
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;
* Data1 An unsigned long integer data value. * Data2 An unsigned short integer data value. * Data3 An unsigned short integer data value. * Data4 An array of unsigned characters.To demonstrate GUIDs with SQL 7.0 or SQL 6.5 in the sample project you must specify a valid (test) SQL 7.0/SQL 6.5 server and database. To do so, navigate to the Connection Info tab and change the Server and Database reference. The defaults are (local) Server and the Pubs database. Also, to use the native GUID datatype for SQL 7.0, you must change to the OLEDB provider (SQLOLEDB) by clicking the appropriate option button in the Provider frame at the top of the Form. If you select ODBC as the provider for SQL 7.0 then the application uses the same code as with SQL 6.5.
Reversed... Not Reversed...
>----------------<|>---------------<
20C68F83-9593-0011-BFBB-00C04F8F8347 'SQLServer view after table Export.
838FC620-9395-1100-BFBB-00C04F8F8347 'Microsoft Access view.
NOTE: The bytes are in (DWord and Word) reverse order after
Exporting the Microsoft Access table.
Sub SQL65InsertGUID()
'Insert GUID record.
On Error GoTo ErrorMessage
Dim adoCn As adoDb.Connection
Dim adoRs As adoDb.Recordset
Dim strGUIDtmp As String
Dim bytGUID() As Byte
Dim strCn As String
Dim strSQL As String
strCn = "Provider=" & strProvider & _
";Driver={SQL Server}" & _
";Server=" & txtServer & _
";Database=" & txtDatabase & _
";Uid=" & txtUserID & _
";Pwd=" & txtPassword
Set adoCn = New adoDb.Connection
With adoCn
.ConnectionString = strCn
.CommandTimeout = 500
.ConnectionTimeout = 500
.Open
End With
strGUIDtmp = strGUID
bytGUID = GUID2ByteArray(FilterGUID(strGUIDtmp))
strSQL = "SELECT * FROM GUIDtable WHERE 1=0"
Set adoRs = New adoDb.Recordset
With adoRs
Set .ActiveConnection = adoCn
.LockType = adLockOptimistic
.CursorLocation = adUseServer
.CursorType = adOpenForwardOnly
End With
adoRs.Open strSQL
adoRs.AddNew
adoRs.Fields("colGUID").Value = bytGUID
adoRs.Fields("colDescription").Value = "This is a test GUID"
adoRs.Update
GoTo ExitSub
ErrorMessage:
MsgBox Err.Number & " : " & vbCrLf & Err.Description
ExitSub:
Label6.Caption = "[ASCII 176] Inserted SQL65 GUID Record..."
Set adoCn = Nothing
Set adoRs = Nothing
End Sub
'======================
Function GUID2ByteArray(ByVal strGUID As String) As Byte()
Dim i As Integer
Dim j As Integer
Dim sPos As Integer
Dim OffSet As Integer
Dim sGUID(0 To 2) As Byte
Dim bytArray() As Byte
ReDim bytArray(0 To 15) As Byte
sGUID(0) = 7
sGUID(1) = 11
sGUID(2) = 15
OffSet = 0
sPos = 0
'AABBCCDD-AABB-CCDD-XXXX-XXXXXXXXXXXX 'Microsoft Access view.
'DDCCBBAA-BBAA-DDCC-XXXX-XXXXXXXXXXXX 'SQLServer view.
'Need to loop through to build the GUID byte array in the Microsoft
'Access storage format since the first eight bytes are reversed.
For i = 0 To UBound(sGUID)
For j = sGUID(i) To (OffSet + 1) Step -2
bytArray(sPos) = "&H" & Mid$(strGUID, j, 2)
sPos = sPos + 1
Next j
OffSet = sGUID(i)
Next i
For i = 17 To 31 Step 2
bytArray(sPos) = "&H" & Mid$(strGUID, i, 2)
sPos = sPos + 1
Next i
GUID2ByteArray = bytArray()
End Function
176790 : How To Use CoCreateGUID API to Generate a GUID with VB
Additional query words: Adoguidz
Keywords: kbhowto kbdownload kbtophit kbdatabase kbfile KB197916