Article ID: 197916 - Last Review: August 5, 2004 - Revision: 3.4 How To Use GUIDs w/ Access, SQL 6.5 and SQL 7
This article was previously published under Q197916 On This PageSUMMARY AdoGUIDz.exe is a self-extracting executable that contains
a sample project that demonstrates using the globally unique identifier
datatype (GUID) with Microsoft Access, SQL 6.5 and SQL 7.0. The sample code may
be particularly helpful if you are attempting to manipulate GUIDs with ODBC
versions 3.51 and below because those versions of ODBC do not support a native
GUID datatype. ODBC versions 3.6 and above include the GUID datatype.
Consequently, the methods for manipulating GUIDs with ODBC 3.6 are simpler.
NOTE: SQL 6.5 does not support a native GUID datatype so in order to store/retrieve GUIDs in SQL 6.5 you must use the VarBinary datatype and Byte Arrays. MORE INFORMATIONThe
following files are available for download from the Microsoft Download
Center: Adoguidz.exe
(http://download.microsoft.com/download/vb60pro/sample/1/win98/en-us/adoguidz.exe)
Release Date:
DEC-29-1998For additional information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base: 119591
(http://support.microsoft.com/kb/119591/EN-US/
)
How to Obtain Microsoft Support Files from Online Services
Microsoft scanned this file for viruses. Microsoft used the most
current virus-detection software that was available on the date that the file
was posted. The file is stored on security-enhanced servers that help to
prevent any unauthorized changes to the file.
FileName Size --------------------------------------------------------- AdoGUID.bas 3KB AdoGUID.exe 60KB AdoGUID.frm 25KB AdoGUID.frx 1KB AdoGUID.mdb 80KB AdoGUID.vbp 2KB Readme.txt 4KB Sample CodeUnlike SQL 6.5, SQL 7.0 supports a GUID datatype known as UNIQUEIDENTIFIER. This datatype is a 16-byte GUID stored in the same format as the Microsoft Access AutoNumber (GUID) datatype. There are subtle differences concerning how to Insert and Retrieve the GUIDs among the different database engines. Since SQL 6.5 does not support a native GUID datatype the methods used for storing/retrieving GUIDs are much different than SQL 7.0 or Microsoft Access. SQL 7.0 with the OLEDB provider is almost the same as Microsoft Access with or without the OLEDB provider (SQLOLEDB), as you will see in the sample code. With SQL 6.5 you must store the GUID as a VarBinary(16) datatype. Consequently, to retrieve the GUID with SQL65 you must use a stored procedure and build a Command object with the appropriate ByteArray parameter to pass to the stored procedure SELECT statement. NOTE: You must use the same code techniques with SQL 7.0 as with SQL 6.5 if you are using the ODBC provider (MSDASQL) since in ODBC 3.51 and below the GUID datatype is not recognized. The 16-byte (128 bit) data structure of a 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. NOTE: The Connection Info tab has no bearing on Microsoft Access. The default database for Microsoft Access is included with the sample project AadoGUID.mdb as should reside in the Application path. For each database you select in the sample project you must run Create Table to create the GUID test table and then Insert to automatically generate some test GUID data before running a ReQuery. NOTE: CoCreateGUID() is called in the Insert sample code to generate the test GUID values. In the sample application there is a ByteArray2GUID() function that is used to convert the VarBinary(16) byte array to a GUID string for display. Also, the function is used to convert the GUID string to a byte array for storage in the SQLServer VarBinary(16) datatype column. Note that the function is needed when using the GUIDs interchangeably between Microsoft Access and SQL 6.5. If you Export the Microsoft Access table to SQL 6.5 you will see that the bytes are not stored in the same order in which they display in the Microsoft Access table view. For example:
Reversed... Not Reversed...
>----------------<|>---------------<
20C68F83-9593-0011-BFBB-00C04F8F8347 'SQLServer view after table Export.
838FC620-9395-1100-BFBB-00C04F8F8347 'Microsoft Access view.
Because the Microsoft Access Upsizing Wizard results in the same storage of the bytes in SQL 6.5, you must use the ByteArray2GUID() and GUID2ByteArray() functions to remain compatible with the storage of the GUIDs in Microsoft Access. If you do not need to Export the Microsoft Access table to SQL 6.5 or upsize the Microsoft Access database to SQL 6.5 then you need only store the bytes in a straightforward fashion. The following is a code snippet from the code sample that demonstrates the storage of the GUID in the byte format of Microsoft Access. Sample CodeREFERENCES For more information, please see the following article in
the Microsoft Knowledge Base: 176790
(http://support.microsoft.com/kb/176790/EN-US/
)
: How To Use CoCreateGUID API to Generate a GUID with VB
Microsoft SQL 7.0 Books Online; search on: "UNIQUEIDENTIFIER"
Microsoft SQL 6.5 Books Online; search on: "VarBinary" Microsoft Access Help; search on: "ReplicationID - AutoNumber field" APPLIES TO
| Other Resources Other Support Sites
CommunityGet Help NowArticle Translations |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Back to the top
