Member 13164214 Ответов: 1

Как я могу сохранить два datagridview в одной таблице sigle, которую я использую VB.NET 2015 и SQL 2014


Привет всем, у меня есть форма с 2 datagridview 1-это из моей таблицы продуктов, а другая-из моей таблицы заданий, Теперь я хочу сохранить то, что находится в двух datagridview в одной таблице. Но мой код не работает, я новичок в программировании, так что, пожалуйста, мне нужна помощь, спасибо, оооо, и я получил эту ошибку
Исключение исключение брошено: 'System.Data.SqlClient. SqlException' in System.Data.dll ("необходимо объявить скалярную переменную "@d6".") System. Data.SqlClient.SqlException
спасибо.

Что я уже пробовал:

Dim cb5 As String = " вставить в Bill_Detail(InvoiceID,CustomerID,ProductID,Qty,ProductPrice,TotalAmount,ProductName,JobID,JobName,JobPrice) значения (" & txtST_ID.Текст &", " & txtID.Текст и amp; ",@D1 и@D2, а@Д3,@Д4,@Д5,@Д6,@Д7,@Д8)"
cmd = New SqlCommand(cb5)
УМК.Подключение = кон
УМК.Подготовить()
Для каждой строки как DataGridViewRow в DataGridView1. Rows
Если не грести.IsNewRow Тогда
УМК.Параметры.AddWithValue("@Д1", " Вал " (подряд.Клеток(0).Значение))
УМК.Параметры.AddWithValue("@Д2", " Вал " (подряд.Клетки(4).Значение))
УМК.Параметры.AddWithValue("@d3", Val (row. Cells(3). Value))
УМК.Параметры.AddWithValue("@d4", Val (row. Cells(5). Value))
УМК.Параметры.AddWithValue ("@d5", строка.Ячейки (2). Значение)
УМК.Метод executenonquery()
УМК.Параметры.Четкий()

Конец, Если

Следующий
Для каждой строки как DataGridViewRow в DataGridView2. Rows
Если не грести.IsNewRow Тогда
УМК.Параметры.AddWithValue("@d6", Val (row. Cells(5). Value))
УМК.Параметры.AddWithValue ("@d7", строка.Ячейки (0). Значение)
УМК.Параметры.AddWithValue("@Д8", " Вал " (подряд.Клетки(1).Значение))
УМК.Метод executenonquery()
УМК.Параметры.Четкий()
Конец, Если
Следующий
против.Закрывать()

1 Ответов

Рейтинг:
0

an0ther1

Ваша проблема не требует объяснений - вы объявили параметры @d6, @d7 и @d8, но не добавили их в свою SQL-команду до выполнения запроса.
Если бы вы преодолели эту первую ошибку - возможно, установив значения в NULL, то вы получили бы аналогичную ошибку, когда доберетесь до второй вставки, но ошибка была бы "должна объявить переменную @d1"

если вы хотите установить значения в NULL в соответствующих операторах insert, вы должны сделать следующее;

cmd.Parameters.AddWithValue("@d6", DBNull.Value)


В качестве альтернативы есть 2 разных оператора Insert


Member 13164214

Спасибо за ваш ответ, У вас есть какие-нибудь рекомендации о том, как я могу это сделать?, я хочу, чтобы все, что находится в datagrid1 и datagrid2, было сохранено в таблице Bill_detail, спасибо.

an0ther1

Обратитесь к обновленному решению - если вы не можете установить значения в NULL, вам нужно будет установить его в значение соответствующего типа (например, 0 для int, "" для varchar и т. д)