تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] طلب كود خاص في listview
#1
السلام عليكم ورحمة الله 

طلبي هو كود انشاء الله يكون سهل 

عندي listview1 

و 

عندي listview2

الـ listview1 تحتوي على اسماء مثلاً 

1- محمد عبد الله 

2- قاسم امين 

3 زكي جمعة 

والـ listview2 تحتوي على ملعومات تخص كل واحد من هذه الاسماء مثلاً 

1- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 

2- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 

3- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 



4- قاسم امين - رقم الهاتف - تاريخ الميلاد 

5- قاسم امين - رقم الهاتف - تاريخ الميلاد



6- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

7- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

8- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

9- زكي جمعة - رقم الهاتف - تاريخ الميلاد 



الطلب هنا ( لو اريد احدد Select على الـ،listview1 مثلاً حددت على ( محمد عبدالله ) 

اريد ان يضهر في الـlistview2 فقط محمد عبدالله حتى لو كان الاسم متكرر خمس مرات اريده ان يضهر فقط هو مع المتكرر بنفس الاسم

بأختصار عرض بيانات محمد عبدالله كلهاا الموجوده في listview2 

يعني لو محمد عبدالله متكرر مرتين يضهرهم لو ثلاث مرات كذلك يضهرهم لي 

المشروع بالمرفقات

وشكراً مقدماً

uppppppppp

up  Sadup  Sadup  Sadup  SadSad


الملفات المرفقة
.rar   listview.rar (الحجم : 79.19 ك ب / التحميلات : 61)
الرد }}}
تم الشكر بواسطة:
#2
طبق التالى فى الملف المشروع
فى السطر الخاص ..
كود :
Private Sub Retrieve2()

قم بتحويله الى التالى
كود :
Private Sub Retrieve2(ByVal NAME As String)

الخطوة التالية
فى السطر التالى
كود :
Dim sql As String = "SELECT * FROM hqom"

قم بتحويله الى الكود التالى
كود :
Dim sql As String = "SELECT * FROM hqom WHERE name_1 LIKE '% " & NAME & " %'"

الخطوة التالية
فى عملية اللود خاصة الفورم ( Private Sub Form1_Load)
ستجد لديك الكود التالى
كود :
Retrieve2()

قم بتحويله الى
كود :
Retrieve2("")

الخطوة التالية
تعال عند ListView1 وقم بانشاء Event باسم SelectedIndexChanged
ليصبح الكود الكلى له 
كود :
Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
       For aa As Integer = 0 To ListView1.SelectedItems.Count - 1
           Retrieve2(ListView1.SelectedItems.Item(aa).SubItems(1).Text.ToString())
       Next
   End Sub

الان عند تشغيل المشروع
ستجد انه يقوم  ListView2 بتححميل جميع محتوى قاعدة البيانات
من ثم عند تحديد اسم محدد من ListView1 يقوم بتحويل نتائج ListView2 الى ما يخص الاسم المحدد فقط

جرب وقل الناتج الذى تم معك
تحياتى لك
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: Sajad , عبدالله الدوسري
#3
وعليكم السلام ورحمة الله وبركاتة

الـ listview لا تدعم الفلترة


هذة طريقة أخرى بإستخدام الـ DataGridView
   


التعريفات العامة :
   



حدث تحميل النافذة :
   



أمر تحميل البيانات :
   


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



الحدث الذي يحدث عندما تقوم بتغيير السجل وبناءاً علية نقوم بعمل فلتر 
   



المشروع :

.rar   listview.rar (الحجم : 191.68 ك ب / التحميلات : 54)
الرد }}}
تم الشكر بواسطة: elgokr , sendbad100 , hqom , Ashraf Elafify
#4
اخى عبدالله الدوسري يمكنه عمل الفلتر من خلال كود الاستعلام فقط  Rolleyes
وعند تحديد اسم محدد من رقم 1 يوم باعادة تحميل رقم2 بالكود بعد فلتر كود الاستعلام

تحياتى لك
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: sendbad100
#5
(21-05-18, 05:45 PM)elgokr كتب :
اخى عبدالله الدوسري يمكنه عمل الفلتر من خلال كود الاستعلام فقط  Rolleyes
وعند تحديد اسم محدد من رقم 1 يوم باعادة تحميل رقم2 بالكود بعد فلتر كود الاستعلام

تحياتى لك


هذة هي البرمجة , ستجد طرق كثيرة للوصل الى الهدف .

ولكن عندي ملاحظة :
كود :
SELECT * FROM hqom WHERE name_1 LIKE '% " & NAME & " %'
هذة الجملة ستجلب أي بيانات مشابهة 



