Вставьте текстовое поле и представление данных правильно c# sql - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю с небольшим POS-приложением, а после оплаты данные сохраняются в две таблицы. Из формы данные хранятся в двух таблицах из двух групп данных:

  1. Текстовые поля (общие данные, такие как дата, работник, итог и т. Д. c) - сохраняются в таблице 1

Данные хранятся в каждой таблице, поскольку в первой таблице много строк вставлено в виде у datagridview есть строки. Чтобы быть более понятным: если в datagridview есть 5 строк, хранящихся в таблицах 2, в таблице 1 также хранятся 5 строк с одинаковыми данными, повторяемыми из текстовых полей.

Код, который я использовал для вставки, показан ниже:

try
{
     conn.Open();

     foreach (DataGridViewRow row in dtgartikuj.Rows)
     {
          if (!row.IsNewRow)
          {
              SqlCommand cmd = new SqlCommand("insertfaturimi", conn);
              cmd.CommandType = CommandType.StoredProcedure;
              cmd.Parameters.Add(new SqlParameter("@nrfatures", int.Parse(txtnrfatures.Text)));
              cmd.Parameters.Add(new SqlParameter("@klienti",  cmbklienti.Text));
              cmd.Parameters.Add(new SqlParameter("@shenime", txtshenime.Text));
              cmd.Parameters.Add(new SqlParameter("@pagesa", faturimi));
              cmd.Parameters.Add(new SqlParameter("@nentotali", txttotali.Text));
              cmd.Parameters.Add(new SqlParameter("@zbritje", txtzbritja.Text));
              cmd.Parameters.Add(new SqlParameter("@totali", totali.Text));
              cmd.Parameters.Add(new SqlParameter("@vleratvsh", textBox1.Text));
              cmd.Parameters.Add(new SqlParameter("@nrartikujve", lblnumri.Text));
              cmd.Parameters.Add(new SqlParameter("@kasieri", lbluser.Text));
              cmd.Parameters.Add(new SqlParameter("@koha", DateTime.Now));
              cmd.Parameters.Add(new SqlParameter("@barkodi", row.Cells[0].Value));
              cmd.Parameters.Add(new SqlParameter("@emertimi", row.Cells[1].Value));
              cmd.Parameters.Add(new SqlParameter("@sasia", row.Cells[2].Value));
              cmd.Parameters.Add(new SqlParameter("@tvsh", row.Cells[3].Value));
              cmd.Parameters.Add(new SqlParameter("@cmimi", row.Cells[4].Value));
              cmd.Parameters.Add(new SqlParameter("@totalipcs", row.Cells[5].Value));
              cmd.Parameters.Add(new SqlParameter("@vlerapatvshpcs", row.Cells[6].Value));
              cmd.Parameters.Add(new SqlParameter("@vleraetvshpcs", row.Cells[7].Value));

              cmd.ExecuteNonQuery();
           }
        }
    }
    catch(Exception ex)
    {
        MessageBox.Show("Faturimi deshtoi" + ex.ToString());
    }
    finally
    {
        conn.Close();
        clear();
        button5.PerformClick();
    }
}

И хранимая процедура, которую я использовал, показана ниже:

ALTER PROCEDURE [dbo].[insertfaturimi]
    @nrfatures int,
    @barkodi int,
    @emertimi varchar (max),
    @sasia int,
    @tvsh float,
    @cmimi float,
    @totalipcs float,
    @vlerapatvshpcs float,
    @vleraetvshpcs float,
    @klienti varchar(100),
    @pagesa varchar (200),
    @shenime varchar (200),
    @nrartikujve int,
    @vleratvsh float,
    @nentotali float,
    @zbritje float,
    @totali float,
    @kasieri varchar(50),
    @koha datetime
AS
BEGIN
    INSERT INTO tbl_faturimi(ID_FATURES, Klienti, Shenime, Pagesa, Nentotali, Zbritja, Totali, VleraTVSH, NR_artikujve, Kasieri, Data) 
    VALUES (@nrfatures, @klienti, @shenime, @pagesa, @nentotali, @zbritje, @totali, @vleratvsh, @nrartikujve, @kasieri, @koha)

    INSERT INTO tblfaturimi_details (NR_FATURES, Barkodi, Emertimi, Cmimi, Sasia, TVSH, Totali, VleraeTVSH, VleraPaTVSH)
    VALUES (@nrfatures, @barkodi, @emertimi, @cmimi, @sasia, @tvsh, @totalipcs, @vleraetvshpcs, @vlerapatvshpcs)
END

Я думаю, что ошибка от l oop, потому что внутри l oop также есть текстовое поле, включенное не только обзор данных. Я пытался поместить код, который вставляет текстовые поля вне l oop, но я получаю сообщение об ошибке:

В процедуре или функции указано слишком много аргументов

Возможно кто-то скажет, что нужно изменить в коде.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...