2010-08-26 5 views
2

j'essaye de créer le guide autonumber field programaticaly mais je ne peux pas. aide-moi s'il te plaît. J'utilise C#. Savez-vous exécuter sql sur une connexion Jet ou ACE?comment créer GUID Autonumber programaticaly dans l'accès de ms

+0

Comment utilisez-vous MS Access en C#? ADO.NET? – Jerome

+0

J'utilise ms access dans C#. J'utilise cette requête pour créer un champ guid: "create table hede (Id Guid)" mais j'ai besoin de guid et d'incrémentation automatique du champ créant la valeur deafult du champ guid de new Id. – Baris

+0

Soyez conscient des problèmes d'accès qui peuvent ne pas s'appliquer à vous. Objet: INFO: réplication et GUID, le bon, le mauvais et le vilain http://www.trigeminal.com/usenet/usenet011.asp?1033 –

Répondre

2

Afin de rendre votre champ GUID auto-incrément, utilisez GenGUID() comme c'est la valeur par défaut.

Cela fonctionne dans Access utilisant ADO. Peut-être une déclaration similaire fonctionnera en C#:

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

Est-ce la même chose que de définir ReplicationID pour un champ Autonumber dans le concepteur de table dans Access? Si non, quelle est la différence? –

+0

Oui, c'est comme cela qu'il est affiché dans l'interface utilisateur Access. Il n'a pas dit pourquoi il voulait le faire en C#. – HansUp

+0

J'ai lu la question comme étant sur le remplissage d'un champ existant, par opposition à l'ajout du champ à une table. –

0

CREATE TABLE Literal (LinkID GUID) 

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

il s'agit d'un seul champ de création de guide et d'insertion d'un nouvel enregistrement. J'ai besoin de créer un champ guid et auto-incrémenté. – Baris

2

Si le C# puis

string myguid = Guid.NewGuid.ToString; 

Si son accès puis

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

Semble CreateGuid n'est plus dans OLE32.DLL. On dirait que CoCreateGuid devrait être utilisé à la place. Voir: https://support.microsoft.com/en-us/kb/176790 –