وفي هذة الحالة المفروض تكون مطابقة
بهذة الطريقة :
كود :
SELECT * FROM hqom WHERE name_1 = '" & NAME & "'
الرد }}}
تم الشكر بواسطة: elgokr
#6
(21-05-18, 05:58 PM)عبدالله الدوسري كتب :
(21-05-18, 05:45 PM)elgokr كتب :
اخى عبدالله الدوسري يمكنه عمل الفلتر من خلال كود الاستعلام فقط  Rolleyes
وعند تحديد اسم محدد من رقم 1 يوم باعادة تحميل رقم2 بالكود بعد فلتر كود الاستعلام

تحياتى لك


هذة هي البرمجة , ستجد طرق كثيرة للوصل الى الهدف .

ولكن عندي ملاحظة :
كود :
SELECT * FROM hqom WHERE name_1 LIKE '% " & NAME & " %'
هذة الجملة ستجلب أي بيانات مشابهة 



وفي هذة الحالة المفروض تكون مطابقة
بهذة الطريقة :
كود :
SELECT * FROM hqom WHERE name_1 = '" & NAME & "'

لاسف لا ما قمت بكاتبته بهذه الطريقة
حيث انه قيوم بتطبيق نفس الكود لتحميل النتائج فى الفورم عند بدء التشغيل وبمى ان الناتج فارغ سيعرض جميع محتوى قاعدة البيانات
وعند تحديد الاسم فهو الاسم كاملاً وليس احرف جزئي من الاسم حيث لا يوجد تكرار الاسماء فى القائمة 1 وبذلك الكود سيكون بنفس فكرة ما تقصده
كود :
name_1 = name_1

والفكرة من ذلك هو عدم عمل كودين واحد مخصص للفورم والاخر للفلتر

تحياتى لك
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة:
#7
ولكن بهذة الطريقة 
لو بحثت عن  : ( عبدالله الدوسري )
وقاعدة البيانات فيها شخص آخر باسم : محمد عبدالله الدوسري

سيظهرون جميعا في نتيجة البحث 
هذا شخص وهذا شخص آخر
الرد }}}
تم الشكر بواسطة: elgokr
#8
(21-05-18, 06:38 PM)عبدالله الدوسري كتب : ولكن بهذة الطريقة 
لو بحثت عن  : ( عبدالله الدوسري )
وقاعدة البيانات فيها شخص آخر باسم : محمد عبدالله الدوسري

سيظهرون جميعا في نتيجة البحث 
هذا شخص وهذا شخص آخر


لكنه لم يبحث

سيعرض الاسم كاملاً فى القائمة 1 وسيقوم الضغط على الاسم
ولنفترض بانه اضاف اسماء ثلاثي ورباعى كما قلت
فقط كل ما سيحتاجه هو حذف % من الكود حتى يقوم بالتوافق الكلى للاسم وليس التقريب ما قبل وبعد ووسط

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

تحياتى لك ومع كل التوفيق 
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة:
#9
(21-05-18, 02:43 PM)hqom كتب :
السلام عليكم ورحمة الله 

طلبي هو كود انشاء الله يكون سهل 

عندي listview1 

و 

عندي listview2

الـ listview1 تحتوي على اسماء مثلاً 

1- محمد عبد الله 

2- قاسم امين 

3 زكي جمعة 

والـ listview2 تحتوي على ملعومات تخص كل واحد من هذه الاسماء مثلاً 

1- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 

2- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 

3- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 



4- قاسم امين - رقم الهاتف - تاريخ الميلاد 

5- قاسم امين - رقم الهاتف - تاريخ الميلاد



6- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

7- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

8- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

9- زكي جمعة - رقم الهاتف - تاريخ الميلاد 



