ايمن ميلاد نشر 31 ديسمبر 2024 أرسل تقرير نشر 31 ديسمبر 2024 السلام عليكم لدي كود عرض بيانات فاتورة وتفاصيل الفاتورة لماذا لا يتم عرض بيانات 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(); 1 اقتباس
0 عبد الوهاب بومعراف نشر 31 ديسمبر 2024 أرسل تقرير نشر 31 ديسمبر 2024 المشكلة أنك تقوم بإنشاء النموذج وتمرير البيانات له ولكن لا تقوم بعرضه قبل إغلاق النموذج الحالي لذا يجب استدعاء 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(); 1 اقتباس
0 ايمن ميلاد نشر 1 يناير الكاتب أرسل تقرير نشر 1 يناير (معدل) ظهرت البيانات الان لماذا عندما اعدل فاتورة لكي اضيف صنف جديد لها يتم اضافة اعمدة جديدة لداتا قريد فيو 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); } تم التعديل في 1 يناير بواسطة ايمن ميلاد اقتباس
0 Mustafa Suleiman نشر 8 يناير أرسل تقرير نشر 8 يناير بتاريخ On 1/1/2025 at 17:01 قال ايمن ميلاد: ظهرت البيانات الان لماذا عندما اعدل فاتورة لكي اضيف صنف جديد لها يتم اضافة اعمدة جديدة لداتا قريد فيو 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); } بسبب طريقة تعاملك مع الـ DataGridView عند إضافة الأصناف وتحديثها، فحاليًا تقوم بإضافة أعمدة جديدة في كل مرة يتم فيها تعديل الفاتورة، وذلك هو سبب ظهور الأعمدة المكررة. بالتالي عليك التأكد من أنك تقوم بإضافة الأعمدة مرة واحدة فقط عند تحميل النموذج أو عند إنشاء الـ DataGridView لأول مرة، من خلال إنشاء حدث Form_Load للنموذج ونقل الكود الخاص بإنشاء الأعمدة إلى ذلك الحدث. private void Form1_Load(object sender, EventArgs e) { 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", "الإجمالي"); } } واكتب بدلاً من Form1 في Form1_Load اسم النموذج لديك، بعد ذلك قم فقط بمسح الصفوف باستخدام dataGridView1.Rows.Clear(); عند الحاجة. 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); 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_["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); } اقتباس
السؤال
ايمن ميلاد
السلام عليكم لدي كود عرض بيانات فاتورة وتفاصيل الفاتورة لماذا لا يتم عرض بيانات
كود استدعاء دالة
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.