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

Accès aux données Discussion :

[VB.Net] Comment insérer dans une BD ? [Fait]


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut [VB.Net] Comment insérer dans une BD ?
    Bonjour,

    Mon problème est simple : je n'arrive pas à insérer dans ma base.
    J'arrive à lire et à supprimer.
    Voici mon code :

    les paramètres envoyés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    insertion.inserer_projet("PROJET", _
       Me.TextBox_proj_nom.Text, Me.TextBox_proj_resp.Text, _
       Me.DateTimePicker_proj_crea.Value, Me.TextBox_proj_particip.Text, _
       Me.TextBox_proj_num.Text, Me.TextBox_proj_descrip.Text)
    la fonction qui traite :
    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
     
    Public Sub inserer_projet(ByVal table As String, _
        ByVal proj_nom As String, ByVal proj_resp As String, _
        ByVal proj_dat As Date, ByVal proj_particip As String, _
        ByVal proj_num As String, ByVal proj_desc As String)
     
        Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data
     Source=C:\Documents and Settings\...\maBase.mdb"
        Dim maConnexion As New OleDb.OleDbConnection(connectString)
     
        Try
                Dim laDate As Date
                laDate = proj_dat.ToShortDateString()
     
                Dim myCommand As New OleDb.OleDbCommand
     
                'ouverture de connexion BD
                maConnexion.Open()
     
                myCommand.Connection = maConnexion
     
                'initialisation de la requète
                myCommand.CommandText = "INSERT INTO " & table & _
     "(projet_id, projet_libelle,  projet_responsable, projet_date_crea,
     projet_particip, projet_num, projet_descriptif) VALUES (projet_id.nextval,
     "  + "'" + proj_nom + "'" + ", " + "'" + proj_resp + "'" + ", " _
     + laDate + ", " + "'" + proj_particip + "'" + ", " _
     + "'" + proj_num + "'" + ", " + "'" + proj_desc + "'" + ")"
     
     
                myCommand.ExecuteNonQuery()
     
        Catch ex As Exception
                MessageBox.Show(ex.Message.ToString, "Erreur",
     MessageBoxButtons.OK, MessageBoxIcon.Stop)
     
        Finally
                'fermeture connexion BD
                maConnexion.Close()
     
        End Try
    End Sub
    Le message d'erreur qui survient au moment de l'ExecuteNonQuery est :
    "aucune valeur donnée pour un ou plusieurs des paramètres requis."
    Je ne comprends pas bien son sens puisque mes champs/textbox ont bien des valeurs (j'ai vérifié).
    Si quelqu'un avait une idée, ça m'aiderait énormément ! Merci.

  2. #2
    Membre habitué Avatar de Angath
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 140
    Points : 174
    Points
    174
    Par défaut
    As tu essayé d'executer ta requete directement dans ta BDD, pour vérifier la syntaxe ?

    Sinon, vérifie le format de ton champ Date par rapport au format attendu par ta Bdd, ca pose toujours problème les dates dans les requêtes (de mémoire pour acces il faut mettre les champ Date entre des #, mais je travaille surtout avec SQL donc je peux me tromper)

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Sur le principe, je te conseillerai bien d'utiliser une requête paramétrée, histoire peut être d'y voir plus clair
    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
     
      ' Initialiser un tableau de OleDbParameter
      Dim parameters() As OleDbParameter
      parameters = New OleDbParameter(5){}
     
      parameters.SetValue(New OleDbParameter("nom", _
       Me.TextBox_proj_nom.Text),0)
      parameters.SetValue(New OleDbParameter("resp", _
       Me.TextBox_proj_resp.Text),1)
      parameters.SetValue(New OleDbParameter("dat", _
       Me.DateTimePicker_proj_crea.Value.ToShortDateString),2)
      parameters.SetValue(New OleDbParameter("particip", _
       Me.TextBox_proj_particip.Text),3)
      parameters.SetValue(New OleDbParameter("num", _
       Me.TextBox_proj_num.Text),4)
      parameters.SetValue(New OleDbParameter("desc", _
       Me.TextBox_proj_descrip.Text),5)
     
      ' Lancer l'insertion
      insertion.inserer_projet(parameters)
    puis modifier la signature de ta fonction
    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
    Public Sub inserer_projet(ByVal parameters As OleDbParameter())
     
        Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0; _
    Data Source=C:\Documents and Settings\...\maBase.mdb"
        Dim maConnexion As New OleDb.OleDbConnection(connectString)
     
        Dim query As String = "INSERT INTO PROJET(projet_id,projet_libelle, _
    projet_responsable,projet_date_crea,projet_particip,projet_num, _
    projet_descriptif) VALUES(projet_id.nextval,?,?,?,?,?,?)"
     
        Dim myCommand As OleDb.OleDbCommand = Nothing
        Dim param As OleDbParameter
     
        Try
                ' ne pas oublier d'assigner la connection et la requête
                myCommand As New OleDb.OleDbCommand(query,maConnexion)
     
                'initialisation de la requête
                For Each param In parameters
                   myCommand.Parameters.Add(param)
                Next
     
                ' ouvrir la connexion
                maConnexion.Open()
     
                ' executer la requête
                myCommand.ExecuteNonQuery()
     
        Catch ex As Exception
                MessageBox.Show(ex.ToString(), "Erreur", _
     MessageBoxButtons.OK, MessageBoxIcon.Stop)
        Finally
                'fermeture connexion BD
                maConnexion.Close()
        End Try
     
    End Sub
    à tester car je ne l'ai pas fait et me suis simplement appuyer sur une réponse récente que j'ai faite
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    je débute en vb.net, et en vb tout court d'ailleurs alors je m'excuse d'avance si mes questions vous paraissent élémentaires ou vous désespèrent.

    donc merci pour vos conseils, j'ai compris le principe de la solution de nequib ...
    ... mais par quelle "valeur" dois-je remplacer les " ? " : par des @... ?

    les @... sont dans une autre classe, j'ai essayé de préfixer par son nom mais il ne reconnait pas le sigle @ dans la classe des requetes.

    si vous aviez une petite idée ... elle serait la bienvenue

    encore merci ...

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par zzzmoi
    je débute en vb.net, et en vb tout court d'ailleurs alors je m'excuse d'avance si mes questions vous paraissent élémentaires ou vous désespèrent.

    donc merci pour vos conseils, j'ai compris le principe de la solution de nequib ...
    ... mais par quelle "valeur" dois-je remplacer les " ? " : par des @... ?

    les @... sont dans une autre classe, j'ai essayé de préfixer par son nom mais il ne reconnait pas le sigle @ dans la classe des requetes.

    si vous aviez une petite idée ... elle serait la bienvenue

    encore merci ...
    As-tu été voir la doc MSDN de la Classe OleDbParameter
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Débutant Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Points : 152
    Points
    152
    Par défaut
    neguib tu peu me situer les avantages des requêtes paramètre,
    Et merci de nous indiquer un Tutorial concerner les requêtes paramétrer.
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde"

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par amazircool
    neguib tu peu me situer les avantages des requêtes paramètre,
    Et merci de nous indiquer un Tutorial concerner les requêtes paramétrer.
    Plus rapides et plus sécurisées, pour un tuto spécifique au client SQLServer il y a celui de Webman chez nous Requêtes paramétrées avec SQL Server et .Net , sinon à partir du lien mis dans mon message précédent MSDN n'est pas avare d'informations
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 28/10/2009, 16h19
  2. Réponses: 1
    Dernier message: 15/05/2006, 18h43
  3. Réponses: 3
    Dernier message: 11/12/2005, 11h15
  4. [VB.Net] Comment stocker un .doc dans une BDD ?
    Par SergeF dans le forum Contribuez
    Réponses: 8
    Dernier message: 12/10/2005, 12h43

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