11-02-22, 07:48 PM
السلام عليكم ورحمة الله وبركاته
فى البرنامج بتاعى عملت استيراد بيانات من اكسيل وشغالة تمام اوي وهى عن طريق اختيار اعمدة الاكسيل من ليست بوكس واضافتها في قاعدة البيانات
بس طبعا مش شرط المستخدم يحدد كل الاعمدة ممكن يختار جزء فابالتالى الي مش هيختاره هيتحفظ فاضي
مثلا:
زي الصورة كدة ان مثلا اخترت كل البيانات من شيت الاكسيل بس مش هختار الملاحظات علشان مش عاوزة عاوز بقى لما يستورد البيانات يحفظ الملاحظات بس فاضة
الكود الي مستخدمة
طبعا لما اجي انفذ الكود ده فهو فعلا بيحفظ معايا كله تمام وحتي لو سايب ليست بوكس فاضية فبيحفظ عادي بس للاسف بيجبلى الرسالة دي
وطبعا الحل فى الرسالة دي هو اغير جلمة ال if الي في الكود الي فوق الى الاتى:
بس للاسف لما اغيرها لكدة مش بيرضي يحفظ قيم فارغة خالص
وبيجب الرسالة دي
لو حد عنده حل للمشكلة دي او عنده فكره ياريت يفيدنا وشكرا
فى البرنامج بتاعى عملت استيراد بيانات من اكسيل وشغالة تمام اوي وهى عن طريق اختيار اعمدة الاكسيل من ليست بوكس واضافتها في قاعدة البيانات
بس طبعا مش شرط المستخدم يحدد كل الاعمدة ممكن يختار جزء فابالتالى الي مش هيختاره هيتحفظ فاضي
مثلا:
زي الصورة كدة ان مثلا اخترت كل البيانات من شيت الاكسيل بس مش هختار الملاحظات علشان مش عاوزة عاوز بقى لما يستورد البيانات يحفظ الملاحظات بس فاضة
الكود الي مستخدمة
كود :
for (int i = 0; i < DgvSearch.Rows.Count; i++)
{
if (Con.State == ConnectionState.Closed)
{
Con.Open();
}
tbl3 = db3.readData("select max (Sup_ID) from Suppliers", "");
Cmd3 = new SqlCommand("insert into Suppliers (Sup_ID,Sup_Name,Compny_Name,Sup_Adderss,Sup_Phone,Notes) Values (@Sup_ID,@Sup_Name,@Compny_Name,@Sup_Adderss,@Sup_Phone,@Notes)", Con);
if ((Convert.ToInt32(tbl3.Rows[0][0]) + 1).ToString() == null)
{
Cmd3.Parameters.Add(new SqlParameter("@Sup_ID", SqlDbType.Int)).Value = DBNull.Value;
}
else
{
Cmd3.Parameters.Add(new SqlParameter("@Sup_ID", SqlDbType.Int)).Value = (Convert.ToInt32(tbl3.Rows[0][0]) + 1).ToString();
}
if (cbx2.SelectedIndex <= -1)
{
Cmd3.Parameters.Add(new SqlParameter("@Sup_Name", SqlDbType.VarChar)).Value = DBNull.Value ;
}
else
{
Cmd3.Parameters.Add(new SqlParameter("@Sup_Name", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx2.SelectedIndex].Value;
}
if (cbx3.SelectedIndex <= -1)
{
Cmd3.Parameters.Add(new SqlParameter("@Compny_Name", SqlDbType.VarChar)).Value = DBNull.Value;
}
else
{
Cmd3.Parameters.Add(new SqlParameter("@Compny_Name", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx3.SelectedIndex].Value;
}
if (cbx4.SelectedIndex <= -1)
{
Cmd3.Parameters.Add(new SqlParameter("@Sup_Adderss", SqlDbType.VarChar)).Value = DBNull.Value;
}
else
{
Cmd3.Parameters.Add(new SqlParameter("@Sup_Adderss", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx4.SelectedIndex].Value;
}
if (cbx5.SelectedIndex <= -1)
{
Cmd3.Parameters.Add(new SqlParameter("@Sup_Phone", SqlDbType.VarChar)).Value = DBNull.Value;
}
else
{
Cmd3.Parameters.Add(new SqlParameter("@Sup_Phone", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx5.SelectedIndex].Value;
}
if (cbx6.SelectedIndex <= -1)
{
Cmd3.Parameters.Add(new SqlParameter("@Notes", SqlDbType.VarChar)).Value = DBNull.Value;
}
else
{
Cmd3.Parameters.Add(new SqlParameter("@Notes", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx6.SelectedIndex].Value;
}
Cmd3.ExecuteNonQuery();
Con.Close();
}
XtraMessageBox.Show("تم إستيراد بيانات الموردين بنجاح ", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information);
SelectAll_Table3();
}
وطبعا الحل فى الرسالة دي هو اغير جلمة ال if الي في الكود الي فوق الى الاتى:
كود :
if (DgvSearch.Rows[i].Cells[cbx5.SelectedIndex].Value == null)
{
Cmd3.Parameters.Add(new SqlParameter { ParameterName = "@Notes", Value = DBNull.Value });
}
else
{
Cmd3.Parameters.Add(new SqlParameter { ParameterName = "@Notes", Value = DgvSearch.Rows[i].Cells[cbx5.SelectedIndex].Value });
}
بس للاسف لما اغيرها لكدة مش بيرضي يحفظ قيم فارغة خالص
وبيجب الرسالة دي
لو حد عنده حل للمشكلة دي او عنده فكره ياريت يفيدنا وشكرا