(08-07-19, 11:30 PM)elgokr كتب :بخصوص المشاركة رقم #4خاص المشروع المرفق تم التعديل على الكود بداخله ليصبح بهذا الشكل
كود :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
private DataSet ds = new DataSet();
private DataView dv = new DataView();
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private string sql;
public Form1()
{
InitializeComponent();
ComboBox_School();
// هذا السلطر تعبئه الكمبو بوكس
DB.FillComBobx(comboBox1, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السطر يتم من خلاله تعبئه كمبو بوكس خارج الداتا فيو لو امكن تعديله لتعبئه كمبو بوكس داخل الداتا فيو ايضا
//DB.FillComBobx(Col_School_Nam, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السلطر لاستدعاء البيانات داخل الداتا فيو
DB.FillDGV(DGV_Schol, "select TB_Schol.School_ID,Emp_ID,Schol_Start,Schol_Date from TB_Schol,TB_School where TB_Schol.School_ID=TB_School.School_ID and Emp_ID=" + this.Txt_Emp_ID.Text + "");
}
void ComboBox_School() // كود لتعبئه الكمبو بوكس داخل الداتا فيو
{
DB.openDB();
SqlDataAdapter sql = new SqlDataAdapter("select * from TB_School", DB.Con);
DataTable Dt = new DataTable();
sql.Fill(Dt);
Col_School.ValueMember = "School_ID";
Col_School.DisplayMember = "School_Nam";
DataRow topItem = Dt.NewRow();
topItem[0] = 0;
topItem[1] = "-أختر-";
Dt.Rows.InsertAt(topItem, 0);
Col_School.DataSource = Dt;
}
private void Btn_Save_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in DGV_Schol.Rows)
{
if (row.Cells[0].Value == null)
{
sql = "insert into TB_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)";
}
else
{
sql = "update TB_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID ";
}
DB.Con.Close();
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
DB.Con.Open();
cmd.ExecuteNonQuery();
DB.Con.Close();
MessageBox.Show("تم الحفظ بنجاح");
}
}
}
}
ولكن لدي بعض الاسؤلة بسبب عدم تمكنى من اختبارالبرنامج بعد تعديل الكود بسبب اختلاف اصدار قاعدة البيانات فاذا كان تم سحبها كاسكربت كود سيكون افضلوعدم تمكنى ايضاً من ارفاق المشروع بعد التعديل ايضاً بسبب اختلاف الاصدار لديك ولدي
على اى حال السؤال الاول بخصوص هذا السطر
كود :
if (row.Cells[0].Value == null)
// الاول كان بهذا الشكل
if (row.Cells[0].Value == "")
هل عملية الاضافة عند داخل بيانات جديدةيتم تعبئة السطر الجديد بدون كتابة وادخال رقم للمسلسللان اذا كان الرد لا فهنا الشرط من التحقق هنا خطاء تماماً وانه سيعمل دائماً على تحديث فقط وليس ادخالالا اذا كنت عملت تجميد لعمود المسلسل من التعديل والكتابة به
السؤال الثاني من هو خصائص هذا العمود
PHP كود :
School_ID
حيث ان القيمة يتم تعبئتها من هنا
PHP كود :
row.Cells[2].Value
والمقصود به رقم الموظف والمشكلة انك كنت عامل فى الكود انه من نوع نص
كود :
DbType.String
وتم التعديل ليكون
كود :
DbType.Int32
فكما ذكرت انا لا اعلم محتوى قاعدة البيانات بسبب اختلاف الاصدار لديك ولدي
السؤال الاخيرانت تستخدم التالى
PHP كود :
@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date
بينما عند اعطاء القيم لها تكون
كود :
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
الاول بعدد 6 والثاني بعدد 5 مش ملاحظ انك لم تعطي قيمة لـ
PHP كود :
@Schol_ID
اتمنى مراجعة الامر او ارفاق المثال من خلال قاعدة بيانات Accessسيسهل عليك الامر فى عملية اطلاع الجميع الامروبعد اتمام فهم الامر وامتلاك الكود يمكنك تعديل الكود من Access الى Sql بكل سهولة
تحياتى لكوتمنياتى لك التوفيق
شكرا لك استاذي الفاضل لاهتمامك
مرفق صوره من جدول TB_Schol الذي يتم العمل عليه
نظرا لانى لا استطيع عمل قاعده بيانات على الاكسس خبرتي لا تؤهلنى لذلك
ومرفق ايضا صوره لشاشه لادخال
كل ال محتاجه كود حفظ وتعديل من االدتا فيو مباشرا
ومش مهم يكون نفس الكود المرفق يني لو هناك فكرا افظل مافيش مشكله المهم تكون تؤي نفس النتيجه وهي تعديل واضافه وحذف عن طريق الداتا فيو
مع العلم ان iD يتم لترقيم تلقائي للجدول
وجزاك الله كل خير
(09-07-19, 12:53 AM)amonem كتب :(08-07-19, 11:30 PM)elgokr كتب :بخصوص المشاركة رقم #4خاص المشروع المرفق تم التعديل على الكود بداخله ليصبح بهذا الشكل
كود :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
private DataSet ds = new DataSet();
private DataView dv = new DataView();
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private string sql;
public Form1()
{
InitializeComponent();
ComboBox_School();
// هذا السلطر تعبئه الكمبو بوكس
DB.FillComBobx(comboBox1, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السطر يتم من خلاله تعبئه كمبو بوكس خارج الداتا فيو لو امكن تعديله لتعبئه كمبو بوكس داخل الداتا فيو ايضا
//DB.FillComBobx(Col_School_Nam, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السلطر لاستدعاء البيانات داخل الداتا فيو
DB.FillDGV(DGV_Schol, "select TB_Schol.School_ID,Emp_ID,Schol_Start,Schol_Date from TB_Schol,TB_School where TB_Schol.School_ID=TB_School.School_ID and Emp_ID=" + this.Txt_Emp_ID.Text + "");
}
void ComboBox_School() // كود لتعبئه الكمبو بوكس داخل الداتا فيو
{
DB.openDB();
SqlDataAdapter sql = new SqlDataAdapter("select * from TB_School", DB.Con);
DataTable Dt = new DataTable();
sql.Fill(Dt);
Col_School.ValueMember = "School_ID";
Col_School.DisplayMember = "School_Nam";
DataRow topItem = Dt.NewRow();
topItem[0] = 0;
topItem[1] = "-أختر-";
Dt.Rows.InsertAt(topItem, 0);
Col_School.DataSource = Dt;
}
private void Btn_Save_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in DGV_Schol.Rows)
{
if (row.Cells[0].Value == null)
{
sql = "insert into TB_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)";
}
else
{
sql = "update TB_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID ";
}
DB.Con.Close();
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
DB.Con.Open();
cmd.ExecuteNonQuery();
DB.Con.Close();
MessageBox.Show("تم الحفظ بنجاح");
}
}
}
}
ولكن لدي بعض الاسؤلة بسبب عدم تمكنى من اختبارالبرنامج بعد تعديل الكود بسبب اختلاف اصدار قاعدة البيانات فاذا كان تم سحبها كاسكربت كود سيكون افضلوعدم تمكنى ايضاً من ارفاق المشروع بعد التعديل ايضاً بسبب اختلاف الاصدار لديك ولدي
على اى حال السؤال الاول بخصوص هذا السطر
كود :
if (row.Cells[0].Value == null)
// الاول كان بهذا الشكل
if (row.Cells[0].Value == "")
هل عملية الاضافة عند داخل بيانات جديدةيتم تعبئة السطر الجديد بدون كتابة وادخال رقم للمسلسللان اذا كان الرد لا فهنا الشرط من التحقق هنا خطاء تماماً وانه سيعمل دائماً على تحديث فقط وليس ادخالالا اذا كنت عملت تجميد لعمود المسلسل من التعديل والكتابة به
السؤال الثاني من هو خصائص هذا العمود
PHP كود :
School_ID
حيث ان القيمة يتم تعبئتها من هنا
PHP كود :
row.Cells[2].Value
والمقصود به رقم الموظف والمشكلة انك كنت عامل فى الكود انه من نوع نص
كود :
DbType.String
وتم التعديل ليكون
كود :
DbType.Int32
فكما ذكرت انا لا اعلم محتوى قاعدة البيانات بسبب اختلاف الاصدار لديك ولدي
السؤال الاخيرانت تستخدم التالى
PHP كود :
@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date
بينما عند اعطاء القيم لها تكون
كود :
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
الاول بعدد 6 والثاني بعدد 5 مش ملاحظ انك لم تعطي قيمة لـ
PHP كود :
@Schol_ID
اتمنى مراجعة الامر او ارفاق المثال من خلال قاعدة بيانات Accessسيسهل عليك الامر فى عملية اطلاع الجميع الامروبعد اتمام فهم الامر وامتلاك الكود يمكنك تعديل الكود من Access الى Sql بكل سهولة
تحياتى لكوتمنياتى لك التوفيق
شكرا لك استاذي الفاضل لاهتمامك
مرفق صوره من جدول TB_Schol الذي يتم العمل عليه
نظرا لانى لا استطيع عمل قاعده بيانات على الاكسس خبرتي لا تؤهلنى لذلك
ومرفق ايضا صوره لشاشه لادخال
كل ال محتاجه كود حفظ وتعديل من االدتا فيو مباشرا
ومش مهم يكون نفس الكود المرفق يني لو هناك فكرا افظل مافيش مشكله المهم تكون تؤي نفس النتيجه وهي تعديل واضافه وحذف عن طريق الداتا فيو
مع العلم ان iD يتم لترقيم تلقائي للجدول
وجزاك الله كل خير
ودا ملف مرفق مع قاعده بيانات سيكول به الجداول
ملحوظه ممكن حضرتك تعمل كود اخر المه تكون النتيجه وحده
ولك جزيل الشكر والاحترام
