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 :

Problème : insertion dans une BDD ACCESS avec VB


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Par défaut Problème : insertion dans une BDD ACCESS avec VB
    Bonjour,

    Je me suis mis depuis peu à VB, et je rencontre des problemes pour l'insertion de données dans une base de donnée access en .mdb.

    Je fonctionne avec VISUAL BASIC 6.0 et WINDOWS XP.

    Mon formulaire VB est simple, il contient des contrôles text, des contrôles option et un bouton "enregistrer" pour pouvoir enregistrer les données dans la base une fois le formulaire rempli.

    Après plusieurs heures de recherche, voici à quoi ressemble mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Load()
    Dim Cnn1 As ADODB.Connection
    Set Cnn1 = New ADODB.Connection
    Cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=maBase.mdb ;User Id=Admin; Password="
    End Sub
     
    Private Sub cmdEnregistrer_Click()
    Dim MonRs As ADODB.Recordset
    Set MonRs = Cnn1.Execute("INSERT INTO plante VALUES('ortie','ca pique','18','40','30','calcaire','verte','1','1','1','ortie.JPG'")
    End Sub
    Le problème est le suivant : lorsque j'execute le code, j'optient un message d'erreur à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Cnn1 As ADODB.Connection
    Le message d'erreur est le suivant : " compil error : User-defined type not defined".

    Ma question est donc : d'où vient l'erreur ? aurais-je oublié quelque chose ?

    J'attends vos réponses, merci d'avance.

  2. #2
    Membre confirmé Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Par défaut
    Cela me paraît clair : tu n'as pas chargé la librairie qui va bien. Va dans Projet, puis Références et ajoute la libraire ActiveX Data Object 2.0.

    Va également voir ce post : cela te sera utile

    bonne continuation =)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Par défaut
    Tout d'abord merci pour ta réponse.

    Effectivement, il fallait inclure la librairie que tu as cité. Ce problème est résolu, je te remercie.

    J'ai également été voir le post que tu as mis en lien, il m'a beaucoup aidé.
    Je m'en suis inspiré et j'ai modifié mon code. Il ressemble maintenant à ça :

    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
    'declaration des variables
    Dim Cnn1 As ADODB.Connection
    Dim MonRs As ADODB.Recordset
    'connexion a la base
    Set Cnn1 = New ADODB.Connection
    Cnn1.CursorLocation = adUseClient: Cnn1.Mode = adModeReadWrite
    Cnn1.Provider = "Microsoft.Jet.OLEDB.4.0"
    Cnn1.ConnectionString = "plante.mdb"
    Cnn1.Open
    'ouverture de la table
    Set MonRs = New ADODB.Recordset
    MonRs.Open plante, Cnn1
    'enregistrement dans la table
    MonRs.AddNew
    MonRs![nom] = "ortie"
    MonRs![Description] = "ca pique"
    MonRs![Temperature] = 18
    MonRs![humidite] = 35
    MonRs![ensoleillement] = 40
    MonRs![terre] = "humifère"
    MonRs![terre] = "verte"
    MonRs![eng_fong] = 1
    MonRs![eng_nat] = 1
    MonRs![eng_chim] = 1
    MonRs![Image] = "image\ortie.JPG"
    MonRs.Update
    'fermeture de la table
    MonRs.Close
    Set MonRs = Nothing
    'fermeture de la base
    Cnn1.Close
    Set Cnn1 = Nothing
    Hélas, lorsque je l'execute, j'obtiens l'erreur suivante :

    " Run-Time error '3001' : Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres. "

    à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open plante, Cnn1
    Je ne comprends pas très bien cette erreur. Que s'ignifie-t-elle ? Que dois-je modifier ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyste développeur VB6, SQL, VB.NET, C#
    Inscrit en
    Avril 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste développeur VB6, SQL, VB.NET, C#
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2003
    Messages : 111
    Par défaut
    bonjour,

    - comparer les champs des tables utilisés dans ton code avec ceux de la table de la base de données
    - contrôler le type et la taille des champs avec les valeurs que tu essaies d'insérer (insérer du texte dans un champ numérique posera des problèmes)

    cdlt,

  5. #5
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    plante, c'est quoi ? Le nom de ta base, mais aussi de la table ?

    Ce ne serait pas plutot ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open "plante", Cnn1

  6. #6
    Membre confirmé Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Par défaut
    le nom de la table doit être de la forme string...

    soit tu la met dans une variable de type string, soit tu utilises des " ".

    bonne continuation =)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Par défaut
    J'ai vérifié le nom de tous mes champs, ainsi que leur type et la taille des données insérées. Tout concorde avec ma base de données, le problème ne semble pas venir de là.

    J'ai modifé le ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open plante, Cnn1
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open plante, Cnn1, adOpenStatic, adLockPessimistic
    pour la faire ressembler au post mis en lien dans la réponse ci-dessus.

    L'erreur est toujours la même, le programme plante lorsuq'il arrive à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open plante, Cnn1, adOpenStatic, adLockPessimistic
    Une autre idée ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Par défaut
    Pile dessus !

    Effectivement, plante est le nom de ba base ET de ma table.

    Le probleme venait bien du fait que j'ai oublié de mettre des guillement à plante.

    la ligne incorrecte était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open plante, Cnn1, adOpenStatic, adLockPessimistic
    Je l'ai modifé en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open "plante", Cnn1, adOpenStatic, adLockPessimistic
    Et là ca fonctionne. L'enregistrement c'est effectué dans ma BDD.

    Merci beaucoup pour vos réponses, elle m'ont bien airdé.

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

Discussions similaires

  1. Problème d'insertion dans une BDD Access
    Par ikram0 dans le forum JDBC
    Réponses: 8
    Dernier message: 05/05/2015, 10h52
  2. probleme d'insertion dans une BDD Access
    Par bellak dans le forum Windows Forms
    Réponses: 15
    Dernier message: 17/09/2008, 14h54
  3. [VB6/mysql]:Problème d'insertion dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/06/2006, 10h15
  4. insertion d'un champs dans une bdd access
    Par pepper18 dans le forum SGBD
    Réponses: 1
    Dernier message: 26/05/2006, 19h47
  5. Comment créer une Table dans 1 Bdd ACCESS avec Builder??
    Par makandja dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/03/2004, 20h21

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