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

ما هي طريقة اضافة السجلات المحددة في datagridview إلى جدول في قاعدة البيانات

بدأه m00j في 10 يونيو 2010 · 8 رد · 3,801 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

يبدو أن سؤالي السابق غير واضح وأني أفتقر لفقه السؤال :happy: على كل حال سؤال موضح في الصورة المرفقة آمل أن يكون أوصل الفكرة ,,

post-50227-12761751276554_thumb.png

بعض الروابط التي تدور حول نفس الفكرة التي اسعى لتطبيقها.

http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/1afe2305-8c6f-4ebf-802f-dc199bae455a

http://msdn.microsoft.com/en-us/library/ms233812(VS.80).aspx

http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/eb0ed85b-c01f-4a4c-bac4-73c891d24c81

http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/d53a6844-a22c-4f9f-9961-4c4e8b07b85b

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

#2

أخي الكريم:

نعم . يمكنك استخدام التعليمة Insert أو TableAdapter.Insert ولكن عليك اولا ان تحدد السجلات التي تم اختيارها في كلا المجموعتين ..

ماهي قاعدة البيانات التي تستخدمها SQL SERVER أم Access (سأفترض أن قاعدة البيانات Access ) :

إليك الكود:

1- ارفاق المكتبة التالية للتعامل مع قاعدة Access

Imports System.Data.OleDb

2- كتابة الكود التالي في حدث حفظ البيانات بعد اختيارها

 Using OleDbConnection As New OleDbConnection(My.Settings.ConnectionString)
 	Try
 	'DataGrid for Category
 	For I As Integer = 0 To DataGridView1.Rows.Count
 	' (2) is Index of checkboxCategory Cell in Grid
 	Dim CheckStatus As Boolean = CBool(DataGridView1.Rows(I).Cells(2).Value)
 	If (CheckStatus) Then
 	'Example for Insert Statment ..
 	Dim sql As String = "INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)"
 	Dim oldCommand As New OleDbCommand(sql, OleDbConnection)
 	OleDbConnection.Open()
 	oldCommand.ExecuteNonQuery()
 	End If
 	Next
 	Catch ex As Exception
 	MessageBox.Show(ex.Message)
 	Finally
 	OleDbConnection.Close()

 	End Try


 	End Using

نستخدم الطريقة Using لتعريف جملة معرف اتصال جديد مع الملاحظة إلى تمرير جملة الاتصال الصحيحة حيث من المفترض ان تكون مخزنة ضمن Application Settings

ونصل إليها عن طريق الفئة My

ثم نعرف حلقة For لنمر على كل سجلات DataGrid ونقوم بقراءة قيمة العمود الثالث ثم نختبر قيمته إذا كانت True أي محددة نقوم عندها بعملية الاضافة..

عملية الاضافة تعتمد على الفئة OledbCommand وهو يحتاج جملة استعلام Insert و معرف الاتصال OledbConnection

جملة الاستعلام Insert تكون مثلا كما اوردت في الكود ولكن عليك تغيير اسم الجدول والاعمدة حسب ما لديك ..

طبعا قبل تنفيذ الأمر OledbCommand علينا فتح الاتصال مع قاعدة البيانات عن طريق Open

ثم نقوم بتنفيذ الامر عن طريق ExecuteNonQuery ..

أرجو ان تكون المعلومة وصلت .. ولا تتردد في اي طلب توضيح ..

بالتوفيق :cool:

تم تعديل هذه المشاركة بواسطة was_hal في 12 يونيو 2010 في 12:01

1338031614581.png

" اللهــم إنّا مغلــوبــون فانتصــــر "

(اللهم سبحانك لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم)

#3

انا شاكر لك اخي الكريم هذا الحل والتوضيح وساعمل على تجريب الحل والتوفيق بيد الله :)

#4

اخي الكريم لدي بعض الأسئلة وهي :

لماذا استخدمت دالة لتحويل القية وكيف يفيدني هذا.

Dim CheckStatus As Boolean = CBool(DataGridView1.Rows(I).Cells(2).Value)

وهل الشرط هنا مكتمل فأنا لم اجد القيمة المشروطة هنا

If (CheckStatus) Then

آمل التوضيح وشكرا.

#5

بسم الله الرحمن الرحيم

اخى العزيز

الأخ was_hal

حول القيمة اللى فى

DataGridView1.Rows(I).Cells(2).Value

هى لو ال CheckStatus ب true هترجع لك بالقيمة ب true

انت ممكن تستغنى عنها و تستخدم if على طول

اما بالنسبة ل

If (CheckStatus) Then

فممكن تعطى لها قيمة اولا

لو انت مش اعطتها قينة هى ك defult هتاخد true

اتمنى اكون افدتك

#6

