Доброго времени суток, уважаемые форумчане! Пытаюсь обновить данные в базе данных ( база Аксесс 2007). Требует указать все аргументы. Что нужно указать-то ? Пробовал продублировать названия текстбоксов, но ничего не получилось. Ошибка
Цитата
Ошибка 1 Отсутствует аргумент для параметра "Original_Kod" в "Public Overridable Overloads Function Mallar_update(Kod As String, Mal_ad_eng As String, Mal_ad_az As String, Original_SN As Integer, Original_SN1 As Integer, Original_SN2 As Integer, Original_SN3 As Integer, Original_SN4 As Integer, Original_Kod As String, Original_Kod1 As String) As Integer". C:\Users\User\Google Диск\VB\SDP - HMK\SDP2\SDP2\Form1.vb 25 9 SDP2
Структура базы
Код для обновления
[vba]
Код
Sub update_mal_setir() Me.DataGridView1.SelectedRows(0).Cells(1).Value = Me.TB_Kod.Text Me.DataGridView1.SelectedRows(0).Cells(2).Value = Me.TB_MAE.Text Me.DataGridView1.SelectedRows(0).Cells(3).Value = Me.TB_MAA.Text Mal_siyahiTableAdapter1.Mallar_update() End Sub
[/vba] SQL запрос к базе данных ( создан мастером запросов в VS 2013)
[vba]
Код
UPDATE Mal_siyahi SET Kod = 'Me.TB_Kod.[Text]', Mal_ad_eng = 'Me.TB_MAE.[Text]', Mal_ad_az = 'Me.TB_MAA.[Text]' WHERE (SN = ?) AND (? = 1) AND (Kod IS NULL) AND (? = 1) AND (Mal_ad_eng IS NULL) AND (? = 1) AND (Mal_ad_az IS NULL) OR (SN = ?) AND (? = 1) AND (Kod = ?) AND (? = 1) AND (Mal_ad_eng IS NULL) AND (Mal_ad_az IS NULL) OR (SN = ?) AND (? = 1) AND (Kod IS NULL) AND (? = 1) AND (Mal_ad_eng = ?) AND (Mal_ad_az IS NULL) OR (SN = ?) AND (? = 1) AND (Kod = ?) AND (Mal_ad_eng = ?) AND (Mal_ad_az IS NULL) OR (SN = ?) AND (? = 1) AND (Kod IS NULL) AND (? = 1) AND (Mal_ad_eng IS NULL) AND (Mal_ad_az = ?) OR (SN = ?) AND (? = 1) AND (Kod = ?) AND (Mal_ad_eng IS NULL) AND (Mal_ad_az = ?) OR (SN = ?) AND (? = 1) AND (Kod IS NULL) AND (Mal_ad_eng = ?) AND (Mal_ad_az = ?) OR (SN = ?) AND (Kod = ?) AND (Mal_ad_eng = ?) AND (Mal_ad_az = ?)
[/vba]
Доброго времени суток, уважаемые форумчане! Пытаюсь обновить данные в базе данных ( база Аксесс 2007). Требует указать все аргументы. Что нужно указать-то ? Пробовал продублировать названия текстбоксов, но ничего не получилось. Ошибка
Цитата
Ошибка 1 Отсутствует аргумент для параметра "Original_Kod" в "Public Overridable Overloads Function Mallar_update(Kod As String, Mal_ad_eng As String, Mal_ad_az As String, Original_SN As Integer, Original_SN1 As Integer, Original_SN2 As Integer, Original_SN3 As Integer, Original_SN4 As Integer, Original_Kod As String, Original_Kod1 As String) As Integer". C:\Users\User\Google Диск\VB\SDP - HMK\SDP2\SDP2\Form1.vb 25 9 SDP2
Структура базы
Код для обновления
[vba]
Код
Sub update_mal_setir() Me.DataGridView1.SelectedRows(0).Cells(1).Value = Me.TB_Kod.Text Me.DataGridView1.SelectedRows(0).Cells(2).Value = Me.TB_MAE.Text Me.DataGridView1.SelectedRows(0).Cells(3).Value = Me.TB_MAA.Text Mal_siyahiTableAdapter1.Mallar_update() End Sub
[/vba] SQL запрос к базе данных ( создан мастером запросов в VS 2013)
[vba]
Код
UPDATE Mal_siyahi SET Kod = 'Me.TB_Kod.[Text]', Mal_ad_eng = 'Me.TB_MAE.[Text]', Mal_ad_az = 'Me.TB_MAA.[Text]' WHERE (SN = ?) AND (? = 1) AND (Kod IS NULL) AND (? = 1) AND (Mal_ad_eng IS NULL) AND (? = 1) AND (Mal_ad_az IS NULL) OR (SN = ?) AND (? = 1) AND (Kod = ?) AND (? = 1) AND (Mal_ad_eng IS NULL) AND (Mal_ad_az IS NULL) OR (SN = ?) AND (? = 1) AND (Kod IS NULL) AND (? = 1) AND (Mal_ad_eng = ?) AND (Mal_ad_az IS NULL) OR (SN = ?) AND (? = 1) AND (Kod = ?) AND (Mal_ad_eng = ?) AND (Mal_ad_az IS NULL) OR (SN = ?) AND (? = 1) AND (Kod IS NULL) AND (? = 1) AND (Mal_ad_eng IS NULL) AND (Mal_ad_az = ?) OR (SN = ?) AND (? = 1) AND (Kod = ?) AND (Mal_ad_eng IS NULL) AND (Mal_ad_az = ?) OR (SN = ?) AND (? = 1) AND (Kod IS NULL) AND (Mal_ad_eng = ?) AND (Mal_ad_az = ?) OR (SN = ?) AND (Kod = ?) AND (Mal_ad_eng = ?) AND (Mal_ad_az = ?)
[/vba] В вашем варианте-ищите измененные строки в гриде и обновляйте их. Лучше так сделать. [vba]
Код
XTableAdapter.Fill(XDatatable) BS = New System.Windows.Forms.BindingSource BS.DataSource=XDatatable DataGridView1.DataSource=BS '------------------------------------ BS.endedit XTableAdapter.Udate(XDatatable)
[/vba] Совет,то .что касается dataseta и создания адаптеров и команд-не делайте в дизайнере,пишите свои классы. Будет серьезная база данных. будет морока
У вас подход немного не верный. Ваш вариант. [vba]
[/vba] В вашем варианте-ищите измененные строки в гриде и обновляйте их. Лучше так сделать. [vba]
Код
XTableAdapter.Fill(XDatatable) BS = New System.Windows.Forms.BindingSource BS.DataSource=XDatatable DataGridView1.DataSource=BS '------------------------------------ BS.endedit XTableAdapter.Udate(XDatatable)
[/vba] Совет,то .что касается dataseta и создания адаптеров и команд-не делайте в дизайнере,пишите свои классы. Будет серьезная база данных. будет морокаdoober
Сообщение отредактировал doober - Суббота, 30.05.2015, 20:08
doober, Как-то через одно известное место у меня все работает. Если использовать данный код, то датагрид *сортирует* записи и отображает только выделенную. После запуска кода во второй раз значения из текстбокса в датиагрид меняются, но в базе обновляться не хотят. [vba]
Код
Sub update_mal_setir() Dim BS As New System.Windows.Forms.BindingSource
'BS = New System.Windows.Forms.BindingSource BS.DataSource = Me.MallarDataSet DataGridView1.DataSource = BS Me.DataGridView1.SelectedRows(0).Cells(1).Value = Me.TB_Kod.Text Me.DataGridView1.SelectedRows(0).Cells(2).Value = Me.TB_MAE.Text Me.DataGridView1.SelectedRows(0).Cells(3).Value = Me.TB_MAA.Text Me.Mal_siyahiTableAdapter1.Fill(Me.MallarDataSet._Mal_siyahi) '------------------------------------ BS.endedit() Me.Mal_siyahiTableAdapter1.Update(Me.MallarDataSet) End Sub
[/vba]
doober, Как-то через одно известное место у меня все работает. Если использовать данный код, то датагрид *сортирует* записи и отображает только выделенную. После запуска кода во второй раз значения из текстбокса в датиагрид меняются, но в базе обновляться не хотят. [vba]
Код
Sub update_mal_setir() Dim BS As New System.Windows.Forms.BindingSource
'BS = New System.Windows.Forms.BindingSource BS.DataSource = Me.MallarDataSet DataGridView1.DataSource = BS Me.DataGridView1.SelectedRows(0).Cells(1).Value = Me.TB_Kod.Text Me.DataGridView1.SelectedRows(0).Cells(2).Value = Me.TB_MAE.Text Me.DataGridView1.SelectedRows(0).Cells(3).Value = Me.TB_MAA.Text Me.Mal_siyahiTableAdapter1.Fill(Me.MallarDataSet._Mal_siyahi) '------------------------------------ BS.endedit() Me.Mal_siyahiTableAdapter1.Update(Me.MallarDataSet) End Sub