اذهب إلى المحتوى

السؤال

نشر

السلام عليكم لدي كود عرض بيانات فاتورة وتفاصيل الفاتورة لماذا لا يتم عرض بيانات 

public void show_details(string id)
        {
            try
            {
                // إنشاء DataTable وملء البيانات باستخدام SqlDataAdapter
                string sql = "SELECT * FROM BUYBILL WHERE BUYCODE = '" + (id)+ "'";
                DataTable dt = new DataTable();

                SqlDataAdapter adp = new SqlDataAdapter(sql, Class1.con);
                
                    adp.Fill(dt);
                

                if (dt.Rows.Count == 0)
                {
                    MessageBox.Show("يرجى التأكد من رقم الفاتورة", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    DataRow row = dt.Rows[0];
                    BUYCODE.Text = row["BUYCODE"].ToString();
                    BUYTYPE.Text = row["BUYTYPE"].ToString();
                    IMPORTERNAME.Text = row["IMPORTERNAME"].ToString();
                    if (row["BUYDATE"] != DBNull.Value)
                        BUYDATE.Value = DateTime.Parse(row["BUYDATE"].ToString()).Date;
                    NOTES.Text = row["NOTES"].ToString();
                    total_.Text = row["TOTAL"].ToString();
                    totalqty.Text = row["TOTALQTY"].ToString();

                    DataTable dt_ = new DataTable();
                    string sql_ = "SELECT * FROM BUY_DET WHERE BUYCODE = N'" + (id) + "'";

                    SqlDataAdapter adp_ = new SqlDataAdapter(sql_, Class1.con);
                  
                        adp_.Fill(dt_);
                    

                    // إضافة أعمدة إلى DataGridView إذا لم تكن موجودة بالفعل
                    if (dataGridView1.Columns.Count == 0)
                    {
                        dataGridView1.Columns.Add("ITEMCODE", "كود الصنف");
                        dataGridView1.Columns.Add("ITEMNAME", "اسم الصنف");
                        dataGridView1.Columns.Add("PRICE", "السعر");
                        dataGridView1.Columns.Add("QTY", "الكمية");
                        dataGridView1.Columns.Add("TOTAL", "الإجمالي");
                    }

                    dataGridView1.Rows.Clear();

                    foreach (DataRow detailRow in dt_.Rows)
                    {
                        dataGridView1.Rows.Add(detailRow["ITEMCODE"], detailRow["ITEMNAME"], detailRow["PRICE"], detailRow["QTY"], detailRow["TOTAL"]);
                    }

                    btn_edit.Enabled = true;
                    btn_save.Enabled = false;
                   
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("حدث خطأ: " + ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

كود استدعاء دالة 

 BUYBILL frm = new BUYBILL();
        frm.show_details(dataGridView1.CurrentRow.Cells[1].Value.ToString());
        this.Close();

 

Recommended Posts

  • 0
نشر

المشكلة أنك تقوم بإنشاء النموذج وتمرير البيانات له ولكن لا تقوم بعرضه قبل إغلاق النموذج الحالي لذا يجب استدعاء Show() أو ShowDialog() لعرض النموذج الجديد:

this.Close();

وهذا خطأ لأنه يغلق النافذة قبل عرض البيانات والحل هو إضافة Show() قبل إغلاق النموذج الحالي:

BUYBILL frm = new BUYBILL();
frm.show_details(dataGridView1.CurrentRow.Cells[1].Value.ToString());
frm.Show();
this.Close();

أو:

BUYBILL frm = new BUYBILL();
frm.show_details(dataGridView1.CurrentRow.Cells[1].Value.ToString());
frm.ShowDialog();
this.Close();
  • 0
نشر (معدل)

ظهرت البيانات الان  

لماذا عندما اعدل فاتورة لكي اضيف صنف جديد لها يتم اضافة اعمدة جديدة لداتا قريد فيو 

try
            { // تعريف المتغير للحصول على اسم المحل من عنصر التحكم
                DialogResult result = MessageBox.Show("هل أنت متأكد من أنك تريد تعديل البيانات؟", "تأكيد التعديل", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if ((result == DialogResult.Yes))
                {
                  



                if (BUYTYPE.SelectedIndex < 0)
                {
                    MessageBox.Show("يرجي اختيار نوع الفاتورة", "تنبيه");
                    BUYTYPE.Select();
                    return;
                }
                if (dataGridView1.Rows.Count == 0)
                {
                    MessageBox.Show("لاتوجد أصناف لتعدليها ", "تنبيه");
                    return;
                }






                DataTable dt = new DataTable();
                SqlDataAdapter adp = new SqlDataAdapter("select *from buybill where buycode='" + BUYCODE.Text + "'", Class1.con);
                adp.Fill(dt);
                    if (dt.Rows.Count == 0)
                    {
                        int code = Class1.CODE_GENE("BUYBILL", "ID") + 1;
                        BUYCODE.Text = code.ToString();

                    }
                    else
                    {
                        DataRow dr = dt.Rows[0];
                        dr["BUYCODE"] = BUYCODE.Text;
                        dr["BUYTYPE"] = BUYTYPE.Text;
                        dr["IMPORTERNAME"] = IMPORTERNAME.Text;
                        dr["NOTES"] = NOTES.Text;
                        dr["BUYDATE"] = BUYDATE.Value;
                        dr["TOTAL"] = Convert.ToDecimal(total_.Text);
                        dr["TOTAL_ARBIC"] = totalar.Text;
                        dr["TOTALQTY"] = Convert.ToInt32(totalqty.Text);
                        dr["DebtAmount"] = Convert.ToDecimal(total_.Text);

                        dt.Rows.Add(dr);
                        SqlCommandBuilder save = new SqlCommandBuilder(adp);
                        adp.Update(dt);

                        SqlCommand cmd_del = new SqlCommand();
                        cmd_del.Connection = Class1.con;
                        cmd_del.CommandText = "DELETE FROM BUY_DET WHERE BUYCODE ='" + BUYCODE.Text + "'";
                        cmd_del.ExecuteNonQuery();

                        DataTable dtDetails = new DataTable();

                        adp = new SqlDataAdapter("SELECT *FROM BUY_DET", Class1.con);
                        adp.Fill(dtDetails);
                        if (dataGridView1.Columns.Count == 0)
            {
                dataGridView1.Columns.Add("ITEMCODE", "كود الصنف");
                dataGridView1.Columns.Add("ITEMNAME", "اسم الصنف");
                dataGridView1.Columns.Add("PRICE", "السعر");
                dataGridView1.Columns.Add("QTY", "الكمية");
                dataGridView1.Columns.Add("TOTAL", "الإجمالي");
            }

            dataGridView1.Rows.Clear();
                        for (int i = 0; i < dataGridView1.Rows.Count; i++)
                        {
                            DataRow dr_ = dtDetails.NewRow();
                            dr_["BUYCODE"] = BUYCODE.Text;
                            dr_["ITEMCODE"] = dataGridView1.Rows[i].Cells[0].Value;
                            dr_["ITEMNAME"] = dataGridView1.Rows[i].Cells[1].Value;
                            dr_["PRICE"] = dataGridView1.Rows[i].Cells[2].Value;
                            //dr_["TOTAL"] = total_.Text;
                            dr_["QTY"] = dataGridView1.Rows[i].Cells[3].Value;
                            dtDetails.Rows.Add(dr_);
                            dr_["TOTAL"] = Convert.ToDecimal(dataGridView1.Rows[i].Cells[2].Value) * Convert.ToDecimal(dataGridView1.Rows[i].Cells[3].Value);
                            string itemCode = dataGridView1.Rows[i].Cells[0].Value.ToString();
                            int qty = Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value);
                            UpdateItemQuantity(itemCode, qty);
                        }
                        SqlCommandBuilder cmd_ = new SqlCommandBuilder(adp);
                        adp.Update(dtDetails);
                        MessageBox.Show(" تم حفظ تعديل بيانات  فاتورة بنجاح وتحديث كمية في المخزن ", "رسالة تأكيد", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        button1_Click(null, null);
                    }







                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

 

تم التعديل في بواسطة ايمن ميلاد

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...