يا اخوان انا لحد الآن لم اجرب الكود ولا ادري سينفذ المطلوب منه أم لا ,, ولكن وعلى حد علمي المتواااااااضع جدا جدا أنه يلزم تخزين القيم في مصفوفة قبل إرسلها لقاعدة البيانات ,, فإن كان كلامي صحيح فأين تلك الخطوة. وإن لم يكن هناك داعي لوجود مصفوفة فالحمدلله لأني أجدها صعبة الفهم أحيانا :) .. آمل الدر على سؤالي وشكرا لكم مرة أخرى

سؤال آخر وهو هل يمكن الاستفادة من الطريقة getSelectedRows() للحصول على ما تم تحديدة من صفوف في DataGridView ومن ثم إرسالها من خلال INSERT SQL Command إلى قاعدة البيانات ؟ هل هذا ممكن .

يا اخوان انا ابحث عن اسهل طريقة لعمل ذلك فما يكون سهل الفهم سيكون سهل التنفيذ وكذلك سهل التعديل والله أعلم .

تم تعديل هذه المشاركة بواسطة m00j في 16 يونيو 2010 في 20:36

#7
m00j كتب:

اخي الكريم لدي بعض الأسئلة وهي :

لماذا استخدمت دالة لتحويل القية وكيف يفيدني هذا.

Dim CheckStatus As Boolean = CBool(DataGridView1.Rows(I).Cells(2).Value)

وهل الشرط هنا مكتمل فأنا لم اجد القيمة المشروطة هنا

If (CheckStatus) Then

آمل التوضيح وشكرا.

أخي الكريم أنا استخدمت دالة التحويل هنا لان قيمة العمود الثالث في DataGrid التي في الاسفل من نوع CheckBox لذلك حولته الى نمط Boolean

وكما قال الأخ BodaMan يمكنك الاستعانة هنا بكتابتها ضمن عبارة IF مباشرة

اقتباس

يا اخوان انا لحد الآن لم اجرب الكود ولا ادري سينفذ المطلوب منه أم لا ,, ولكن وعلى حد علمي المتواااااااضع جدا جدا أنه يلزم تخزين القيم في مصفوفة قبل إرسلها لقاعدة البيانات ,, فإن كان كلامي صحيح فأين تلك الخطوة. وإن لم يكن هناك داعي لوجود مصفوفة فالحمدلله لأني أجدها صعبة الفهم أحيانا :) .. آمل الدر على سؤالي وشكرا لكم مرة أخرى

سؤال آخر وهو هل يمكن الاستفادة من الطريقة getSelectedRows() للحصول على ما تم تحديدة من صفوف في DataGridView ومن ثم إرسالها من خلال INSERT SQL Command إلى قاعدة البيانات ؟ هل هذا ممكن .

يا اخوان انا ابحث عن اسهل طريقة لعمل ذلك فما يكون سهل الفهم سيكون سهل التنفيذ وكذلك سهل التعديل والله أعلم

أخي الكريم لاحظ في الكود أني استخدمت الحلقة For وذلك للمرور على كل السجلات واختبار قيمة الخلية CheckBox في الجدول هل هي محددة ام لا ثم اقوم بالاضافة

وبالنسبة للطريقة GetSelectedRows لا تصلح هنا لانها تجلب جميع السجلات المحددة بالماوس وليست قيمة الخلية CheckBox

أرجو ان تكون وضحت الصورة

بالتوفيق

1338031614581.png

" اللهــم إنّا مغلــوبــون فانتصــــر "

(اللهم سبحانك لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم)

#8

معليش اخي الفاضل بس انا مش عارف كيف ممكن امرر الصفوف التي وجد الكود انها مختارة من قبل المستخدم إلى جملة استعلام الإضافة ؟ انت وضعت بدلا عنها VALUES (value1, value2, value3,...)"

وما احتاج ان يتم اضافته هو قيمة الصف المحدد بالكامل للجدول

وفقك الله

تم تعديل هذه المشاركة بواسطة m00j في 17 يونيو 2010 في 10:56

#9
m00j كتب:

معليش اخي الفاضل بس انا مش عارف كيف ممكن امرر الصفوف التي وجد الكود انها مختارة من قبل المستخدم إلى جملة استعلام الإضافة ؟ انت وضعت بدلا عنها VALUES (value1, value2, value3,...)"

وما احتاج ان يتم اضافته هو قيمة الصف المحدد بالكامل للجدول

وفقك الله

نعم اخي الكريم أنا وضعت ذلك كمثال لجملة الاستعلام

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

ضع كود محاولتك وسنساعدك ..

1338031614581.png

" اللهــم إنّا مغلــوبــون فانتصــــر "

(اللهم سبحانك لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم)

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

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

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

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

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