Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2008, 10h09   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 9
Points : 0
Points : 0
Par défaut Champ automatique contenant un UUID ou un GUID compatible MySQL

Bonjour à tous
J'utilise Access pour effectuer des importations dans une BD MySQL.
Il est impératif que mon champ ID (clé primaire coté Access soit au format UUID standard selon la RFC.4122 (110E8400-E29B-11D4-A716-446655440000).
Est-ce que quelqu'un aurait une solution pour générer le contenu de ce champ à la création des enregistrements qui sont effectués par une macro TransférerFeuilleCalcul

Merci d'avance
Bonne journée à tous
webgabe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 15h56   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 661
Points : 6 228
Points : 6 228
Envoyer un message via MSN à argyronet
Bonjour,

Je ne pesne pas que tu puisse associer la fonction TransférerFeuilleCalcul() et la génération d'un GUID dans le même temps.
Il me semble qu'il est préférable de faire un Update dans ta table et de procéder au transfert ensuite...

Voici un code pour générer une telle chaîne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
Private Type GUID
    Data1                                   As Long
    Data2                                   As Integer
    Data3                                   As Integer
    Data4(7)                                As Byte
End Type
 
Private Declare Function CoCreateGuid Lib "OLE32.DLL" (pGuid As GUID) As Long
 
Public Function CreateGUID(Optional ByVal WithDelimiters As Boolean = True) As String
Dim udtGUID                                 As GUID
Dim strGUID                                 As String
 
    If (CoCreateGuid(udtGUID) = 0) Then
        strGUID = "{" & _
        String(8 - Len(Hex$(udtGUID.Data1)), "0") & Hex$(udtGUID.Data1) & "-" & _
        String(4 - Len(Hex$(udtGUID.Data2)), "0") & Hex$(udtGUID.Data2) & "-" & _
        String(4 - Len(Hex$(udtGUID.Data3)), "0") & Hex$(udtGUID.Data3) & "-" & _
        IIf((udtGUID.Data4(0) < &H10), "0", "") & Hex$(udtGUID.Data4(0)) & _
        IIf((udtGUID.Data4(1) < &H10), "0", "") & Hex$(udtGUID.Data4(1)) & "-" & _
        IIf((udtGUID.Data4(2) < &H10), "0", "") & Hex$(udtGUID.Data4(2)) & _
        IIf((udtGUID.Data4(3) < &H10), "0", "") & Hex$(udtGUID.Data4(3)) & _
        IIf((udtGUID.Data4(4) < &H10), "0", "") & Hex$(udtGUID.Data4(4)) & _
        IIf((udtGUID.Data4(5) < &H10), "0", "") & Hex$(udtGUID.Data4(5)) & _
        IIf((udtGUID.Data4(6) < &H10), "0", "") & Hex$(udtGUID.Data4(6)) & _
        IIf((udtGUID.Data4(7) < &H10), "0", "") & Hex$(udtGUID.Data4(7)) & "}"
    End If
    If IsMissing(WithDelimiters) Then
    Else
        If WithDelimiters = False Then
            strGUID = Replace(Replace(strGUID, "{", vbNullString), "}", vbNullString)
        End If
    End If
    CreateGUID = strGUID
End Function
Euh là comme ça au passage, quel rapport entre TransférerFeuilleCalcul et MySQL ?

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 10h40   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 9
Points : 0
Points : 0
Bonjour

Merci pour la réponse.

Pour info le rapport entre TransférerFeuilleCalcul et MySQL et le suivant :

J'utilise une solution de gestion de maintenance en PHP MySQL.
Afin de nourir l'applications et accessoirement en extraire du reporting, j'ai créé mon petit prog Access.
Pour effectuer les diverses importations d'objets (Locaux, équipements etc...) mes collégues me fournissent des listes au format Excel.
Je les importe dans ma BD Access, y ajoute les UUID, créé des liaisons parents-enfants entre les objets et ensuite les importe dans ma BD MySQL.

Bonne journée
webgabe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 10h52   #4
Invité de passage
 
Inscription : janvier 2008
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 9
Points : 0
Points : 0
reBonjour

Je suis vraiment à mes débuts Access donc je m'excuse d'avance de cette question.

Si je comprends bien, ta chaine de code me permettra de générer les GUID.

Donc je dois créer un module avec la chaine et ensuite une macro ou une requête pour effectuer l'Update de mon Champ avec le GUID ?

Serais-ce possible que lors de la création d'un enregistrement le champ GUID soit automatiquement rempli par un GUID ?

Ou comment ferais-tu ?
webgabe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 14h27   #5
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 661
Points : 6 228
Points : 6 228
Envoyer un message via MSN à argyronet
Oui cette fonction est faite pour cela.

Il faut qu'a chaque ajout d'une ligne dans ta base Access, le champ concerné se voit attribuer la valeur du GUID généré
par la fonction CreateGUID().

Je ne sais comment est contruite ta base mais en somme, il s'agit d'un greffage d'un GUID à un enregistrement donné, donc effectivement un Update. Une fois cela fait, tu exportes.

Tu peux aussi envisager de le faire depuis Excel (une fois le transfert effectué) en remplissant la colonne vide GUID par le biais de l'appel de cette même fonction (cette fois dans un module VBA Excel) dans un objet Range qui détermine le nombre de cellules à remplir.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h51.


 
 
 
 
Partenaires

Hébergement Web