Atul Rokade Ответов: 3

Как выполнить запрос обновления из одной формы в другую


я работаю на одно приложение, в котором в первой форме данные в элементе управления datagridview , во 2-м классе, имея один пароль текстовое поле, если пользователь введите данные в 1-й форме, то быстро 2-я форма должна называться после ввода своего пароля, то только 1-й данные формы должны ввести еще выскочить должно отображаться некорректное имя пользователя , мне сделали кодирование, но всякий раз, когда я выполнить код на 1. форма пароля текстовое поле-это отображение, но на 1-й формы сообщения.также с этим ("запись успешно обновить") я хочу, чтобы после правильного ввода в текстовое поле, затем после 1-й форма выскочить должен показывать

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

вот мой код формы 1
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
        {
            string connectionString = null;
            connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;
            con.ConnectionString = connectionString;



            string medicinename = dataGridView1.Rows[e.RowIndex].Cells["Medicine_Name"].Value.ToString();
          string quantity = dataGridView1.Rows[e.RowIndex].Cells["Quantity"].Value.ToString();


            DialogResult dialogResult = MessageBox.Show("Are you sure you want to insert data", "Data insert Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
            if (dialogResult == DialogResult.Yes)
            {

                cmd = new OleDbCommand("update Medicine_Available_Detail set [Availability]=[Availability]-@Quantity where [Medicine_Name]=@Medicine_Name", con);
                cmd.Parameters.AddWithValue("@Quantity", quantity);
                cmd.Parameters.AddWithValue("@Medicine_Name", medicinename);
                Form1 frm = new Form1();
                frm.Show();
                con.Open();
                int n = cmd.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("Record Updated Successfully");
                userlist();


                try
                {
                    string query = "select Medicine_Name,Availability from Medicine_Available_Detail where Medicine_Name='" + medicinename+ "'";

                    using (cmd = new OleDbCommand(query, con))
                    {
                        con.Open();

                        using (OleDbDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                string Medicine_Name = (string)reader["Medicine_Name"];
                                int Availability = (int)reader["Availability"];

                                MessageBox.Show("Total stock of: " + medicinename + " is now: " + Availability + " ");


                            }

                            reader.Close();

                        }

                        con.Close();

                    }

                    dataGridView1.Refresh();


                }


код формы 2
private void txtinput_Enter(object sender, EventArgs e)
        {


                this.txtinput.MaxLength = 4;
                cmd = new OleDbCommand("update Login set [Sales_count]=[Sales_count]+1 where [Unique_No]=@Unique_No and To_Date='" + DateTime.Now + "'", con);
                cmd.Parameters.AddWithValue("@Unique_No", txtinput.Text);
                con.Open();
                int n = cmd.ExecuteNonQuery();

                if (n < 0)
                {
                    MessageBox.Show("Invalid Unique No. pls try again later");

                }

                con.Close();
            }

3 Ответов

Рейтинг:
2

Atul Rokade

Вот рабочий код:
Форма 3

DialogResult dialogResult = MessageBox.Show("Are you sure you want to insert data", "Data insert Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                  if (dialogResult == DialogResult.Yes)
                  {

                      cmd = new OleDbCommand("update Medicine_Available_Detail set [Availability]=[Availability]-@Quantity where [Medicine_Name]=@Medicine_Name", con);
                      cmd.Parameters.AddWithValue("@Quantity", quantity);
                      cmd.Parameters.AddWithValue("@Medicine_Name", medicinename);
                      Form1 frm = new Form1();
                      DialogResult dr = frm.ShowDialog();
                      if (dr != DialogResult.OK)
                      {
                          return;
                      }

                      con.Open();
                      int n = cmd.ExecuteNonQuery();
                      con.Close();
                      MessageBox.Show("Record Updated Successfully");
                      userlist();


                      try
                      {
                          string query = "select Medicine_Name,Availability from Medicine_Available_Detail where Medicine_Name='" + medicinename + "'";

                          using (cmd = new OleDbCommand(query, con))
                          {
                              con.Open();

                              using (OleDbDataReader reader = cmd.ExecuteReader())
                              {
                                  while (reader.Read())
                                  {
                                      string Medicine_Name = (string)reader["Medicine_Name"];
                                      int Availability = (int)reader["Availability"];

                                      MessageBox.Show("Total stock of: " + medicinename + " is now: " + Availability + " ");


                                  }

                                  reader.Close();

                              }

                              con.Close();

                          }

                          dataGridView1.Refresh();


                      }
                      catch (Exception ex)
                      {

                      }


форма 1
private void button1_Click_1(object sender, EventArgs e)
       {
 this.txtinput.MaxLength = 4;
           cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1, [To_Date]=Date() where [Unique_No]=@Unique_No", con);
           cmd.Parameters.AddWithValue("@Unique_No", txtinput.Text);
           con.Open();
           int n = cmd.ExecuteNonQuery();

           if (n == 0)
           {
               MessageBox.Show("Invalid Unique No.");

           }
           else
           {
               this.DialogResult = DialogResult.OK;
           }



           con.Close();
       }


Рейтинг:
1

Sergey Alexandrovich Kryukov

"От одной формы к другой" означает тривиальную проблему сотрудничества форм. Это тривиально, но, по какой-то причине, является очень обычной заботой для многих. Прежде всего, вы обычно имеете дело не с "формами" (типами), а с экземплярами форм. В конце концов, я написал статью, чтобы решить эти проблемы: На многие вопросы ответили сразу — сотрудничество между Windows Forms или WPF Windows.

—СА


Рейтинг:
1

JayantaChatterjee

Привет,
Свои проблемы, сделанных настоящим Кодексом:

Form1 frm = new Form1();
                frm.Show();

после вызова Form1.Show() управление программой переходит к следующему оператору вызывающей формы. которые выполняют эти операторы, именно поэтому вы видите сообщение "запись успешно обновлена"..
потому что каждая форма сама по себе является потоком... вызывающая форма не ждет ответа. Form1 нить, из которой нужно выйти.
Итак, вам нужно изменить этот код:-
frm.Show(); к frm.ShowDialog();
Он откроет вашу форму как модальную форму, а вызывающая форма будет ждать выхода из дочерней формы...


Atul Rokade

я написал ниже код, но он все еще не работает
форма 3 код:

команду cmd = новый объект oledbcommand("обновление Medicine_Available_Detail набор [наличие]=[в наличии]-@количестве, где [Medicine_Name]=@Medicine_Name", кон);
УМК.Параметры.AddWithValue ("@Quantity", количество);
УМК.Параметры.AddWithValue ("@Medicine_Name", medicinename);
Форма form1 ФРМ = новые формы form1();
DialogResult dr = frm. ShowDialog();
if (dr != DialogResult.ОК)
{
вернуть;
}

против.Открыть();
int n = cmd.Метод executenonquery();
против.Закрывать();
Ящик для сообщений.Show ("Запись Успешно Обновлена");
список пользователей();

код формы 1:

this.txtinput. MaxLength = 4;
команду cmd = новый объект oledbcommand("обновление установить логин [Sales_count]=[Sales_count]+1, где [Unique_No]=@Unique_No и даты='" + Датавремя.Теперь + "'", кон);
УМК.Параметры.AddWithValue ("@Unique_No", txtinput. Text);
против.Открыть();
int n = cmd.Метод executenonquery();

если (n < 0)
{
Ящик для сообщений.Шоу("Неверный Уникального Нет. пожалуйста, попробуйте еще раз позже");
этот.DialogResult = DialogResult.Отменить;
}
ещё
{
этот.DialogResult = DialogResult.ОК;
}


против.Закрывать();
}

JayantaChatterjee

Это работает на меня..
вы получили какую-нибудь ошибку?
что такое "не работает" (пожалуйста, объясните)??

Atul Rokade

@jayanta : debugg не приходит, если (dr != DialogResult.ОК)
{
вернуть;
}

эта линия сразу пошла
кон.Открыть();
int n = cmd.Метод executenonquery();
кон.Рядом();
Ящик для сообщений.Show ("запись успешно обновлена"); в этой строке

JayantaChatterjee

это означает, что ваш метод не выходит после недопустимой записи Unique_no в форме 1??

Atul Rokade

привет @jayanta : я внес изменения в код, теперь он работает нормально, он проверяет допустимый и недопустимый unique_no, но проблема в том, что не upadating sales_count+1 в таблице против unique_no в запросе обновления i reomve [To_Date]='" + DateTime.Now.Тошортдатестринг () часть так вот почему код работает, но не обновляется в таблице

вот я даю свой код

частная button1_Click_1 недействительным(объект отправителя, EventArgs в электронной)
{
команду cmd = новый объект oledbcommand("обновление учетной Sales_count=Sales_count+1, где [Unique_No]=@Unique_No", кон);
УМК.Параметры.AddWithValue ("@Unique_No", txtinput. Text);
против.Открыть();
int n = cmd.Метод executenonquery();

если (n= = 0)
{
Ящик для сообщений.Шоу("Неверный Уникального Нет. пожалуйста, попробуйте еще раз позже");
//этот.DialogResult = DialogResult.Отменить;
}
ещё
{
этот.DialogResult = DialogResult.ОК;
}


против.Закрывать();
}

JayantaChatterjee

Согласно вашему коду, если Unique_No находится в таблице, то он увеличит значение Sales_count на единицу..
если ваш запрос не увеличивает значение Sales_count в таблице, это означает, что Unique_No(которое вы предоставили через текстовое поле txtInput) не существует в таблице.
Отладьте свою программу и посмотрите txtinput.Текстовое значение, и выяснить, существует ли оно в таблице или нет...

Atul Rokade

@Джаянта : спасибо братишка, у меня есть решение :) вот им вставить рабочий код

JayantaChatterjee

Я рад это слышать..
@Atul добро пожаловать..