منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تغير كود من vb.net ال سي شارب
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4
السلام عليكم ورحمة الله وبركاته
اخي الكريم راجعت مشروعك واتعبني قليلا لذلك ارتأيت ان اعمل مثال جدبد بنفس الحقول
وتسميات مختلفة قليلا المهم شي واحد مختلف وهو ان ازرار الحفظ والتعديل والحذف كل لوحده
وعند الاضافة نضيف صف فارغ ونملأه 
ومن ناحية الكومبوبوكس في الداتاغرايد ملأته من collection الموجود في Edit Columns للداتاغرايد
مرفق قاعدة بيانات SQL ... غير السيرفر الى الذي عندك
ارجو ان يكون طلبك قد تحقق والفضل لله
دمت بخير
(09-07-19, 10:09 AM)ابراهيم ايبو كتب : [ -> ]
السلام عليكم ورحمة الله وبركاته
اخي الكريم راجعت مشروعك واتعبني قليلا لذلك ارتأيت ان اعمل مثال جدبد بنفس الحقول
وتسميات مختلفة قليلا المهم شي واحد مختلف وهو ان ازرار الحفظ والتعديل والحذف كل لوحده
وعند الاضافة نضيف صف فارغ ونملأه 
ومن ناحية الكومبوبوكس في الداتاغرايد ملأته من collection الموجود في Edit Columns للداتاغرايد
مرفق قاعدة بيانات SQL ... غير السيرفر الى الذي عندك
ارجو ان يكون طلبك قد تحقق والفضل لله
دمت بخير

اولا انا بشكرك جدا على مجهودك واسف لو كنت تسببت فى تعبك 
ولكن للاسف 
ال انا محتاجه خلاف هذا المثال تماما
بالنسبه لطلبي لا يوجد ااى تكست بوكس والاضافه والتعديل والحذف تتم من خلال الداتا فيو مباشرا دون الاحتياج لتكست بوكس  نظرا لان شاشه االعمل الفعليه تضم عدد 6 داتا  فيو  لعدة جداول مختلفه بيتم اختيار بنود معينه تخص الموظف من كل دتا فيو ثم عند الضغط على حفظ يتم حفظ كل البيانات الموجوده فى كل داتا ولذلك طلبت كود حفظ  وتعديل  وحذف عن طريق الداتافيو مباشرا بحيث انى ااكرر هذا الكود حسب عدد الداتا فيو بعد تعديله حسب كل جدول ووضع  اكواد الحفظ عي مفتاح حفظ البيانات 
اتمنى تكون الفكره وضحت
ملحوظه حضرتك ارسلت لى رابط فيديو شبيه تماما بطلبي الخلاف الوحيد بين طلبي وشرح الفيديو هو صاحب الفيديو استخدم اجراء مخزن داخل السيكول سيرفر
 ال انا عيزو الغاء لاجراء المخذن واضافه لاجراء المخزن داخل كود الحفظ بحيث يتم الحفظ بدون استخدم اجراء مخزن 
ولك منى تحيااتى
فقط ضع مكان الإجراء المخزن استعلام الاضافة او التعديل أي تغيير


PHP كود :
cmd.CommandText "your sql commend";
cmd.CommandType CommandType.Text
       

فقط لا غيير .
(09-07-19, 03:45 PM)asemshahen5 كتب : [ -> ]فقط ضع مكان الإجراء المخزن استعلام الاضافة او التعديل أي تغيير

       cmd.CommandText = "your sql commend";
       cmd.CommandType = CommandType.Text;

فقط لا غيير .
شكرا لردك استاذي الغالى
خبرتى ضعيفه لو من الممكن
كود الاضافه هو