الطلب هنا ( لو اريد احدد Select على الـ،listview1 مثلاً حددت على ( محمد عبدالله ) 

اريد ان يضهر في الـlistview2 فقط محمد عبدالله حتى لو كان الاسم متكرر خمس مرات اريده ان يضهر فقط هو مع المتكرر بنفس الاسم

بأختصار عرض بيانات محمد عبدالله كلهاا الموجوده في listview2 

يعني لو محمد عبدالله متكرر مرتين يضهرهم لو ثلاث مرات كذلك يضهرهم لي 

المشروع بالمرفقات

وشكراً مقدماً

uppppppppp

up  Sadup  Sadup  Sadup  SadSad

مرحبا ،،

فقط ضع هذا الكود وسوف ينفذ ما طلبت :

كود :
Private Sub ListView1_Click(sender As Object, e As EventArgs) Handles ListView1.Click
       ListView2.Items.Clear()
       Dim sql As String = "SELECT * FROM hqom where name_1='" & ListView1.SelectedItems.Item(0).SubItems(1).Text & "'"
       cmd = New OleDbCommand(sql, con)
       Try
           con.Open()
           adapter = New OleDbDataAdapter(cmd)
           adapter.Fill(dt)
           For Each row As DataRow In dt.Rows
               Dim id As String = "" : If Not row.IsNull(0) Then id = row(0)
               Dim name_1 As String = "" : If Not row.IsNull(1) Then name_1 = row(1)
               Dim Mopile_1 As String = "" : If Not row.IsNull(2) Then Mopile_1 = row(2)
               Dim Date_1 As String = "" : If Not row.IsNull(3) Then Date_1 = row(3)
               Populate2(id, name_1, Mopile_1, Date_1)
           Next
           dt.Rows.Clear()
           con.Close()
       Catch ex As Exception
           MsgBox(ex.Message)
           con.Close()
       End Try
   End Sub


ثم تأكد من اسم زكي جمعه في الليست فيو 1 يطابق الموجود في قاعدة البيانات !
الرد }}}
تم الشكر بواسطة: elgokr , hqom
#10
(21-05-18, 09:54 PM)حريف برمجة كتب :
(21-05-18, 02:43 PM)hqom كتب :
السلام عليكم ورحمة الله 

طلبي هو كود انشاء الله يكون سهل 

عندي listview1 

و 

عندي listview2

الـ listview1 تحتوي على اسماء مثلاً 

1- محمد عبد الله 

2- قاسم امين 

3 زكي جمعة 

والـ listview2 تحتوي على ملعومات تخص كل واحد من هذه الاسماء مثلاً 

1- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 

2- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 

3- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 



4- قاسم امين - رقم الهاتف - تاريخ الميلاد 

5- قاسم امين - رقم الهاتف - تاريخ الميلاد



6- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

7- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

8- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

9- زكي جمعة - رقم الهاتف - تاريخ الميلاد 



