الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحديث جدول بقاعدة البيانات عن طريق DataGridView ؟

بدأه red_scorpion1 في 5 أبريل 2013 · 3 رد · 804 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

من فضلكم احتاج مساعدة فى عمل تحديث لجدول بقاعدة البيانات عن طريق DataGridView

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

كود الستورد بروسيدجر


 
@Group_ID int,
@Item_Desc nvarchar(200),
@Item_Prices FLOAT
as
update Monthly_Data_Out
set
Item_Desc = @Item_Desc,
Item_prices = @Item_Prices

where Group_ID = @Group_ID AND Item_Desc = @Item_Desc
الكود المستخدم للتعديل فى الشاشة
 
// بيانات مصاريف أساسيةfor (var i = 0; i <= DGV_Out.RowCount - 1; i++){MyFun.FireStoredProcedure("Update_Monthly_Data", new SqlParameter("@Group_ID", MyFun.id),new SqlParameter("@Item_Desc", DGV_Out.Rows.Cells["Item_Desc_Col"].Value.ToString()),new SqlParameter("@Item_prices", DGV_Out.Rows.Cells["Item_prices_Col"].Value.ToString()));}

حيث اننى استدعيها من ملف Dll وهذا هو كوده MyFun
 
public DataTable FireDataTable_StoredProcedure(string StoredProcedureName, params SqlParameter[] arrParam)
{
SqlParameter firstOutputParameter = null;

if (cn.State == ConnectionState.Closed) cn.Open();
dt = new DataTable();

cmd.Connection = cn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = StoredProcedureName;
cmd.CommandTimeout = cn.ConnectionTimeout;

if (arrParam != null)
{
foreach (SqlParameter param in arrParam)
{
cmd.Parameters.Add(param);
if (param.Direction == ParameterDirection.Output && param.SqlDbType == SqlDbType.Int)
{
firstOutputParameter = param;
}
}
}

try
{
ad.SelectCommand = cmd;
ad.Fill(dt);
cmd.Parameters.Clear();
return dt;

}
catch (Exception)
{
return dt;
}
}

فهل من الممكن مساعدتى فى كيفية تحديث البيانات فى قاعدة البيانات ؟
#2

السلام عليكم ...

  1. يمكن استخدام DataAdapter  و نضع له الــ UpdateCommand  و هو يأخد الأسطر من الجدول التي تم التعديل عليها (يكون لها RowState = Modified ) و يقوم باستدعاء الــ UpdateCommand  عليها أما في طريقتك فأنت تعمل For Loop  على كل الأسطر ...
  2. DataAdapter UpdateCommande using Stored procedure
  3. Using Stored Procedures in Conjuction with DataAdapter
  4. Using Stored Procedures to Update Data
  5. لو أردت استخدام طريقتك فتفحص حالة كل سطر ضمن الــ For Loop  , هل لها القيم (DataRowState.Modified) ,  ألق نظرة على DataRow.RowState Property

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3
houssam11350_11350 كتب:

السلام عليكم ...

  1. يمكن استخدام DataAdapter  و نضع له الــ UpdateCommand  و هو يأخد الأسطر من الجدول التي تم التعديل عليها (يكون لها RowState = Modified ) و يقوم باستدعاء الــ UpdateCommand  عليها أما في طريقتك فأنت تعمل For Loop  على كل الأسطر ...
  2. DataAdapter UpdateCommande using Stored procedure
  3. Using Stored Procedures in Conjuction with DataAdapter
  4. Using Stored Procedures to Update Data
  5. لو أردت استخدام طريقتك فتفحص حالة كل سطر ضمن الــ For Loop  , هل لها القيم (DataRowState.Modified) ,  ألق نظرة على DataRow.RowState Property

 

أشكرك أخى حسام ولكن اتمنى منك التوضيح أكثر خاصة لو أردت استخدام طريقتك فتفحص حالة كل سطر ضمن الــ For Loop  , هل لها القيم (DataRowState.Modified)

فهل من الممكن مساعدتى فى ذلك ؟

#4

السلام عليكم ..

  1. CREATE PROCEDURE UpdateEmployee (@EmployeeID int , @FirstName varchar(20) )
    	AS
    BEGIN
    	UPDATE Employees SET FirstName = @FirstName WHERE EmployeeID = @EmployeeID;
    END

     

  2. ملء الجدول :

    SqlConnection connection = new SqlConnection(@"Server=.\sqlexpress;Database=DB02;Trusted_Connection=Yes;");
            DataTable dataTable = new DataTable();
    
            private void button6_Click(object sender, EventArgs e)
            {
                
                connection.Open();
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Employees", connection);
                adapter.Fill(dataTable);
                dataGridView2.DataSource = dataTable;
                connection.Close();
            }

     

  3. كود الحفظ :

    private void button7_Click(object sender, EventArgs e)
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "UpdateEmployee";
                connection.Open();
                cmd.Connection = connection;
                cmd.Parameters.Add("@EmployeeID", SqlDbType.Int);
                cmd.Parameters.Add("@FirstName", SqlDbType.VarChar);
    
                foreach(DataRow row in dataTable.Rows)
                    if (row.RowState == DataRowState.Modified)
                    {
                        cmd.Parameters["@EmployeeID"].Value = row["EmployeeID"];
                        cmd.Parameters["@FirstName"].Value = row["FirstName"];
                        cmd.ExecuteNonQuery();
    
                    }
                connection.Close();
            }

     

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…