إقتباس :
private void dgvEmployee_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvEmployee.CurrentRow != null)
            {
                using (SqlConnection sqlCon = new SqlConnection(connectionString))
                {
                    sqlCon.Open();
                    DataGridViewRow dgvRow = dgvEmployee.CurrentRow;
                    SqlCommand sqlCmd = new SqlCommand("EmployeeAddOrEdit", sqlCon);
                    sqlCmd.CommandType = CommandType.StoredProcedure;
                    if (dgvRow.Cells["txtEmployeeID"].Value == DBNull.Value)//Insert
                        sqlCmd.Parameters.AddWithValue("@EmployeeID", 0);
                    else//update
                        sqlCmd.Parameters.AddWithValue("@EmployeeID", Convert.ToInt32(dgvRow.Cells["txtEmployeeID"].Value));
                    sqlCmd.Parameters.AddWithValue("@Name", dgvRow.Cells["txtName"].Value == DBNull.Value ? "" : dgvRow.Cells["txtName"].Value.ToString());
                    sqlCmd.Parameters.AddWithValue("@PositionID", Convert.ToInt32(dgvRow.Cells["cbxPosition"].Value == DBNull.Value ? "0" : dgvRow.Cells["cbxPosition"].Value.ToString()));
                    sqlCmd.Parameters.AddWithValue("@Office", dgvRow.Cells["txtOffice"].Value == DBNull.Value ? "" : dgvRow.Cells["txtOffice"].Value.ToString());
                    sqlCmd.Parameters.AddWithValue("@Age", Convert.ToInt32(dgvRow.Cells["txtAge"].Value == DBNull.Value ? "0" : dgvRow.Cells["txtAge"].Value.ToString()));
                    sqlCmd.ExecuteNonQuery();
                    PopulateDataGridView();
                }
            }
        }

والاجراء المخزن هو 
إقتباس :
CREATE PROC EmployeeAddOrEdit
@EmployeeID int,
@Name varchar(100),
@PositionID int,
@Office varchar(50),
@Age int
AS
IF @EmployeeID = 0
INSERT INTO Employee(Name,PositionID,Office,Age)
VALUES (@Name,@PositionID,@Office,@Age)
ELSE
UPDATE  Employee
SET
Name = @Name,
PositionID = @PositionID,
Office = @Office,
Age = @Age
WHERE EmployeeID = @EmployeeID

اتمنى ااضافه لاجراء المخزن ضمن الكود بحيث يكون االكود يعمل بدون اجراء مخزن
وجزك الله كل خير
دا رابط فيديو واخد منه الكود

https://www.youtube.com/watch?v=cQQy_IfFddg

يعني اريد نفس هذا الكود الموجود بالشرح ولكن بدون استخدام اجراءات مخزنه
 اتمنى تكون الفكره وصلت
تفضل هذا الكود بعد التعديلات التي طلبتها :

