المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
السلام عليكم ورحمه الله تعالى وبركاته
ارجو من اساتذتى الكرام مساعدتى فى اكواد هذه الشاشه
حيث اننى لا اعرف كيف يتم التعامل مع هذه الشاشه
هذه الشاشه بها بيانات خاصه للعاملين
وبها عدد 4 داتا فيو بيتم اختيار بعض الاشياء الخاصه لكل عامل
وكل داتا فيو لها جدول منفصل خاص بها
محتاج كود حفظ يحفظ بيانات العامل فى جدول الخاص به وايضا يحفظ اي اختيارات تتم من خلال الداتا فيو كله على حسب الجدول الخاص بها
مع مراعاه انه من الممكن اختيار اكثر من حاجه داخل الداتا فيو للعامل الواحد
جدول بيانات العاملين = Employ
جدول الداتا فيو رقم 1 = Table_1
جدول الداتا فيو رقم 2 = Table_2
جدول الداتا فيو رقم 3 = Table_3
جدول الداتا فيو رقم 4 = Table_4
اتمنى اجد من يساعدنى فى اكواد هذه الشاشه نظرا لاننى ليس لدي خبره فى هذا المجال
وجزاكم الله كل خير
مرفق ملف للعمل عليه وبه قاعده البيانات والجداول المستخدمه لهذه الشاشه
ولكم منى كل االاحترام والتقدير
وجزاكم الله عنا كل خير وزادكم الله علما نافعا ورزقا واسعا
المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
اتمنى اجد من يساعدنى فى هذا الطلب
المشاركات : 2,324
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 13917
تم شكره 5687 مرات في 2270 مشاركات
انا اطلع الان على المثال و لكن عندي سؤال :
ما اسم الجدول الذي يخزن به اسم الموظف .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
(31-07-19, 12:15 AM)asemshahen5 كتب : انا اطلع الان على المثال و لكن عندي سؤال :
ما اسم الجدول الذي يخزن به اسم الموظف .
جزاك الله كل خير
اسم الجدول
Employ
ودي صوره من جدول الموظفين وصوره من الجداول الفرعيه
المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
السلام عليكم ورحمه الله تعالى وبركاته
اساتذتى الافاضل رجاء مساعدتى فى هذه الشاشه
هل من مجيب
المشاركات : 2,324
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 13917
تم شكره 5687 مرات في 2270 مشاركات
31-07-19, 10:28 AM
(آخر تعديل لهذه المشاركة : 31-07-19, 10:37 AM {2} بواسطة asemshahen5.)
ضع هذا بالكلاس :
PHP كود :
public static void SaveColumnValueXT(DataGridView DGV_Employ, Int32 RowIndex, string TableName, string IDCol, Int32 IDColIndex, bool IdentityIncrement) { if (RowIndex < 0) { return; } ArrayList ArrCol = new ArrayList(); ArrCol = FillArrayList(TableName); //if (DGV_Employ.Rows[RowIndex].Cells[IDColIndex].Value != null) //{ DataGridViewRow dgvRow = DGV_Employ.Rows[RowIndex]; SqlCommand sqlCmd = new SqlCommand(); sqlCmd.CommandType = CommandType.Text; string SqlStr = string.Empty; string SqlPar = string.Empty;
if (DGV_Employ.Rows[RowIndex].Cells[IDColIndex].Value.ToString() == string.Empty || RowIndex == DGV_Employ.Rows.Count - 2)//Insert { SqlStr = "INSERT INTO " + TableName + "("; for (int i = 0; i < ArrCol.Count; i++) { if (i == ArrCol.Count - 1) { if (IdentityIncrement == true) { if (IDCol == ArrCol[i].ToString()) { continue; } }
SqlStr += ArrCol[i].ToString() + ")VALUES("; SqlPar += "@" + ArrCol[i].ToString() + ")"; } else { if (IdentityIncrement == true) { if (IDCol == ArrCol[i].ToString()) { continue; } } SqlStr += ArrCol[i].ToString() + ","; SqlPar += "@" + ArrCol[i].ToString() + ","; } } SqlStr += SqlPar; sqlCmd = new SqlCommand(SqlStr, Con); } else //update { SqlStr = "UPDATE " + TableName + " SET "; for (int i = 0; i < ArrCol.Count; i++) {
if (i == ArrCol.Count - 1) { if (IDCol == ArrCol[i].ToString()) { continue; } SqlStr += ArrCol[i].ToString() + "=@" + ArrCol[i].ToString(); } else { if (IDCol == ArrCol[i].ToString()) { continue; } SqlStr += ArrCol[i].ToString() + "=@" + ArrCol[i].ToString() + ","; } } SqlStr += " WHERE " + IDCol + "=@" + IDCol + "" + ""; sqlCmd = new SqlCommand(SqlStr, Con); } for (int i = 0; i < ArrCol.Count; i++) { if (SqlStr.Contains("UPDATE")) { sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value == null ? "" : DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString()); } else if (SqlStr.Contains("INSERT")) { if (IdentityIncrement == true) { if (IDCol == ArrCol[i].ToString()) { continue; } else { sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString());// == DBNull.Value ? "" : dgvRow.Cells[i].Value.ToString()); } } else { sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString());// == DBNull.Value ? "" : dgvRow.Cells[i].Value.ToString()); } } } Con.Open(); sqlCmd.ExecuteNonQuery(); Con.Close(); FillDGV(DGV_Employ, "Select * From " + TableName); }
private static ArrayList FillArrayList(string TableName) { DataTable DT = new DataTable(); ArrayList ColumnNameXT = new ArrayList(); ColumnNameXT.Clear(); DT = DB.ExecSelect("Select * From "+ TableName); for (int i = 0; i < DT.Columns.Count; i++) { ColumnNameXT.Add(DT.Columns[i].ColumnName); } return ColumnNameXT; }
و هذا كود استخدامه :
PHP كود :
private void DGV_Employ_CellValueChanged(object sender, DataGridViewCellEventArgs e) { DB.SaveColumnValueXT(DGV_Employ, e.RowIndex, "Employ", "Emp_ID",0,true); }
و اصلح كود التنظيف كالتالي :
PHP كود :
public static void CleanAllControl(Control ctrlParent, bool DGVCleanRow) { foreach (Control ctrl in ctrlParent.Controls) { if (ctrl.HasChildren == true) { CleanAllControl(ctrl, DGVCleanRow); } if (ctrl is System.Windows.Forms.TextBox) { ctrl.Text = ""; } else if (ctrl is CheckBox) { //bool chk; CheckBox chk = ctrlParent.Controls[ctrl.Name] as CheckBox; chk.Checked = false; } else if (ctrl is System.Windows.Forms.ComboBox) ctrl.Text = ""; else if (ctrl is DataGridView) { if (DGVCleanRow == true) { DataGridView Dgv = ctrlParent.Controls[ctrl.Name] as DataGridView; Dgv.DataSource = null; } } } //return StrD; }
PHP كود :
//true لتنظيف الجداول ايضا//false لا تنظف الجداول DB.CleanAllControl(this, true);
كود الماكس عدلته لك في موضوع آخر .
نسيت إخبارك إحذف كل أزرار الحذف من الجداول ليعمل الكود على اي جدول .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
31-07-19, 05:23 PM
(آخر تعديل لهذه المشاركة : 31-07-19, 10:31 PM {2} بواسطة amonem.)
(31-07-19, 10:28 AM)asemshahen5 كتب : ضع هذا بالكلاس :
PHP كود :
public static void SaveColumnValueXT(DataGridView DGV_Employ, Int32 RowIndex, string TableName, string IDCol, Int32 IDColIndex, bool IdentityIncrement) { if (RowIndex < 0) { return; } ArrayList ArrCol = new ArrayList(); ArrCol = FillArrayList(TableName); //if (DGV_Employ.Rows[RowIndex].Cells[IDColIndex].Value != null) //{ DataGridViewRow dgvRow = DGV_Employ.Rows[RowIndex]; SqlCommand sqlCmd = new SqlCommand(); sqlCmd.CommandType = CommandType.Text; string SqlStr = string.Empty; string SqlPar = string.Empty;
if (DGV_Employ.Rows[RowIndex].Cells[IDColIndex].Value.ToString() == string.Empty || RowIndex == DGV_Employ.Rows.Count - 2)//Insert { SqlStr = "INSERT INTO " + TableName + "("; for (int i = 0; i < ArrCol.Count; i++) { if (i == ArrCol.Count - 1) { if (IdentityIncrement == true) { if (IDCol == ArrCol[i].ToString()) { continue; } }
SqlStr += ArrCol[i].ToString() + ")VALUES("; SqlPar += "@" + ArrCol[i].ToString() + ")"; } else { if (IdentityIncrement == true) { if (IDCol == ArrCol[i].ToString()) { continue; } } SqlStr += ArrCol[i].ToString() + ","; SqlPar += "@" + ArrCol[i].ToString() + ","; } } SqlStr += SqlPar; sqlCmd = new SqlCommand(SqlStr, Con); } else //update { SqlStr = "UPDATE " + TableName + " SET "; for (int i = 0; i < ArrCol.Count; i++) {
if (i == ArrCol.Count - 1) { if (IDCol == ArrCol[i].ToString()) { continue; } SqlStr += ArrCol[i].ToString() + "=@" + ArrCol[i].ToString(); } else { if (IDCol == ArrCol[i].ToString()) { continue; } SqlStr += ArrCol[i].ToString() + "=@" + ArrCol[i].ToString() + ","; } } SqlStr += " WHERE " + IDCol + "=@" + IDCol + "" + ""; sqlCmd = new SqlCommand(SqlStr, Con); } for (int i = 0; i < ArrCol.Count; i++) { if (SqlStr.Contains("UPDATE")) { sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value == null ? "" : DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString()); } else if (SqlStr.Contains("INSERT")) { if (IdentityIncrement == true) { if (IDCol == ArrCol[i].ToString()) { continue; } else { sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString());// == DBNull.Value ? "" : dgvRow.Cells[i].Value.ToString()); } } else { sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString());// == DBNull.Value ? "" : dgvRow.Cells[i].Value.ToString()); } } } Con.Open(); sqlCmd.ExecuteNonQuery(); Con.Close(); FillDGV(DGV_Employ, "Select * From " + TableName); }
private static ArrayList FillArrayList(string TableName) { DataTable DT = new DataTable(); ArrayList ColumnNameXT = new ArrayList(); ColumnNameXT.Clear(); DT = DB.ExecSelect("Select * From "+ TableName); for (int i = 0; i < DT.Columns.Count; i++) { ColumnNameXT.Add(DT.Columns[i].ColumnName); } return ColumnNameXT; }
و هذا كود استخدامه :
PHP كود :
private void DGV_Employ_CellValueChanged(object sender, DataGridViewCellEventArgs e) { DB.SaveColumnValueXT(DGV_Employ, e.RowIndex, "Employ", "Emp_ID",0,true); }
و اصلح كود التنظيف كالتالي :
PHP كود :
public static void CleanAllControl(Control ctrlParent, bool DGVCleanRow) { foreach (Control ctrl in ctrlParent.Controls) { if (ctrl.HasChildren == true) { CleanAllControl(ctrl, DGVCleanRow); } if (ctrl is System.Windows.Forms.TextBox) { ctrl.Text = ""; } else if (ctrl is CheckBox) { //bool chk; CheckBox chk = ctrlParent.Controls[ctrl.Name] as CheckBox; chk.Checked = false; } else if (ctrl is System.Windows.Forms.ComboBox) ctrl.Text = ""; else if (ctrl is DataGridView) { if (DGVCleanRow == true) { DataGridView Dgv = ctrlParent.Controls[ctrl.Name] as DataGridView; Dgv.DataSource = null; } } } //return StrD; }
PHP كود :
//true لتنظيف الجداول ايضا//false لا تنظف الجداول DB.CleanAllControl(this, true);
كود الماكس عدلته لك في موضوع آخر .
نسيت إخبارك إحذف كل أزرار الحذف من الجداول ليعمل الكود على اي جدول .
الف شكر ليك استاذي الفالى
بس لو ممكن تتعب شويه معايا وترفق الاكواد داخل الملف
اكون شاكر جدا لحضرتك لاننى حاولت افهم الكود مقدرتش لقلة خبرتى
وجزاك الله كل خير
المشاركات : 2,324
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 13917
تم شكره 5687 مرات في 2270 مشاركات
الكود هو عبارة عن مصمم للاستعلامات من اضافة وتعديل حسب اسم الجدول حيث يعمل ارراي ليست من اسماء الاعمدة الموجودة بالجدول عن طريق FillArrayList ثم يقوم بعمل تنفيذ للاستعلام بحسب رقم السجل الماخوذ من e.RowIndex الخاص بالغريد فيو اما "Emp_ID" فهو عامود الايدي 0 هي ترتيب العامود بالجدول للتاكد هل العامود به سجل يقوم بعمل تعليمة اب دايت اما اذا كان فارغ يقوم بعمل سجل جديد اي يعمل استعلام خاص بالاضافة اما true فهي تعبر عن عامود اي دي هل هو ترقيم تلقائي ام لا ليتم اضافته بالاستعلام ام لا الكود الاساسي هو لكيفية عمل استعلام اضافة او تعديل فقط باسم الجدول اذا اردت التعمق اكثر في صنع اكواد تصنع الاستعلامات و الاكواد تستطيع دراستها من سورس كود صانع الاكواد .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
(01-08-19, 01:53 AM)asemshahen5 كتب : الكود هو عبارة عن مصمم للاستعلامات من اضافة وتعديل حسب اسم الجدول حيث يعمل ارراي ليست من اسماء الاعمدة الموجودة بالجدول عن طريق FillArrayList ثم يقوم بعمل تنفيذ للاستعلام بحسب رقم السجل الماخوذ من e.RowIndex الخاص بالغريد فيو اما "Emp_ID" فهو عامود الايدي 0 هي ترتيب العامود بالجدول للتاكد هل العامود به سجل يقوم بعمل تعليمة اب دايت اما اذا كان فارغ يقوم بعمل سجل جديد اي يعمل استعلام خاص بالاضافة اما true فهي تعبر عن عامود اي دي هل هو ترقيم تلقائي ام لا ليتم اضافته بالاستعلام ام لا الكود الاساسي هو لكيفية عمل استعلام اضافة او تعديل فقط باسم الجدول اذا اردت التعمق اكثر في صنع اكواد تصنع الاستعلامات و الاكواد تستطيع دراستها من سورس كود صانع الاكواد .
شكرا لاهتمامك استتاذي الغالى
افهم من كلام حضرتك ان
الكود ال اضعه داخل الكلاس خاص باضافه البيانات عن طريق الداتا فيو ؟؟
ان كانت الاجابه ب نعم
عندي الشااشه المرفقه مكونه من 5 جدول
الشاشه مقسمه لعدد من التكست بوكس وكمبو بوكس وشيك بوكس وعدد 5 داتا جريدفيو الاولى خاصه بعرض بيانات الموظفين وهي اسمها DGV_Employ
,والثاانيه والثالثه ولرابعه والخامسه سوف يتم من خلالهم اختيارات بعض الاختيارت حسب كل موظف ومد الحفظ مطلوب يتمحفظ بيانات الموظف الموجوده فى التكست بوكس ولكمبو بوكس ويقوم الكود بعد ذلك يحفظ البيانات التى تم اختيارها من 4 داتا فيو حسب احتياج الموظف
تنويه
1- جدول Employ وهذا الجدول سيتم اضافه البيانات المدخله فى التكست بوكس الموجوده اعلى الشاشه
2- جدول Table_1 وهذا سيتم اضافه البيانات التى اختارها من الداتا فيو الخاصه للموظف
3- جدول Table_2 وهذا سيتم اضافه البيانات التى اختارها من الداتا فيو الخاصه للموظف
4- جدول Table_3 وهذا سيتم اضافه البيانات التى اختارها من الداتا فيو الخاصه للموظف
5- جدول Table_4 وهذا سيتم اضافه البيانات التى اختارها من الداتا فيو الخاصه للموظف
فهل هذا االكود يعمل هذا ؟؟
ارجو التوضيح
ملحوظه
الكود الذي قمن حضرتك مشكورا بعمله وعوهت اننى اضعه بالكلاس عمد وضعه ظهرر خطأ فى هذا الجزء
كود :
private static ArrayList FillArrayList(string TableName)
{
DataTable DT = new DataTable();
ArrayList ColumnNameXT = new ArrayList();
ColumnNameXT.Clear();
DT = DB.ExecSelect("Select * From " + TableName);
for (int i = 0; i < DT.Columns.Count; i++)
{
ColumnNameXT.Add(DT.Columns[i].ColumnName);
}
return ColumnNameXT;
}
نحديدا كلمة ArrayList
ارجو توضيح
او لو من الممكن تطبيق على الملف عشان اقدر استوعبه وافهم
وجزاك الله كل خير
وزادك اللهم علما نافعا ورزقا طيبا واسعا وكتتب لك الفرودوس الاعلى
المشاركات : 2,324
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 13917
تم شكره 5687 مرات في 2270 مشاركات
الاضافة و التعديل لجداول الداتا فيو تتم من SaveColumnValueXT .
اما FillArrayList لا تستخدمه هو خاص بتحميل اسماء العمدة ليتم عمل الاستعلام اوتوماتيكيا لهذا لم تجد
اي استعلام اضافة او تعديل لانه يولد عند حدث CellValueChanged في SaveColumnValueXT .
PHP كود :
private void DGV_Employ_CellValueChanged(object sender, DataGridViewCellEventArgs e) { DB.SaveColumnValueXT(DGV_Employ, e.RowIndex, "Employ", "Emp_ID",0,true); }
هذا فقط مايستخدم بالفورم لا شيئ اخر .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
|