IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

crees des relation access en vb6


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut crees des relation access en vb6
    bonsoir, je travail actuellement sur une basse de données.je suis en vb6 et access2007, et j'utilise ado. et j'aimerais crées une relation entre plusieur table de ma basse de données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     Dim cat As New adox.Catalog
     Dim tbl As New adox.Table
     Dim key As New adox.key
     Dim Field As New adox.Column
     
    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\bdd\essaie.accdb"
     
        Set tbl = New adox.Table
        tbl.Name = "table1"
        Field.Name = "numero"
        With Field
        .ParentCatalog = cat 'Rattachement au catalogue ouvert
        .Type = adInteger ' un autoIncrément est entier long
        .Properties("Autoincrement") = True 'Propriété autoincrément pour NumériqueAuto
        End With
        tbl.Columns.Append Field
        tbl.Columns.Append "nom", adVarWChar, 150
        tbl.Columns.Append "departement", adVarWChar, 150
        tbl.Columns.Append "code_postal", adInteger
       cat.Tables.Append tbl
     
     
    Set key = New adox.key
        With key
            .Name = "PrimaryKey"
            .Type = adKeyPrimary
            .RelatedTable = "table1"
            .Columns.Append "nom"
        End With
        cat.Tables("table1").Keys.Append key
    et idem pour les autre champs.mais je trouve pas la bonne methode pour pour crées les relation. alors si vous avez un bon tutoriaux a me soumettre ou un bout de code je suis preneur. merci et bonne soirée

  2. #2
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Je ne connais pas bien ADO
    Par si tu veux bien utiliser DAO, j'ai çà dans mes cartons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    Public Function StCreatRelation(BaseName As String, TablePrinc As String, TableSec As String, Champs As String, ChampsSec As String, Unique As Boolean, CascadeUpdate As Boolean, CascadeDelete As Boolean)
        'création d'une relation d'integerité référentielle
        'BaseName  = nom de la base
        'TablePrinc = nom de la table principale
        'TableSec = nom de la table secondaire
        'Champ = Nom du champs sur le quel porte la relation
        '       (Nb: avec cette routine le chanmp doit exister dans les deux table avec le même nom)
        'Unique Si true => Relation 1 à 1
        '       Si False => Relation 1 à plusieurs
        'CascadeUpdate  Si true => mise à jour du contenu du chanmp dans la table secondaire
        'CascadeDelete  Si true => supression en cascade de tous les enregistrements connexes dans la table secondaire
      Dim Dbse As dao.Database
      Dim Rel As dao.Relation
      Dim Fld As dao.Field
      Dim Attr As Long
      Dim iPosit1 As Integer
      Dim iPosit2 As Integer
      Dim iTest As Integer
      Dim RelationName As String
      Set Dbse = dao.OpenDatabase(BaseName, False, False, GetPassWord(BaseName))
      Attr = 0
      If Unique Then
        Attr = Attr + dbRelationUnique
      End If
      If CascadeUpdate Then
        Attr = Attr + dbRelationUpdateCascade
      End If
      If CascadeDelete Then
        Attr = Attr + dbRelationDeleteCascade
      End If
      On Error GoTo Suivre
    Encore:
      RelationName = Left$("z" & Trim(TablePrinc) & "~" & Trim(TableSec) & "~" & Champs, 64)
      Set Rel = Dbse.Relations(RelationName)
      ' si on est ici c'est que la relation existe déjà
      ' si non on est en erreur et on passe dans suite
      Set Rel = Nothing
      Dbse.Close
      StCreatRelation = 0
      DoEvents
      Exit Function
    Suivre:
      Resume Suite
    Suite:
      Set Rel = Dbse.CreateRelation(RelationName, TablePrinc, TableSec, Attr)
      Rel.Attributes = Attr
      iPosit1 = InStr(Champs, ",")
      While iPosit1 > 0
        Set Fld = Rel.CreateField(Left$(Champs, iPosit1 - 1))
        Champs = Mid$(Champs, iPosit1 + 1)
        iPosit2 = InStr(ChampsSec, ",")
        Fld.ForeignName = Left$(ChampsSec, iPosit2 - 1)
        ChampsSec = Mid$(ChampsSec, iPosit2 + 1)
        iPosit1 = InStr(Champs, ",")
        Rel.Fields.Append Fld
      Wend
      Set Fld = Rel.CreateField(Champs)
      Fld.ForeignName = ChampsSec
      Rel.Fields.Append Fld
      On Error GoTo ErrCreatRel
      Dbse.Relations.Append Rel
      On Error GoTo 0
      StCreatRelation = 0
    Sortie:
      Dbse.Close
      DoEvents
      Exit Function
    ErrCreatRel:
      StCreatRelation = -1
      MsgBox "Erreur n° " & Str$(Err) & vbCrLf & _
                    Err.Description & vbCrLf & _
                    vbCrLf & _
                    "Relation entre " & TablePrinc & " et " & TableSec & vbCrLf & _
                    Champs & vbCrLf & _
                    ChampsSec, vbCritical
      Resume Sortie
    End Function

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    salut Delbeke, je te remercie de ta réponse. mais je voudrais savoir si je pouvais utiliser dao pour crée ma ma basse de donné et les relation et utilisé ado pour le reste. car le reste du programme est en ado et je voudrait évitez les message d'erreur.

    form1 : vérification de la présence de la basse de données , si pas création de la base de donnée



    form2 : traitement des données, enregistrement, suppression et tous se qui va avec.

    voila la quetion.
    1) doit je passer en dao uniquement dans ce cas je doit modifier mon programmes

    2) utiliser ado et dao

    3) utiliser ado est crée une requete sql que je n'ai pas encore trouvée ( car
    cela est possible par sql)

    encore une petit question ou je peut trouver le tableau avec les propriété d'access ex : interdire les doublons, note ...etc

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 140
    Par défaut
    1) non
    2) oui, une BD accsess et manipulable par ADO et/ou DAO, mais il est vraie, que pour les habitudes de chacun, on essait de ne pas mélanger les 2 outils.
    3) oui, pour ADO (mon outils habitudel pour les BDs) tu peux passer une requette SQL, il serait étonnant qu'avec DAO sela ne soit pas possible.
    encore une petit question ou je peut trouver le tableau avec les propriété d'access
    quand tu a fait reference à l'outils de manipulation de BDs, les touches F2 et F1 te permetent d'avoir toutes ces infos, trop longue a developper ici (pas le lieux non plus).
    Tournes toi aussi sur les nombreux TUTOs, une mine d'informations.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je viens mettre mon petit grain de sel, étant principalement développeur sous Access, je préviligie DAO qui est le mieux implanté.

    L'avantage de DAO c'est qu'il est vraiment fait pour Access, quand à ADO (que je dénigre pas au contraire), je préfère l'utiliser pour les autres types de bases de données.

    Par contre, je suis d'accord avec ProgElecT il faut mieux éviter d'utiliser les deux bibliothèques dans une même base, car même si des propriétés ont les mêmes noms, leur comportement peut-être différent. De plus il faut faire attention dans tes déclarations à bien nommé tes objets, un recordset DAO aura un comportement légèrement différent et certaines propriétés sont différentes qu'un recordset ADO.

    Tu as d'excellent article sur DAO et ADO sur les pages cours VB et Access, n'hésite pas à les consulter.

    Je connais moins ADO que DAO, mais il faut utiliser plusieurs bibliothèques pour ADO et une seule pour DAO pour faire la même chose.

    Cela ne répondra peut-être pas à toutes tes questions, mais concentre toi sur une seule technologie.

    Starec

  6. #6
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut crees des relation access vb6
    Un grand merci a vous trois pour m'avoir donner au temps, avec temps de précicions.

    mais encore une simple question est ce dao peut supporter une gros basse de données et quel sont les problèmes quel l'ont peut rencontrer( ex : temps de chargement long, ou autre ).

    merci de votre aide, et de m'avoir allumer une lumière dans un couloir si sombre qui et la programmation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [vb6 access]liste des relation entre les tables
    Par bailamos dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/02/2009, 16h16
  2. Gestion des relations dans access
    Par jcaspar dans le forum Modélisation
    Réponses: 2
    Dernier message: 27/11/2007, 12h14
  3. Conversion des codes VBA Access en VB6
    Par cokouT dans le forum Access
    Réponses: 1
    Dernier message: 23/11/2006, 09h52
  4. [VB6]Utilisation des formulaires Access dans VB6
    Par AurelieB dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/05/2006, 07h48
  5. affichage des relations, access 2003
    Par mamoure31 dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2006, 06h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo