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 :

[ADO, Access]_Paramètre ?_2 n'a pas de valeur par défaut?


Sujet :

Accès aux données

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Points : 270
    Points
    270
    Par défaut [ADO, Access]_Paramètre ?_2 n'a pas de valeur par défaut?
    Bonsoir,

    Voilà mon soucis: J'ai un soucis au moment de l'update de mon dataset

    J'ai un formulaire contenant un datagridview ayant pour source un dataset.
    Je charge le dataset avec un DataAdapter. Le formulaire et le Datagridview se charge bien, je retrouve les enregistrements (entrés manuellement dans ma table access).
    Au moment de l'update, objDataAdapter.Update(objDataSet, strTable), j'obtiens l'erreur: [ADO, Access]_Paramètre ?_2 n'a pas de valeur par défaut?. Si je place un point d'arrêt sur la ligne update et que je regarde le dataset, il contient les bonnes valeurs (type, cellules non vides,...)

    Comment savoir de quel paramètre il s'agit ?

    J'ai posté un peu vite, je viens de voir ce post:
    http://www.developpez.net/forums/sho...am%E8tre+%3F_2
    Mais pour ma défense , mon DataAdapter est créé en copiant le code générer par le Dataset.Designer.vb
    ' > Dans l'explorateur de solutions, sélectionner "Afficher tous les fichiers"
    ' > Créer un élément "DataSet" au projet
    ' > Insérer la table du DataAdapter à créer
    ' > Afficher le code de "DataSet.Designer.vb" (sous élément de l'élément "DataSet")
    ' > Rechercher "Private Sub InitAdapter()"
    ' > Copier/Coller l'ensemble du sub dans la classe et l'adapter
    ' > Adapter l'ensemble


    Ma table Tbl_Plein contient:
    - ID_Plein
    - ID_TblVehicule
    - DatePlein
    - Kilometrage
    - Quantite

    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
      Private Function CreerDataAdapter(Optional ByVal strFiltreTrie As String = "") As OleDbDataAdapter
     
            Dim objDataAdapter As New OleDbDataAdapter
            Dim tableMapping As New Common.DataTableMapping
     
            Try
     
                ' Mapping de la table
                tableMapping.SourceTable = "Tbl_Plein"
                tableMapping.DataSetTable = "TblPlein"
                tableMapping.ColumnMappings.Add("ID_Plein", "ID_Plein")
                tableMapping.ColumnMappings.Add("ID_TblVehicule", "ID_TblVehicule")
                tableMapping.ColumnMappings.Add("DatePlein", "Date du plein")
                tableMapping.ColumnMappings.Add("Kilometrage", "Kilométrage")
                tableMapping.ColumnMappings.Add("Quantite", "Quantité")
                objDataAdapter.TableMappings.Add(tableMapping)
     
                ' SELECTCOMMAND
                objDataAdapter.SelectCommand = New OleDb.OleDbCommand
                'objDataAdapter.InsertCommand.Connection = objConnexion
                objDataAdapter.SelectCommand.CommandText = "SELECT Tbl_Plein.* FROM Tbl_Plein " & strFiltreTrie
                objDataAdapter.SelectCommand.CommandType = CommandType.Text
     
                ' INSERTCOMMAND 
                objDataAdapter.InsertCommand = New OleDb.OleDbCommand
                'objDataAdapter.InsertCommand.Connection = objConnexion
                objDataAdapter.InsertCommand.CommandText = "INSERT INTO Tbl_Plein (ID_TblVehicule, DatePlein, Kilometrage, Quantite)" & _
                                                            "VALUES (?, ?, ?, ?)"
                objDataAdapter.InsertCommand.CommandType = CommandType.Text
                objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Current, False, Nothing))
                objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Current, False, Nothing))
                objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Current, False, Nothing))
                objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Current, False, Nothing))
     
                ' UPDATECOMMAND
                objDataAdapter.UpdateCommand = New OleDb.OleDbCommand
                'objDataAdapter.UpdateCommand.Connection = objConnexion
                objDataAdapter.UpdateCommand.CommandText = "UPDATE Tbl_Plein" & _
                                                            " SET ID_TblVehicule = ?, DatePlein = ?, Kilometrage = ?, Quantite = ?" & _
                                                            " WHERE ((ID_Plein = ?)" & _
                                                            " AND ((? = 1 AND ID_TblVehicule IS NULL) OR (ID_TblVehicule = ?))" & _
                                                            " AND ((? = 1 AND DatePlein IS NULL) OR (DatePlein = ?))" & _
                                                            " AND ((? = 1 AND Kilometrage IS NULL) OR (Kilometrage = ?))" & _
                                                            " AND ((? = 1 AND Quantite IS NULL) OR (Quantite = ?)))"
                objDataAdapter.UpdateCommand.CommandType = CommandType.Text
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Current, False, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Current, False, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Current, False, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Current, False, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_ID_Plein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_Plein", DataRowVersion.Original, False, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Original, True, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Original, False, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_DatePlein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Original, True, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Original, False, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Original, True, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Original, False, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Original, True, Nothing))
                objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Original, False, Nothing))
     
                ' DELETECOMMAND
                objDataAdapter.DeleteCommand = New OleDb.OleDbCommand
                'objDataAdapter.DeleteCommand.Connection = objConnexion
                objDataAdapter.DeleteCommand.CommandText = "DELETE FROM Tbl_Plein" & _
                                                            " WHERE ((ID_Plein = ?)" & _
                                                            " AND ((? = 1 AND ID_TblVehicule IS NULL) OR (ID_TblVehicule = ?))" & _
                                                            " AND ((? = 1 AND DatePlein IS NULL) OR (DatePlein = ?))" & _
                                                            " AND ((? = 1 AND Kilometrage IS NULL) OR (Kilometrage = ?))" & _
                                                            " AND ((? = 1 AND Quantite IS NULL) OR (Quantite = ?)))"
                objDataAdapter.DeleteCommand.CommandType = CommandType.Text
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_ID_Plein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_Plein", DataRowVersion.Original, False, Nothing))
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Original, True, Nothing))
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Original, False, Nothing))
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_DatePlein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Original, True, Nothing))
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Original, False, Nothing))
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Original, True, Nothing))
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Original, False, Nothing))
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Original, True, Nothing))
                objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Original, False, Nothing))
     
            Catch ex As Exception
                MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Stop)
     
            End Try
     
            Return objDataAdapter
     
        End Function
    Merci d'avance pour le coup de main.

    Gdal

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Points : 270
    Points
    270
    Par défaut
    Salut,

    Voici la réponse au problème:
    J'ai renommé les colonnes datasetColumn dans tableMapping.ColumnMappings.Add, sans renommer sourceColumn dans ".Parameters.Add"

    Maintenant sa fonctionne.

    ' Création facile du DataAdapter
    ' > Dans l'explorateur de solutions, sélectionner "Afficher tous les fichiers"
    ' > Créer un élément "DataSet" au projet
    ' > Insérer la table du DataAdapter à créer
    ' > Afficher le code de "DataSet.Designer.vb" (sous élément de l'élément "DataSet")
    ' > Rechercher "Private Sub InitAdapter()"
    ' > Copier/Coller l'ensemble du sub dans la classe et l'adapter
    ' > Adapter l'ensemble:
    ' >> Me._adapter devient objDataAdapter
    ' >> Me.Connection " objConnexion
    ' >> System.Data. " SUPPRIMER
    ' >> ` " SUPPRIMER
    ' >> Mettre en commentaire les lignes "objConnexion"
    ' >> Réordonner les requêtes SQL
    ' >> Créer SelectCommand:
    ' SELECTCOMMAND
    ' objDataAdapter.SelectCommand = New OleDb.OleDbCommand
    ' objDataAdapter.InsertCommand.Connection = objConnexion
    ' objDataAdapter.SelectCommand.CommandText = "SELECT Tbl_Assurance.* FROM Tbl_Assurance " & strFiltreTrie
    ' objDataAdapter.SelectCommand.CommandType = CommandType.Text
    ' ATTENTION: En renommant "datasetColumn" dans le tableMapping.ColumnMappings.Add, il faut aussi renommer "sourceColumn" dans ".Parameters.Add"
    ' Ex.:
    ' tableMapping.ColumnMappings.Add("DatePlein", "Date du plein")
    ' objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Date du plein", DataRowVersion.Current, False, Nothing))
    ' objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Date du plein", DataRowVersion.Current, False, Nothing))
    ' objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_DatePlein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Date du plein", DataRowVersion.Original, True, Nothing))
    ' objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Date du plein", DataRowVersion.Original, False, Nothing))
    ' objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_DatePlein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Date du plein", DataRowVersion.Original, True, Nothing))
    ' objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Date du plein", DataRowVersion.Original, False, Nothing))
    Gdal

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

Discussions similaires

  1. vérification combobox n'est pas la valeur par défaut
    Par supertotal dans le forum Zend_Form
    Réponses: 3
    Dernier message: 10/02/2012, 00h17
  2. Réponses: 1
    Dernier message: 07/12/2010, 10h57
  3. TB2006perso - ADO/ACCESS - Valeur par défaut
    Par microJaP dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/01/2007, 22h42
  4. Réponses: 8
    Dernier message: 06/12/2004, 12h24
  5. [Pb : champ Text = pas de valeur par defaut ?]
    Par mat_dum dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 18/08/2003, 12h57

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