Après avoir passé quelques jours à tenter de résoudre mon problème, la lecture de quelques tutoriel et de nombreux messages d'erreurs sur des forums, je n'ai pas réussi à trouver de solution, et je suis au point mort.
Voici en quelques mots ce que j'essaye de faire. Je réalise une application qui doit me permettre de programmer une microcontrôleur via un port série, et compléter une base de donnée Access afin de récupérer les différentes configuration rapidement.
Pour cela, j'ai donc mis en place une DataGridView pour visualiser les 4 première colonnes de ma base, et je cherche à ajouter d'autres colonnes, via un DataSet.
Mon DataSet se complète bien (je ne peux pas ajouter deux colonnes avec le même nom), mais impossible de compléter ma base de donnée.
De plus, lors de l'ajout de ma colonne, je perds la mise en place de mes DataGridViewComboBoxCell dans ma colonne qui me sert de configuration pour l'écriture des données.
Voici mon code, ou du moins une partie :
Dim Index1 As New DataGridViewComboBoxCell()
Dim Index2 As New DataGridViewComboBoxCell()
Dim Index3 As New DataGridViewComboBoxCell()
Dim Index5 As New DataGridViewComboBoxCell()
Dim Index9 As New DataGridViewComboBoxCell()
Dim Index10 As New DataGridViewComboBoxCell()
Dim Index11 As New DataGridViewComboBoxCell()
Dim Index13 As New DataGridViewComboBoxCell()
Dim Index25 As New DataGridViewComboBoxCell()
Dim connectionString As String "Provider Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\Sociale.mdb; Persist Security Info = False;"
Dim sql As String = "SELECT * FROM TableSociale" '* pour sélectionner toute la table
Dim connection As New OleDbConnection(connectionString)
Dim dataadapter As New OleDbDataAdapter(sql, connection)
Dim i As Byte
Dim dsNewChamp As DataColumn
Dim myRow As DataRow
Dim Client As String
Dim ComBuilder As OleDbCommandBuilder
'Dim ds As New DataSet("TableSociale")
'Dim TableSociale As DataTable = New DataTable("TableSociale")
Private Sub Sociale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TableAdapter.Fill(SocialeDataSet.TableSociale)
'connection.Open()
'dataadapter.Fill(SocialeDataSet, "TableSociale")
'connection.Close()
'DataGridView1.DataSource = SocialeDataSet
'DataGridView1.DataMember = "TableSociale"
Index1.Items.AddRange("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
DataGridView1.Item(3, 0) = Index1
Index2.Items.Add("RTC")
Index2.Items.Add("GSM")
Index2.Items.Add("RTC principal / GSM secours")
DataGridView1.Item(3, 1) = Index2
Index3.Items.AddRange("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
DataGridView1.Item(3, 2) = Index3
Index5.Items.Add("Télésurveilleur")
Index5.Items.Add("Vocal")
DataGridView1.Item(3, 4) = Index5
Index9.Items.Add("STRATEL")
Index9.Items.Add("Contact ID")
DataGridView1.Item(3, 8) = Index9
Index10.Items.Add("Validée")
Index10.Items.Add("Inhibée")
DataGridView1.Item(3, 9) = Index10
Index11.Items.AddRange("10", "45", "60", "90", "120", "Inhibé")
DataGridView1.Item(3, 10) = Index11
Index13.Items.AddRange("5h", "12h", "24h", "48h", "1 semaine")
DataGridView1.Item(3, 12) = Index13
Index25.Items.AddRange("1", "2", "3", "4", "5", "6", "7", "8", "9")
DataGridView1.Item(3, 24) = Index25
End Sub
Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Private Sub txtEdition_KeyPress(ByVal sender As Object, ByVal e As
Private Sub Parametrage_Click(sender As Object, e As EventArgs) Handles Parametrage.Click
Private Sub Upload_Click(sender As Object, e As EventArgs) Handles Upload.Click
Private Sub Download_Click(sender As Object, e As EventArgs) Handles Download.Click
Function CalculCrcSum(CRC As Byte, Val As Byte) As Integer
Private Sub Transfert_Click(sender As Object, e As EventArgs) Handles Transfert.Click
Private Sub Save_Click(sender As Object, e As EventArgs) Handles Save.Click
Private Sub Base_Click(sender As Object, e As EventArgs) Handles Base.Click
Client = InputBox("Nom du nouveau client :" & vbCrLf, "Ajout d'une nouvelle sauvegarde")
' Créer un nouveau DataColumn, lui donner un DataType, un nom, divers valeurs pour ses propriétés
'et l'ajouter à la DataTable.
dsNewChamp = New DataColumn()
dsNewChamp.DefaultValue = False
dsNewChamp.DataType = System.Type.GetType("System.String") 'Type de la colonne
'dsNewChamp = SocialeDataSet.TableSociale.Columns("Ecriture")
dsNewChamp.ColumnName = Client 'Nom de la colonne
dsNewChamp.ReadOnly = False 'Colonne ReadOnly
dsNewChamp.Unique = False 'Evite les doublons
dsNewChamp.AutoIncrement = False
dsNewChamp.AllowDBNull = True
Try
SocialeDataSet.TableSociale.Columns.Add(dsNewChamp)
'MsgBox("Client ajouté avec succès", MsgBoxStyle.Information, "Ajout")
Catch ex As DuplicateNameException
MessageBox.Show("Nom déjà utilisé.")
Exit Sub
End Try
For i = 0 To 24
myRow = SocialeDataSet.TableSociale.Rows(i)
myRow(Client) = SocialeDataSet.TableSociale.Item(i).Ecriture
Next
SocialeDataSet.TableSociale.AcceptChanges()
TableAdapter.Update(SocialeDataSet.TableSociale)
'ComBuilder = New OleDbCommandBuilder(dataadapter)
'dataadapter.UpdateCommand = ComBuilder.GetUpdateCommand()
'dataadapter.Update(SocialeDataSet.TableSociale)
'Try
' TableSocialeTableAdapter.Fill(SocialeDataSet.TableSociale)
'Catch ez As Data.ConstraintException
' Dim strWriter As StreamWriter = ...\ExtractErr.log")
' Dim v_errorRows As DataRow() = SocialeDataSet.TableSociale.GetErrors
' For Each v_row As DataRow In v_errorRows
' strWriter.WriteLine(v_row.RowError)
' Next
' strWriter.Flush()
' strWriter.Close()
'End Try
'Dim cmd As New OleDbCommand
'Dim ssql As String = "INSERT INTO Client FROM TableSociale VALUES (Ecriture FROM TableSociale)"
'cmd.CommandType = CommandType.Text
'cmd.CommandText = ssql
'cmd.Connection = connection
'cmd.ExecuteNonQuery()
End Sub
End Class
Une idée sur la disparition de mes DataGridViewComboBoxCell ?
Comment mettre à jour ma base de données après l'ajout de ma colonne ?
En vous remerciant de l'aide que vous pourriez m'apporter.
A voir également:
Sauvegarde d'une nouvelle colonne dans une base de donnée access
Effectivement, j'ai bien #@&% dans la colle, il s'agit bien de VB.NET (j'avais commencé à travailler sur une version visual studio 2003 puis je suis passé sur la version visual studio 2012 car je n'avançais pas sur la précédente, mais effectivement c'est bien du .NET à chaque fois !).
Je vais tenter de déplacer le sujet, ou de voir ce qu'il faut faire...
Et désolé pour ma maladresse.
Je me suis permis de reposter sur le bon forum (enfin j'espère le bon), merci à un administrateur de supprimer ce message, ou de me dire quoi en faire si besoin