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

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

اليكم الكود لتعبئة الكومبوبوكس بس اريد كود لمنع الاسم المتشابهة من التكرار في الكومبوبوكس
كود :
Dim cmd As New OleDbCommand
       Dim reader As OleDbDataReader
       cmd = New OleDbCommand("select * from table1", cn)
       cn.Open()
       reader = cmd.ExecuteReader
       While reader.Read
           ComboBox1.Items.Add(reader.Item(2))
       End While

       cn.Close()
   End Sub
حيث distinct لم ينفع معي
وعليكم السلام

distinct تنفع اذا عرفت طريقة SQL
في مثالك لا تنفع distinct مع النجمة
كود :
Using daa As New OleDbDataAdapter("SELECT DISTINCT [column1] FROM [table1]", cn)
    Dim dtt As New DataTable
    daa.Fill(dtt)
    ComboBox1.Items.AddRange((From x In dtt.Rows Select x.Item("column1")).ToArray)
End Using

غير column1 باسم الحقل المطلوب قراءته
إستخدم شرط  مثلا
PHP كود :
           If ListBox1.Items.Contains(h) = False Then
                ListBox1
.Items.Add(h)
 
           End If 
غير الليست بوكس الى كومبوبوكس.
h=القيمة المعادة من الجدول.


PHP كود :
 While reader.Read
If combobox1.items.contains(reader.Item(2))=false then
 ComboBox1
.Items.Add(reader.Item(2))
End If
 End While 
(27-09-16, 02:41 AM)HASAN6.0 كتب : [ -> ]
كود :
Dim cmd As New OleDbCommand
       Dim reader As OleDbDataReader
       cmd = New OleDbCommand("select * from table1", cn)
       cn.Open()
       Dim list As New List(Of String)
       reader = cmd.ExecuteReader
       While reader.Read
           list.Add(reader.Item(2))
       End While

       cn.Close()
       list = list.Distinct().ToList()
       ComboBox1.DataSource = list

كووووووود رائع وكان يحقق لي المطلوب
بس للاسف لم يعمل معيولم تظهر اي بيانات في الكومبوبوكس

(27-09-16, 02:10 AM)ممدوح كتب : [ -> ]وعليكم السلام

distinct  تنفع اذا عرفت طريقة SQL
في مثالك لا تنفع distinct مع النجمة
كود :
Using daa As New OleDbDataAdapter("SELECT DISTINCT [column1] FROM [table1]", cn)
   Dim dtt As New DataTable
   daa.Fill(dtt)
   ComboBox1.Items.AddRange((From x In dtt.Rows Select x.Item("column1")).ToArray)
End Using

غير column1 باسم الحقل المطلوب قراءته

كووود رهيب بس من يوم شفت داتا ادبتر كاني شفت صاعقة امامي وبصراحة بحاول بقدر الامكان ابتعد عن
dataAdapter
daa.fill

(27-09-16, 06:31 AM)سعود كتب : [ -> ]إستخدم شرط  مثلا
PHP كود :
           If ListBox1.Items.Contains(h) = False Then
                ListBox1
.Items.Add(h)
 
           End If 
غير الليست بوكس الى كومبوبوكس.
h=القيمة المعادة من الجدول.


PHP كود :
 While reader.Read
If combobox1.items.contains(reader.Item(2))=false then
 ComboBox1
.Items.Add(reader.Item(2))
End If
 End While 

على حسب فهمي ان هذا كود شرط منع اي اسم او قيمة مشابهة في الكومبوبوكس ولكن وين اضع كودك في كودي
وهل لي ان استغني عن كودي الاول او ادمج كودي مع كودك بصراحة صرت نفس التايه
(27-09-16, 10:26 PM)هاوي1995 كتب : [ -> ]
(27-09-16, 02:10 AM)ممدوح كتب : [ -> ]وعليكم السلام

distinct  تنفع اذا عرفت طريقة SQL
في مثالك لا تنفع distinct مع النجمة
كود :
Using daa As New OleDbDataAdapter("SELECT DISTINCT [column1] FROM [table1]", cn)
   Dim dtt As New DataTable
   daa.Fill(dtt)
   ComboBox1.Items.AddRange((From x In dtt.Rows Select x.Item("column1")).ToArray)
End Using

غير column1 باسم الحقل المطلوب قراءته

كووود رهيب بس من يوم شفت داتا ادبتر كاني شفت صاعقة امامي وبصراحة بحاول بقدر الامكان ابتعد عن
dataAdapter
daa.fill

ايش مشكلتك مع dataAdapter و daa.fill
لو تعرفها بوضوح تجدها انها تعني connection + command + datareader + load