الطلب هنا ( لو اريد احدد Select على الـ،listview1 مثلاً حددت على ( محمد عبدالله ) 

اريد ان يضهر في الـlistview2 فقط محمد عبدالله حتى لو كان الاسم متكرر خمس مرات اريده ان يضهر فقط هو مع المتكرر بنفس الاسم

بأختصار عرض بيانات محمد عبدالله كلهاا الموجوده في listview2 

يعني لو محمد عبدالله متكرر مرتين يضهرهم لو ثلاث مرات كذلك يضهرهم لي 

المشروع بالمرفقات

وشكراً مقدماً

uppppppppp

up  Sadup  Sadup  Sadup  SadSad

مرحبا ،،

فقط ضع هذا الكود وسوف ينفذ ما طلبت :

كود :
Private Sub ListView1_Click(sender As Object, e As EventArgs) Handles ListView1.Click
       ListView2.Items.Clear()
       Dim sql As String = "SELECT * FROM hqom where name_1='" & ListView1.SelectedItems.Item(0).SubItems(1).Text & "'"
       cmd = New OleDbCommand(sql, con)
       Try
           con.Open()
           adapter = New OleDbDataAdapter(cmd)
           adapter.Fill(dt)
           For Each row As DataRow In dt.Rows
               Dim id As String = "" : If Not row.IsNull(0) Then id = row(0)
               Dim name_1 As String = "" : If Not row.IsNull(1) Then name_1 = row(1)
               Dim Mopile_1 As String = "" : If Not row.IsNull(2) Then Mopile_1 = row(2)
               Dim Date_1 As String = "" : If Not row.IsNull(3) Then Date_1 = row(3)
               Populate2(id, name_1, Mopile_1, Date_1)
           Next
           dt.Rows.Clear()
           con.Close()
       Catch ex As Exception
           MsgBox(ex.Message)
           con.Close()
       End Try
   End Sub


ثم تأكد من اسم زكي جمعه في الليست فيو 1 يطابق الموجود في قاعدة البيانات !

ابدااااااااااااااع  تمام هو الكود المطلوب

(21-05-18, 05:18 PM)elgokr كتب :
طبق التالى فى الملف المشروع
فى السطر الخاص ..
كود :
Private Sub Retrieve2()

قم بتحويله الى التالى
كود :
Private Sub Retrieve2(ByVal NAME As String)

الخطوة التالية
فى السطر التالى
كود :
Dim sql As String = "SELECT * FROM hqom"

قم بتحويله الى الكود التالى
كود :
Dim sql As String = "SELECT * FROM hqom WHERE name_1 LIKE '% " & NAME & " %'"

الخطوة التالية
فى عملية اللود خاصة الفورم ( Private Sub Form1_Load)
ستجد لديك الكود التالى
كود :
Retrieve2()

قم بتحويله الى
كود :
Retrieve2("")

الخطوة التالية
تعال عند ListView1 وقم بانشاء Event باسم SelectedIndexChanged
ليصبح الكود الكلى له 
كود :
Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
       For aa As Integer = 0 To ListView1.SelectedItems.Count - 1
           Retrieve2(ListView1.SelectedItems.Item(aa).SubItems(1).Text.ToString())
       Next
   End Sub

الان عند تشغيل المشروع
ستجد انه يقوم  ListView2 بتححميل جميع محتوى قاعدة البيانات
من ثم عند تحديد اسم محدد من ListView1 يقوم بتحويل نتائج ListView2 الى ما يخص الاسم المحدد فقط

جرب وقل الناتج الذى تم معك
تحياتى لك
بارك الله فيك ياخي الغالي ربي يحفظكم من كل شر

(21-05-18, 05:42 PM)عبدالله الدوسري كتب : وعليكم السلام ورحمة الله وبركاتة

الـ listview لا تدعم الفلترة


هذة طريقة أخرى بإستخدام الـ DataGridView



التعريفات العامة :




حدث تحميل النافذة :




أمر تحميل البيانات :



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




الحدث الذي يحدث عندما تقوم بتغيير السجل وبناءاً علية نقوم بعمل فلتر 




المشروع :


شكراااا لك اخي الغالي ربي يحفظك من كل شر 


كودك افادني جداً

(21-05-18, 09:54 PM)حريف برمجة كتب :
(21-05-18, 02:43 PM)hqom كتب :
السلام عليكم ورحمة الله 

طلبي هو كود انشاء الله يكون سهل 

عندي listview1 

و 

عندي listview2

الـ listview1 تحتوي على اسماء مثلاً 

1- محمد عبد الله 

2- قاسم امين 

3 زكي جمعة 

والـ listview2 تحتوي على ملعومات تخص كل واحد من هذه الاسماء مثلاً 

1- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 

2- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 

3- محمد عبدالله - رقم الهاتف - تاريخ الميلاد 



4- قاسم امين - رقم الهاتف - تاريخ الميلاد 

5- قاسم امين - رقم الهاتف - تاريخ الميلاد



6- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

7- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

8- زكي جمعة - رقم الهاتف - تاريخ الميلاد 

9- زكي جمعة - رقم الهاتف - تاريخ الميلاد 



الطلب هنا ( لو اريد احدد Select على الـ،listview1 مثلاً حددت على ( محمد عبدالله ) 

اريد ان يضهر في الـlistview2 فقط محمد عبدالله حتى لو كان الاسم متكرر خمس مرات اريده ان يضهر فقط هو مع المتكرر بنفس الاسم

بأختصار عرض بيانات محمد عبدالله كلهاا الموجوده في listview2 

يعني لو محمد عبدالله متكرر مرتين يضهرهم لو ثلاث مرات كذلك يضهرهم لي 

المشروع بالمرفقات

وشكراً مقدماً

uppppppppp

up  Sadup  Sadup  Sadup  SadSad

مرحبا ،،

فقط ضع هذا الكود وسوف ينفذ ما طلبت :

كود :
Private Sub ListView1_Click(sender As Object, e As EventArgs) Handles ListView1.Click
       ListView2.Items.Clear()
       Dim sql As String = "SELECT * FROM hqom where name_1='" & ListView1.SelectedItems.Item(0).SubItems(1).Text & "'"
       cmd = New OleDbCommand(sql, con)
       Try
           con.Open()
           adapter = New OleDbDataAdapter(cmd)
           adapter.Fill(dt)
           For Each row As DataRow In dt.Rows
               Dim id As String = "" : If Not row.IsNull(0) Then id = row(0)
               Dim name_1 As String = "" : If Not row.IsNull(1) Then name_1 = row(1)
               Dim Mopile_1 As String = "" : If Not row.IsNull(2) Then Mopile_1 = row(2)
               Dim Date_1 As String = "" : If Not row.IsNull(3) Then Date_1 = row(3)
               Populate2(id, name_1, Mopile_1, Date_1)
           Next
           dt.Rows.Clear()
           con.Close()
       Catch ex As Exception
           MsgBox(ex.Message)
           con.Close()
       End Try
   End Sub


ثم تأكد من اسم زكي جمعه في الليست فيو 1 يطابق الموجود في قاعدة البيانات !



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

عندي محمد عبدالله متكرر ثلاث مرات 
اريده ان يضهر في للست فيو 1 = مره واحده فقط
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم