Satyabrata Samantaray Ответов: 1

Копирование данных из 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

Добро пожаловать, к вашим услугам, сэр

1 Ответов

Рейтинг:
2

Patrice T

Цитата:
представление данных в datagrid view & флажок прикреплен для выбора строк.
Но когда я выполнении запроса все данные сведения калорифер tbla копирование tblB
но я хочу только выделенную строку, нужно скопировать не все.

Посмотрите на свой код, как вы сообщаете процедуре, какая запись должна быть скопирована ?
[Обновление]
Цитата:
Я здесь новенький и немного проводной , не могли бы вы подсказать, какой параметр нужно передать

Что вы показываете в datagrid ?.
Как вы связываете строку в datagrid с записью, которую она отображает ?
Предполагая, что SerialNumber-это идентификатор или запись, вы отображаете его в DataGrid ? Отслеживаете ли вы, какая строка в Datagrid связана с идентификатором записи ?
Если вы проверяете, что строка Datagrid проверена, вам нужно получить идентификатор записи, а затем вызвать хранимую процедуру с идентификатором в качестве параметра.


Satyabrata Samantaray

Я здесь новенький и немного проводной , не могли бы вы подсказать, какой параметр нужно передать

Satyabrata Samantaray

*https://ibb.co/8dbnCSX
*Элемент управления DataGrid привязан

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.