2010-08-26 94 views
2

我想創建guid自動編號字段programaticaly,但我不能。請幫幫我。 我正在使用c#。如何創建在ms訪問GUID自動編號programaticaly

+0

你是如何在C#中使用的MS Access? ADO.NET? – Jerome 2010-08-26 08:46:59

+0

我在c#中使用ms訪問。我使用這個查詢創建GUID字段: 「創建表hede(Id Guid)」,但我需要GUID和自動增量字段創建或GUID字段的deafult值設置爲新的GUID ID。 – Baris 2010-08-26 10:04:03

+0

請注意Access中可能不適用於您的問題。主題:信息:複製和GUID,好,壞,和醜陋http://www.trigeminal.com/usenet/usenet011.asp?1033 – 2010-08-26 20:46:05

回答

2

爲了使您的GUID字段的自動增量,使用GenGUID()因爲它是默認值。

這適用於使用ADO的Access。也許類似的聲明將在C#中的工作:

CurrentProject.Connection.Execute "CREATE TABLE hede (Id Guid DEFAULT GenGUID())" 
+1

這與在Access中設置表設計器中的自動編號字段的ReplicationID相同嗎?如果不是,有什麼區別? – 2010-08-27 20:07:16

+0

是的,這就是它在Access UI中顯示的方式。他沒有說明他爲什麼要從C#中完成。 – HansUp 2010-08-27 20:46:45

+0

我讀到的問題是關於填充現有字段,而不是將該字段添加到表中。 – 2010-08-28 19:52:05

0

你知道如何針對Jet或ACE連接運行sql嗎?

CREATE TABLE Literal (LinkID GUID) 

INSERT INTO Literal (LinkID) VALUES ({guid {11223344-1122-1122-1122-AABBCCDDEEFF}}) 
+0

這是一個唯一的創建GUID字段並插入新記錄。 我需要創建guid和autoincrement字段。 – Baris 2010-08-26 10:05:45

2

如果它的C#,然後

string myguid = Guid.NewGuid.ToString; 

如果它的訪問則

Private Declare Function CreateGuid Lib "OLE32.DLL" (pGuid As GUID) As Long 
Private Declare Function StringFromGUID2 Lib "OLE32.DLL" (pGuid As GUID, ByVal PointerToString As Long, ByVal MaxLength As Long) As Long 

Private Type GUID 
    Guid1   As Long 
    Guid2   As Integer 
    Guid3   As Integer 
    Guid4(0 To 7) As Byte 
End Type 

Public Function CreateGUIDKey() As String 
    Const GUID_OK As Long = 0  
    Const GUID_LENGTH As Long = 38 

    Dim udtGUID As GUID 
    Dim FormattedGUID As String 
    Dim Result As Long 

    Result = CreateGuid(udtGUID) 

    If Result = GUID_OK Then 
     FormattedGUID = String$(GUID_LENGTH, 0) 
     StringFromGUID2 udtGUID, StrPtr(FormattedGUID), GUID_LENGTH + 1 
    Else 
     FormattedGUID = "" 
    End If 

    CreateGUIDKey = FormattedGUID 

End Function 
+1

似乎CreateGuid不在OLE32.DLL中了。看起來應該使用CoCreateGuid來代替。請參閱:https://support.microsoft.com/en-us/kb/176790 – 2015-10-30 14:54:05