PHP كود :
       private void dgvEmployee_CellValueChanged(object senderDataGridViewCellEventArgs e)
 
       {
 
           if (dgvEmployee.CurrentRow != null)
 
           {
 
               using (SqlConnection sqlCon = new SqlConnection(@"server=.; Database=Accounts; Integrated Security=true"))
 
               {
 
                   DataGridViewRow dgvRow dgvEmployee.CurrentRow;
 
                   SqlCommand sqlCmd = new SqlCommand();
 
                   sqlCmd.CommandType CommandType.Text;
 
                   string SqlStr string.Empty;
 
                   if (dgvRow.Cells[0].Value == DBNull.Value)//Insert
 
                   {
 
                       SqlStr "INSERT INTO Employee(Name,PositionID,Office,Age)VALUES (@Name,@PositionID,@Office,@Age)";
 
                       sqlCmd = new SqlCommand(SqlStrsqlCon);
 
                   }
 
                   else //update
 
                   {
 
                       SqlStr "UPDATE Employee SET Name = @Name,PositionID = @PositionID,Office = @Office,Age = @Age WHERE EmployeeID = @EmployeeID";
 
                       sqlCmd = new SqlCommand(SqlStrsqlCon);
 
                       sqlCmd.Parameters.AddWithValue("@EmployeeID"Convert.ToInt32(dgvRow.Cells[0].Value));
 
                   }
 
                   sqlCmd.Parameters.AddWithValue("@Name"dgvRow.Cells[1].Value == DBNull.Value "" dgvRow.Cells[1].Value.ToString());
 
                   sqlCmd.Parameters.AddWithValue("@PositionID"Convert.ToInt32(dgvRow.Cells[2].Value == DBNull.Value "0" dgvRow.Cells[2].Value.ToString()));
 
                   sqlCmd.Parameters.AddWithValue("@Office"dgvRow.Cells[3].Value == DBNull.Value "" dgvRow.Cells[3].Value.ToString());
 
                   sqlCmd.Parameters.AddWithValue("@Age"Convert.ToInt32(dgvRow.Cells[4].Value == DBNull.Value "0" dgvRow.Cells[4].Value.ToString()));
 
                   sqlCon.Open();
 
                   sqlCmd.ExecuteNonQuery();
 
                   sqlCon.Close();
 
                   PopulateDataGridView();
 
               }

 
           }
 
       }
 
       private void PopulateDataGridView() 
 
       {
 
           using (SqlConnection sqlCon = new SqlConnection(@"server=.; Database=Accounts; Integrated Security=true"))
 
           {
 
               SqlDataAdapter sqlAdp = new SqlDataAdapter("Select * From Employee"sqlCon);
 
               DataTable dt = new DataTable();
 
               sqlAdp.Fill(dt);
 
               dgvEmployee.DataSource dt;
 
           }
 
       }

 
       private void Form1_Load(object senderEventArgs e)
 
       {
 
           using (SqlConnection sqlCon = new SqlConnection(@"server=.; Database=Accounts; Integrated Security=true"))
 
           {
 
               SqlDataAdapter sqlAdp = new SqlDataAdapter("Select * From Employee"sqlCon);
 
               DataTable dt = new DataTable();
 
               sqlAdp.Fill(dt);
 
               dgvEmployee.DataSource dt;
 
           }

 
       
(09-07-19, 09:50 PM)asemshahen5 كتب : [ -> ]تفضل هذا الكود بعد التعديلات التي طلبتها :

PHP كود :
       private void dgvEmployee_CellValueChanged(object senderDataGridViewCellEventArgs e)
 
       {
 
           if (dgvEmployee.CurrentRow != null)
 
           {
 
               using (SqlConnection sqlCon = new SqlConnection(@"server=.; Database=Accounts; Integrated Security=true"))
 
               {
 
                   DataGridViewRow dgvRow dgvEmployee.CurrentRow;
 
                   SqlCommand sqlCmd = new SqlCommand();
 
                   sqlCmd.CommandType CommandType.Text;
 
                   string SqlStr string.Empty;
 
                   if (dgvRow.Cells[0].Value == DBNull.Value)//Insert
 
                   {
 
                       SqlStr "INSERT INTO Employee(Name,PositionID,Office,Age)VALUES (@Name,@PositionID,@Office,@Age)";
 
                       sqlCmd = new SqlCommand(SqlStrsqlCon);
 
                   }
 
                   else //update
 
                   {
 
                       SqlStr "UPDATE Employee SET Name = @Name,PositionID = @PositionID,Office = @Office,Age = @Age WHERE EmployeeID = @EmployeeID";
 
                       sqlCmd = new SqlCommand(SqlStrsqlCon);
 
                       sqlCmd.Parameters.AddWithValue("@EmployeeID"Convert.ToInt32(dgvRow.Cells[0].Value));
 
                   }
 
                   sqlCmd.Parameters.AddWithValue("@Name"dgvRow.Cells[1].Value == DBNull.Value "" dgvRow.Cells[1].Value.ToString());
 
                   sqlCmd.Parameters.AddWithValue("@PositionID"Convert.ToInt32(dgvRow.Cells[2].Value == DBNull.Value "0" dgvRow.Cells[2].Value.ToString()));
 
                   sqlCmd.Parameters.AddWithValue("@Office"dgvRow.Cells[3].Value == DBNull.Value "" dgvRow.Cells[3].Value.ToString());
 
                   sqlCmd.Parameters.AddWithValue("@Age"Convert.ToInt32(dgvRow.Cells[4].Value == DBNull.Value "0" dgvRow.Cells[4].Value.ToString()));
 
                   sqlCon.Open();
 
                   sqlCmd.ExecuteNonQuery();
 
                   sqlCon.Close();
 
                   PopulateDataGridView();
 
               }

 
           }
 
       }
 
       private void PopulateDataGridView() 
 
       {
 
           using (SqlConnection sqlCon = new SqlConnection(@"server=.; Database=Accounts; Integrated Security=true"))
 
           {
 
               SqlDataAdapter sqlAdp = new SqlDataAdapter("Select * From Employee"sqlCon);
 
               DataTable dt = new DataTable();
 
               sqlAdp.Fill(dt);
 
               dgvEmployee.DataSource dt;
 
           }
 
       }

 
       private void Form1_Load(object senderEventArgs e)
 
       {
 
           using (SqlConnection sqlCon = new SqlConnection(@"server=.; Database=Accounts; Integrated Security=true"))
 
           {
 
               SqlDataAdapter sqlAdp = new SqlDataAdapter("Select * From Employee"sqlCon);
 
               DataTable dt = new DataTable();
 
               sqlAdp.Fill(dt);
 
               dgvEmployee.DataSource dt;
 
           }

 
       

الف شكر استاذي الغالى هو دا المطلوب بنسبه 90%
محتاج تعديل بسيط عليه ويبقى 100%
كود الحفظ هيكون داخل مفتاح عند الضغط عليه يتم الحفظ
وهنا فيه مشكله وجهتنى وهي عند اختيار اكثر من بند للموظف بيتم اضافه سطر واحد فقط 
وايضا اذا تم تعديل بند موجود واضافه بند جديد عند الحفظ بيتم حفظ الجديد ولا يعدل التعديل ال تم

ولذلك
ممكن تعمل حلقه فور بحيث عند الضغط على حفظ يعمل لاتى
1- اي تعديلات تمت على السجلات المضافه سابقا يتم تعديلها
2- اذا كان تم اضافه مجموعه بنود جديده يتم حفظها ايضا
 اتمنى تكون الغكره وصلت
وزادك الله علما نافعا
وجعله في ميزان حسناتك اللهم امين
هل جربت الكود عند الانتقال من خلية الاسم الى خلية اخرى في سجل جديد تتم عملية حفظ سجل جديد و عند التعديل في أي خلية محفوظة والانتقال الى خلية اخرى تتم عملية التعديل تماما .
عندي سؤال ممكن تشرح هذه النقطة : عند اختيار أكثر من بند للموظف بيتم اضافه سطر واحد فقط فهذا مستحيل لان الكود مكتوب في حدث dgvEmployee_CellValueChanged

ضع مثال مع وضع علامات في أسطر الكود الذي تريد تعديله .

أما بالنسبة لوضع حلقة فور فلا داعي لها لأنه عند كتابة أي شيء في أي خلية والانتقال لخلية أخرى يتم حفظ الخلية السابقة سواء كانت في سجل جديد او سجل مراد تعديله .
(10-07-19, 03:46 AM)asemshahen5 كتب : [ -> ]هل جربت الكود عند الانتقال من خلية الاسم الى خلية اخرى في سجل جديد تتم عملية حفظ سجل جديد و عند التعديل في أي خلية محفوظة والانتقال الى خلية اخرى تتم عملية التعديل تماما .
عندي سؤال ممكن تشرح هذه النقطة : عند اختيار أكثر من بند للموظف بيتم اضافه سطر واحد فقط فهذا مستحيل لان الكود مكتوب في حدث dgvEmployee_CellValueChanged

ضع مثال مع وضع علامات في أسطر الكود الذي تريد تعديله .

أما بالنسبة لوضع حلقة فور فلا داعي لها لأنه عند كتابة أي شيء في أي خلية والانتقال لخلية أخرى يتم حفظ الخلية السابقة سواء كانت في سجل جديد او سجل مراد تعديله .

انا اسف لو بتقل عليك 
ونا معاك فى كل كلامك لكن الفرق انى وضع الكود في مفتاح  خاص بالحفظ 
وليس فى حدث dgvEmployee_CellValueChanged
ولذلك يفضل استخدامحلقة فور
(10-07-19, 03:46 AM)asemshahen5 كتب : [ -> ]هل جربت الكود عند الانتقال من خلية الاسم الى خلية اخرى في سجل جديد تتم عملية حفظ سجل جديد و عند التعديل في أي خلية محفوظة والانتقال الى خلية اخرى تتم عملية التعديل تماما .
عندي سؤال ممكن تشرح هذه النقطة : عند اختيار أكثر من بند للموظف بيتم اضافه سطر واحد فقط فهذا مستحيل لان الكود مكتوب في حدث dgvEmployee_CellValueChanged

ضع مثال مع وضع علامات في أسطر الكود الذي تريد تعديله .

أما بالنسبة لوضع حلقة فور فلا داعي لها لأنه عند كتابة أي شيء في أي خلية والانتقال لخلية أخرى يتم حفظ الخلية السابقة سواء كانت في سجل جديد او سجل مراد تعديله .

هل هناك حل وعمل حلقهفور ليتم الحفظ عن طريق مفتاح خاص للحفظ والتعديل بدلا من الحدث dgvEmployee_CellValueChanged
؟؟
ام الموضوع صعب استاذي الفاضل
واسف لو بتقل عليك
الصفحات : 1 2 3 4