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 :

utilisation ADO pour créer une Base de Donnée vide


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut utilisation ADO pour créer une Base de Donnée vide
    Salut tout le monde.
    je suis entrain de développer une application avec visual basic 6.0 qui fait appel à une base de données grace au contrôle ADO. Cette application permet de faire une évaluation et donner une conclusion pour chaque registre qui représente une fiche d'évaluation.
    Dans le cas d'une base de données existante le problème est résolu, par contre dans le cas ou je veut créer une nouvelle base de donnée mais avec les même champs mais vide, je n'arrive pas a trouver l'astuce.
    Est ce qu'il y a une possibilité de créer une nouvelle base de donnée avec les même champs et leur propriétés mais totalement vide pour la remplir ?

    merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Citation Envoyé par laribi71 Voir le message
    une application avec visual basic 6.0 qui fait appel à une base de données...
    Soit mais laquelle ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Re
    Je m'explique autrement. Estce qu'il est possible de créer grace an contrôle ADO une nouvelle base de données qui a les mêmes champs et les mêmes propriétés d'un autre fichier de base de données existant ?
    merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par Phifi Voir le message
    Soit mais laquelle ?

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Pas de chance, boule de cristal HS

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Bonjour ttle monde et bon début de semaine.
    Je sent que ma question n'est pas claire. J'essaye d'être le plus claire possible.
    Sur une form VB6.0, j'ai créé un menu. Dans le menu Fichier, j'ai nouveau (création d'une nouvelle base de données) et ouvrir (une base existante). Alors Comment on peut créer une nouvelle base de données avec des champs, et leurs propriétés en appuyant sur nouveau. merci.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Ahrgg..., la question posée est quelle base de données ? Acces? Oracle? SqlServer ? ou tout autre chose ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Re
    c'est une base de donées Ms Access.
    A+

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut


    Vas plutôt voir du coté de DAO et de la méthode CreateDatabase, je ne sais pas si c'est possible directement avec ADO.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je ne suis pas un cador en ADO, mais je me defends avec DAO.
    Voici un extrait de programme que j'utilise pour genere une nouvelle base à partir d'une autre
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    Public Function CopyBase(BaseName As String, TempBaseName As String, Optional lblRapport As Label = Nothing) As Boolean
      CopyBase = True
      Dim iRet As Integer
      Dim DbOrg As Database
      Dim DbDest As Database
      Dim TbDefOrg As TableDef
      Dim TbDefDest As TableDef
      Dim IdxOrg As Index
      Dim IdxDest As Index
      Dim FldOrg As Field
      Dim FldDest As Field
      Dim Attached As Boolean
      Dim PrpOrg As Property
      Dim PrpDest As Property
      Dim strIndex As String
      Dim iPntIndex As Integer
      Dim tbleIndexes As Variant
     
      Dim Sql As String
      Dim QryOrg As QueryDef
      Dim QryDest As QueryDef
     
      On Error GoTo Erreur
      Set DbDest = CreateDatabase(TempBaseName, dbLangGeneral, dbVersion40)
      DbDest.Close
     
      Set DbOrg = OpenDatabase(BaseName, False, False)
      Set DbDest = OpenDatabase(TempBaseName, False, False)
      'mettre à jour les proprétes de la base
      If lblRapport Is Nothing Then
        'nop
      Else
        lblRapport = "Transfert des propriètés"
        DoEvents
      End If
      For Each PrpOrg In DbOrg.Properties
        On Error Resume Next
        If PrpOrg.Name = "DesignMasterID" Or PrpOrg.Name = "AccessVersion" Then
          'nop
        Else
          Set PrpDest = DbDest.CreateProperty(PrpOrg.Name, PrpOrg.Type, PrpOrg.Value)
          DbOrg.Properties.Append PrpDest
        End If
        On Error GoTo 0
      Next
      For Each TbDefOrg In DbOrg.TableDefs
          If (TbDefOrg.Attributes And dbSystemObject) = 0 Then
            If (TbDefOrg.Attributes And dbAttachedTable) = dbAttachedTable Then
              Attached = True
            ElseIf (TbDefOrg.Attributes And dbAttachedODBC) = dbAttachedODBC Then
              Attached = True
            Else
              Attached = False
            End If
            If lblRapport Is Nothing Then
              'nop
            Else
              lblRapport = "convertion table " & IIf(Attached, "attachée ", "") & TbDefOrg.Name
              DoEvents
            End If
            If Attached Then
              Set TbDefDest = DbDest.CreateTableDef(TbDefOrg.Name)
              TbDefDest.Connect = TbDefOrg.Connect
              TbDefDest.SourceTableName = TbDefOrg.SourceTableName
              DbDest.TableDefs.Append TbDefDest
              For Each IdxOrg In TbDefOrg.Indexes
                tbleIndexes = Split(IdxOrg.Fields, ";")
                strIndex = ""
                For iPntIndex = 0 To UBound(tbleIndexes)
                  If Left(tbleIndexes(iPntIndex), 1) = "+" Then
                    strIndex = strIndex & Mid(tbleIndexes(iPntIndex), 2) & ","
                  Else
                    strIndex = strIndex & Mid(tbleIndexes(iPntIndex), 2) & " DESC ,"
                  End If
                Next
                strIndex = Left(strIndex, Len(strIndex) - 1)
                On Error Resume Next
                If IdxOrg.Unique Then
                  DbDest.Execute "Create unique Index [" & IdxOrg.Name & "] on [" & TbDefOrg.Name & "] (" & strIndex & ") "
                Else
                  DbDest.Execute "Create  Index [" & IdxOrg.Name & "] on [" & TbDefOrg.Name & "] (" & strIndex & ") "
                End If
                On Error GoTo 0
              Next
            Else
              Set TbDefDest = DbDest.CreateTableDef(TbDefOrg.Name)
              'charger les fields de la table
              For Each FldOrg In TbDefOrg.Fields
                Set FldDest = TbDefDest.CreateField(FldOrg.Name, FldOrg.Type, FldOrg.Size)
                FldDest.Attributes = FldOrg.Attributes
                FldDest.DefaultValue = FldOrg.DefaultValue
                FldDest.OrdinalPosition = FldOrg.OrdinalPosition
                TbDefDest.Fields.Append FldDest
              Next
              'charger le propriétés de la base
              For Each PrpOrg In TbDefOrg.Properties
                On Error Resume Next
                If PrpOrg.Name = "ConflictTable" Or PrpOrg.Name = "ReplicaFilter" Then
                  'nop
                Else
                  Set PrpDest = TbDefDest.CreateProperty(PrpOrg.Name, PrpOrg.Type, PrpOrg.Value)
                  TbDefDest.Properties.Append PrpDest
                End If
                On Error GoTo 0
              Next
              'charger les index
              For Each IdxOrg In TbDefOrg.Indexes
                Set IdxDest = TbDefDest.CreateIndex(IdxOrg.Name)
                IdxDest.Unique = IdxOrg.Unique
                IdxDest.Primary = IdxOrg.Primary
                For Each FldOrg In IdxOrg.Fields
                  Set FldDest = IdxDest.CreateField(FldOrg.Name)
                  FldDest.Attributes = FldOrg.Attributes
                  IdxDest.Fields.Append FldDest
                Next
                On Error Resume Next
                TbDefDest.Indexes.Append IdxDest
                On Error GoTo 0
              Next
              DbDest.TableDefs.Append TbDefDest
              'transferer les datas à mettre en remarque si on veut une base vide
              DbDest.Execute "insert  into [" & TbDefDest.Name & "] " & _
                             "select * from [" & TbDefDest.Name & "] " & _
                             "in '" & BaseName & "'"
     
            End If
          End If
      Next
      'transfert des requêtes
      For Each QryOrg In DbOrg.QueryDefs
        If lblRapport Is Nothing Then
          'nop
        Else
          lblRapport = "Transfert requête " & QryOrg.Name
        End If
        'Sql = QryOrg.Sql
        Set QryDest = DbDest.CreateQueryDef(QryOrg.Name, QryOrg.Sql)
      Next
      If lblRapport Is Nothing Then
        'nop
      Else
        lblRapport = "Convertion terminée "
      End If
      DbOrg.Close
      DbDest.Close
      Exit Function
    Erreur:
     CopyBase = False
    End Function
    En fait ce module me sert pour paser une base en ACCESS97 vers ACCESS2000

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Pour compléter, MS propose une méthode complète de réplication de structure :
    http://support.microsoft.com/kb/108147/fr

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Re Phifi
    J'ai essayé le support que tu viens de me le passé. J'ai créer une form, sur cette dernier j'ai inséré un contrôle command1 et j'ai insérer le code, une fois exécuté, j'ai reçu le message suivant :
    Erreur de compilation
    Type défini par l'utilisateur non défini.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Command1_Click()
          Dim dbsource As Database
          Dim dbdest As Database
          ' The following hard-coded database names could be changed to
          ' selections from a text box, list box, or combo box to make the
          ' program more generic:
          Set dbsource = OpenDatabase("E:\projets\Visual Basic 6.0\Préparation\Base de données pour test\Post-Earthquake.mdb", True, True)
          Set dbdest = OpenDatabase("E:\projets\Visual Basic 6.0\Préparation\Base de données pour test\test1.mdb", True, False)
          Print CopyStruct(dbsource, dbdest, "evaluation", "cevaluation", True)
          Print CopyData(dbsource, dbdest, "evaluation", "cevaluation")
          dbsource.Close
          dbdest.Close
       End Sub

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Attention c'est en DAO, tu as la bonne référence ? (Microsoft DAO x.x Object Library)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Citation Envoyé par Phifi Voir le message
    Pour compléter, MS propose une méthode complète de réplication de structure :
    http://support.microsoft.com/kb/108147/fr
    Et moi une methode complète de replication de la base , héhé

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Bonsoir tt le monde
    Je suis arrivé finalement à créer une base de données gràce au code suivant :

    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
    Private Sub mnFicNou_Click()
    Dim NomFichier As String
    NomFichier = InputBox("Introduire le nom du fichier", "Nom")
    If Dir("e:\" & NomFichier & ".mdb") <> "" Then
        Kill "e:\" & NomFichier & ".mdb"
    End If
     
    Set W = DBEngine.Workspaces(0)
    Set BD = W.CreateDatabase("e:\" & NomFichier & ".mdb", dbLangGeneral)
        Set T = BD.CreateTableDef("Evaluation")
            Set F = T.CreateField("N_Client", dbLong, 8)
        T.Fields.Append F
            Set F = T.CreateField("Adresse", dbText, 20)
        T.Fields.Append F
            Set F = T.CreateField("Usage", dbText, 20)
        T.Fields.Append F
            Set F = T.CreateField("Age", dbDate)
        T.Fields.Append F
        BD.TableDefs.Append T
       BD.Close
        End Sub
    J'ai inséré ensuite sur la forme des contrôles textbox et un contrôle adodc pour l'introduction des données, malheureusement je n'arrive pas à introduire dans les champs de la table des données. Quelque peut me guider car je suis un peu perdu. er merci

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Bonjour tout le monde.
    Il n 'y a personne pour m'orienter .
    Amicalement

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Rebonjour
    je suis toujours en attente d'une solution ou d'une astuce afin d'avancer.
    cordialement

  18. #18
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut
    Je n’ai jamais créé de BD par code, copie avec chamgement de nom oui, mais ….

    Apres la création de la table et des champs souhaités (BD.CreateTableDef("Evaluation") …. CreateField("Adresse", dbText, 20) …. CreateField("N_Client", dbLong, 8) …) tu fermes avec BD.Close) .

    Donc, apres cette création

    connection à la BD
    Set BD= New ADODB.Connection
    BD.CursorLocation = adUseClient
    BD.Mode = adModeReadWrite
    BD.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source= " & CheminNomDelabase & ";"

    ouvres la table
    MeTable = New ADODB.Recordset
    MeTable.Open Evaluation, BD, , , adCmdTable

    demandes l’ajout d’un enregistrement
    MeTable.AddNew

    renseignes les champs,
    MeTable! N_Client = 8 : MeTable! Adresse = "Ce que tu veux" ....

    puis enregistres
    MeTable.Update

    tu fermes le Recordset
    MeTable.Close

    et enfin tu fermes la connection
    BD.Close

Discussions similaires

  1. Modélisation MERISE pour créer une base de donnée ?
    Par Mika2008 dans le forum NetBeans
    Réponses: 3
    Dernier message: 20/02/2010, 12h28
  2. Probleme pour créer une base de données
    Par za_za dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/07/2009, 18h32
  3. [AC-2007] Comment débuter pour créer une base de données.
    Par ma3972 dans le forum Modélisation
    Réponses: 6
    Dernier message: 14/07/2009, 14h18
  4. Quelles solutions pour créer une Bases de données géographiques ?
    Par subzero82 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 25/11/2007, 21h45
  5. Réponses: 12
    Dernier message: 05/03/2007, 10h36

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