Как обновить базу данных access после внесения изменений в данные в datagridview
Как обновить базу данных Access после внесения изменений в данные в datagridview. Каждый столбец в datagridview загружается с помощью кода.
Вот код для загрузки datagridview.
Private Sub LoadData() Dim DGVVerticalScroll = dgv1.Controls.OfType(Of VScrollBar).SingleOrDefault With dgv1 .Columns.Clear() .AutoGenerateColumns = False .DataSource = dt .ClearSelection() .AutoGenerateColumns = False .AllowUserToAddRows = False .RowsDefaultCellStyle.BackColor = Color.PapayaWhip .AlternatingRowsDefaultCellStyle.BackColor = Color.White .RowTemplate.Height = 18 .Visible = True .Columns.Add("Column0", "TransactionID") .Columns(0).Visible = False .Columns(0).DataPropertyName = "TransactionsID" Dim CreditCardID As New DataGridViewComboBoxColumn() strSQL = "SELECT * FROM tblCreditCard ORDER by CardName " Me.da = New OleDbDataAdapter(strSQL, cn) Me.myTable = New DataTable Me.da.Fill(myTable) CreditCardID.DataSource = myTable With CreditCardID .DisplayMember = "CardName" .ValueMember = "CreditCardID" .HeaderText = "Credit Card" .DataPropertyName = "CreditCardID" .MaxDropDownItems = 6 .FlatStyle = FlatStyle.Flat End With .Columns.Add(CreditCardID) .Columns(1).Width = 96 Dim MerchantTypeID As New DataGridViewComboBoxColumn() strSQL = "SELECT * FROM tblMerchantType ORDER by MerchantType" Me.da = New OleDbDataAdapter(strSQL, cn) Me.myTable = New DataTable Me.da.Fill(myTable) MerchantTypeID.DataSource = myTable With MerchantTypeID .DisplayMember = "MerchantType" .ValueMember = "MerchantTypeID" .HeaderText = "Merchant Type" .DataPropertyName = "MerchantTypeID" .MaxDropDownItems = 16 .FlatStyle = FlatStyle.Flat End With .Columns.Add(MerchantTypeID) .Columns(2).Name = "MerchantTypeID" .Columns(2).Width = 120 .Columns.Add("Column3", "Merchant") .Columns(3).DataPropertyName = "Merchant" .Columns(3).Width = 100 Dim transdate As New DataGridViewDateControl transdate.HeaderText = "Transaction Date" transdate.DataPropertyName = "TransDate" .Columns.Add(transdate) .Columns(4).Width = 90 .Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight Dim postdate As New DataGridViewDateControl postdate.HeaderText = "Posting Date" postdate.DataPropertyName = "Postdate" .Columns.Add(postdate) .Columns(5).Width = 90 .Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns.Add("Column6", "Amount") .Columns(6).Width = 72 .Columns(6).DataPropertyName = "Amount" .Columns(6).DefaultCellStyle.Format = "$#,###.00" .Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight Dim reconciled As New DataGridViewCheckBoxColumn With reconciled .HeaderText = "Reconciled" .DataPropertyName = "Reconciled" End With .Columns.Add(reconciled) .Columns(7).Width = 60 .Visible = True End With End Sub
Что я уже пробовал:
Вот одна из моих попыток обновить базу данных.
Private Sub BuildDataAdapter() Dim delete As New OleDbCommand("") Dim myupdate As New OleDbCommand("UPDATE tblTransactions SET TransactionsID = ?, CreditCardsID = ?, MerchantTypeID = ?, " & _ " Merchant = ? , TransDate = ? ,Postdate = ? , Amount = ? , Reconciled = ?" & _ " WHERE TransactionsID = ?", cn) myupdate.Parameters.Add("@TransactionsID", OleDbType.Char, 5, "TransactionsID").SourceVersion = DataRowVersion.Original myupdate.Parameters.Add("@CreditCardID", OleDbType.Char, 5, "CreditCardID").SourceVersion = DataRowVersion.Current myupdate.Parameters.Add("@MerchantTypeID", OleDbType.Char, 5, "MerchantTypeID").SourceVersion = DataRowVersion.Current myupdate.Parameters.Add("@Merchant", OleDbType.Char, 50, "Merchant").SourceVersion = DataRowVersion.Current myupdate.Parameters.Add("@Transdate", OleDbType.Date, 10, "Transdate").SourceVersion = DataRowVersion.Current myupdate.Parameters.Add("@Postdate", OleDbType.Date, 10, "Postdate").SourceVersion = DataRowVersion.Current myupdate.Parameters.Add("@Amount", OleDbType.Currency, 10, "Amount").SourceVersion = DataRowVersion.Current myupdate.Parameters.Add("@Reconciled", OleDbType.Boolean, 1, "Reconciled").SourceVersion = DataRowVersion.Current da.UpdateCommand = myupdate da.MissingSchemaAction = MissingSchemaAction.AddWithKey End Sub
А вот и кнопка click event для обновления
da.Update(dt)
Richard MacCutchan
В чем же проблема? Насколько я вижу, вы на самом деле не выполняете никаких команд базы данных.
targa72
Я пропустил три строки в подлодке loaddata, которые идут чуть выше с dgv1, они есть.
da = новый OleDbDataAdapter(strSQL, cn)
dt = новый DataTable
да.Заполнить(ДТ)
Загрузка работает, и изменения в datagridview выглядят хорошо, но это не спасет. Это мой первый раз, когда я использую datagridview, и я, кажется, не могу понять, как заставить данные течь обратно в базу данных.