Member 12456995 Ответов: 1

Как вставить данные из двух форм в таблицу SQL


I am developing a small pos application where user can make payments and save db. Until now I stored data from one form(datagridview, textboxes etc), but now I decided to add one more form (for payments and the change). The idea is that the user call data from db in datagridview(***barcode, qty, name, price, total, vat et***c) , then press the btnpayment(***opens the 2nd form***), then the user give the the required data(give payment), then after clicking the pay button the data from two forms should be inserted into sql table

Now I want to save data from two forms into sql db in same time using same stored procedures.





The 2nd form has some textboxes (payments and change). Now upper code I want to put into 2nd form insert button , but don't know how to link two forms together. My question is what should I change in upper code to be able to put in 2nd form insert button, then insert 2 forms in same time 


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

   try

{

    conn.Open();





    foreach (DataGridViewRow row in dtgartikuj.Rows)

    {

        if (!row.IsNewRow)

        {

            SqlCommand cmd = new SqlCommand("insertfaturimi", conn);

            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Clear();

            cmd.Parameters.Add(new SqlParameter("@nrfatures", int.Parse(txtnrfatures.Text)));

            cmd.Parameters.Add(new SqlParameter("@klienti", cmbklienti.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[4].Value));

            cmd.Parameters.Add(new SqlParameter("@cmimi", row.Cells[3].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();

}

1 Ответов

Рейтинг:
1

phil.o

В идеале вторая форма никогда не должна знать ничего о деталях в первой форме (она должна знать только об общей сумме гонорара). Вместо этого вторая форма должна подтвердить платежные реквизиты. Затем первая форма может использовать возвращаемый результат второй формы для фактического продолжения работы; либо путем сохранения данных в базе данных, если вторая форма возвратила успех, либо путем не сохранения и выдачи сообщения об ошибке, если вторая форма возвратила сбой.

Форма 1:

using (Form2 form = new Form2(total))
{
   if (form.ShowDialog(this) == DialogResult.OK)
   {
      // Save to database and issue success message
   }
   else
   {
      // Issue a failure message
   }
}


Форма 2:
private decimal Total;

public Form2()
{
   InitializeComponent();
}

public Form2(decimal total) : this()
{
   Total = total;
}

private void buttonPlay_Click(object sender, EventArgs e)
{
   bool paymentIsValid = ProcessPayment();
   DialogResult = paymentIsValid ? DialogResult.OK : DialogResult.Cancel;
   this.Close();
}

private bool ProcessPayment()
{
   // Handle the payment here.
   // Return true on success.
   // Return false on failure.
}


[no name]

что положить внутрь метода #processpayment

phil.o

Все, что направлено на проверку того, что платеж действительно был сделан. Это зависит от стольких факторов, что не существует единого кода, подходящего для всех ситуаций. Смотрите вместе с организацией, обрабатывающей платежи, чтобы узнать, как правильно использовать их услуги.