عموما لن أزعجك بها بعد ذلك! وأعتذر عن الصاعقة التي أصابتك بسبب الكود.
(27-09-16, 10:54 PM)ممدوح كتب : [ -> ]
(27-09-16, 10:26 PM)هاوي1995 كتب : [ -> ]
(27-09-16, 02:10 AM)ممدوح كتب : [ -> ]وعليكم السلام

distinct  تنفع اذا عرفت طريقة SQL
في مثالك لا تنفع distinct مع النجمة
كود :
Using daa As New OleDbDataAdapter("SELECT DISTINCT [column1] FROM [table1]", cn)
   Dim dtt As New DataTable
   daa.Fill(dtt)
   ComboBox1.Items.AddRange((From x In dtt.Rows Select x.Item("column1")).ToArray)
End Using

غير column1 باسم الحقل المطلوب قراءته

كووود رهيب بس من يوم شفت داتا ادبتر كاني شفت صاعقة امامي وبصراحة بحاول بقدر الامكان ابتعد عن
dataAdapter
daa.fill

ايش مشكلتك مع dataAdapter و daa.fill
لو تعرفها بوضوح تجدها انها تعني connection + command + datareader + load

عموما لن أزعجك بها بعد ذلك! وأعتذر عن الصاعقة التي أصابتك بسبب الكود.

يا ممدوح مشكلتي اني مبتدئ وفي بدايتي كرهوني استخدام تلك الادوات
والمبتدئ اذا تعقد من شي يشوفه صعب كثير حتى ولو كان سهل
لن تزعجني يعني ما راح تشارك في مواضيعي؟؟!!!!!! ما نستغنى عن اي شخص نحن وبالعكس وجودك ومشاركتك في مواضيعي تزداد نورا وحتى بتلك الاكواد التي اعتبرها صاعقة فقد يستفيد شخص اخر غيري .... فبارك الله فيك وفي علمك وزادك بركة وعلما
ذكرت أنني لن أزعجك بها وكلمة (بها) تعود الى dataAdapter و daa.fill
أي أنني لن أكتب لك عنها في الأكواد فقط لعدم رغبتك بها.

أما توضيحها كونك مبتدأ فهي:
DataAdapter هي الكل في واحد يعني انها تقوم بالأتي:
تقوم بدلا عنك بفتح الاتصال
ثم تنفذ جملة SQL
ثم تجلب البيانات وتعبئها في DataTable في الذاكرة بواسطة الأمر Fill
ثم تقوم بدلا عنك بتغلق الاتصال

وبالنسبة Fill فزيادة في التوضيح فهي تقوم بتعبئة جدول سواء DataTable أو DataSet مع تحديد الجدول من DataSet
لأن DataSet هي قاعدة بيانات مؤقتة وليست جدول وبامكانها أن تحتوي على عدة جداول
وتتميز DataTable وDataSet بالسرعة لأن بياناتها موجودة بالذاكرة
وبالامكان البحث في بياناتها بسهولة بواسطة Linq

أما إذا كنت تريد تستخدم Command للقراءة
فيتعين عليك الأتي:
أن تقوم أنت بفتح الآتصال
ثم تنفذ جملة SQL
ثم تقرأ أنت البيانات وتضعها بمتغيرات أو أدوات أو حتى DataTable.
ثم تقوم أنت بغلق الاتصال.

عموما ما أن تتعرف على DataAdapter و Fill حتى أجدك تستخدمها دائماً
ولا تستغني عنها إلا بما هو أفضل منها مثل Linq to Dataset والتي لن ترى فيها DataAdapter ولا Fill ولا حتى Command
إقتباس :على حسب فهمي ان هذا كود شرط منع اي اسم او قيمة مشابهة في الكومبوبوكس ولكن وين اضع كودك في كودي

وهل لي ان استغني عن كودي الاول او ادمج كودي مع كودك بصراحة صرت نفس التايه
كودي هو كودك فقط عدل على كودك  ليكون مثل كودي  Smile
(27-09-16, 01:27 AM)هاوي1995 كتب : [ -> ]السلام عليكم

اليكم الكود لتعبئة الكومبوبوكس بس اريد كود لمنع الاسم المتشابهة من التكرار في الكومبوبوكس
كود :
Dim cmd As New OleDbCommand
       Dim reader As OleDbDataReader
       cmd = New OleDbCommand("select * from table1", cn)
       cn.Open()
       reader = cmd.ExecuteReader
       While reader.Read
           ComboBox1.Items.Add(reader.Item(2))
       End While

       cn.Close()
   End Sub
حيث distinct لم ينفع معي

Distinct هو الحل الصحيح و لكن يجب إزاله الهجمة مع ذكر إسم العمود