Копирование данных из 1 таблицы в другую таблицу с помощью флажка datagridview , не происходит
i have 2 tables let A & B i have to copy data from TblA to TblB using a sql sp in C#. data's view in datagrid view & check box attached for selecting rows. But when i am executing query all data of tblA copying to tblB but i want only selected row need to copy not all.
Что я уже пробовал:
SP --- ALTER procedure [dbo].[sptblStockTransfer] AS Begin insert into tblAssetMaster(SerialNumber,AssetType,HDDSize,RAMSize,MonitorType,AssetMake,AssetModel,InvoiceNumber,AssetStatus,WorkingStatus,InvoiceDate,Remarks) select SerialNumber,AssetType,HDDSize,RAMSize,MonitorType,AssetMake,AssetModel,InvoiceNumber,AssetStatus,WorkingStatus,InvoiceDate,Remarks from tblStockinWard ; End
VS Code ------ private void button1_Click(object sender, EventArgs e) { int inserted = 0; for (int i = 0; i <= dataGridView1.RowCount - 1; i++) { if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["chk"].Value) == true) { con.Open(); SqlCommand cmd = new SqlCommand("sptblStockTransfer", con); cmd.CommandType = CommandType.StoredProcedure; cmd.ExecuteNonQuery(); con.Close(); } inserted++; } if (inserted > 0) { MessageBox.Show(string.Format("{0} records inserted.", inserted), "Message"); } }
0x01AA
Подумайте о том, чтобы потратить параметр на ваш SP, который сообщает SP, какие данные должны быть скопированы ;)
Satyabrata Samantaray
Здравствуйте, сэр, не могли бы вы подсказать мне, какой параметр нужно определить в SP
0x01AA
insert into tblAssetMaster(...)
select ...from tblStockinWard ;
копирует все строки из "tblStockinWard". Поэтому вам нужно передать SP параметр, который ограничивает копирование уникальным значением "tblStockinWard". Это позволяет вам сделать что-то подобное в SP. псевдокоде:
insert into tblAssetMaster(...)
select ... from tblStockinWard
WHERE tblStockinWard.Id= paramValue;
Я использовал tblStockinWard.Id
но только вы знаете, в какой области tblStockinWard
является ли уникальный idenitfier/первичный ключ
Satyabrata Samantaray
я внес следующие изменения в SP
------------------------
Изменить процедуру [dbo].[sptblStockTransfer]
@SerialNumber varchar (25)
АС
Начать
вставить в tblAssetMaster(SerialNumber,AssetType,HDDSize,RAMSize,MonitorType,AssetMake,AssetModel,InvoiceNumber,AssetStatus,WorkingStatus,InvoiceDate,Remarks)
выберите SerialNumber,AssetType,HDDSize,RAMSize,MonitorType,AssetMake,AssetModel,InvoiceNumber,AssetStatus,WorkingStatus,InvoiceDate,замечания от tblStockinWard где tblStockinWard.SerialNumber=@SerialNumber;
Конец
0x01AA
И теперь, это решило вашу проблему?
Кстати: следующая проблема, с которой вы, вероятно, столкнетесь (в зависимости от того, как определяется tblAssetMaster), - это когда там уже существует одна и та же запись.
Satyabrata Samantaray
нет, не решено. я не понял, что буду писать после серийного номера ?
кон.Открыть();
SqlCommand cmd = new SqlCommand("sptblStockTransfer", con);
УМК.CommandType = CommandType.Хранимая процедура;
cmd.параметры.AddWithValue("@SerialNumber" ,---------);
УМК.Метод executenonquery();
против.Закрывать();
0x01AA
Что-то вроде
cmd.Parameters.AddWithValue("@SerialNumber", dataGridView1.Rows[i].Cells["SerialNumber"].Value);
Satyabrata Samantaray
Спасибо, сэр, мой вопрос был решен. Еще раз благодарю вас.
0x01AA
Добро пожаловать, к вашим услугам, сэр