تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ComboBox تعبني مع LIKE '""
#1
هذا السب لإضافة حقل عناوين الكتب للكامبو بوكس

كود :
Public Sub Cmb()
        On Error Resume Next
        ComboBox1.Items.Clear()
        For i As Integer = 0 To DataSet1.Tables("Tab").Rows.Count - 1
            Dim a As String = DataSet1.Tables("Tab").Rows(i).Item("f1")
            ComboBox1.Items.Add(a.PadLeft(ComboBox1.DropDownWidth * 15 / 100))
        Next
    End Sub

[/code]

وهنا لربط اسم الكتاب في الكامبو بباقي بيانات الكتاب في حدث SelectedIndexChanged

كود :
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        On Error Resume Next

        Application.DoEvents()


        Dim DataAdapter As New OleDbDataAdapter("SELECT * FROM Workers111111 WHERE f1 LIKE '" & ComboBox1.Text.Trim & "'", con)

        con.Open()
        DataSet1.Clear()
        DataAdapter.Fill(DataSet1, "Tab")
        con.Close()



    End Sub

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

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

يعني لو ادخلت كتاب اسمه

الكامل في التاريخ لابن الأثير طبعة مصر

ثم

الكامل في التاريخ لابن الأثير طبعة بيروت

ثم

الكامل في التاريخ لابن الأثير طبعة سوريا

يعرض في الكامبو الثلاثة الكتب كلها
الكامل في التاريخ
الكامل في التاريخ
الكامل في التاريخ

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

الكامل في التاريخ لابن الأثير طبعة مصر

رغم أن الموجود ثلاثة كتب وعندي التنقل بينها الثلاثة كلها تعطيني بيانات الكتاب الأول

احساسي يقول أن الخطأ في هذه الجملة
FROM Workers WHERE f1 LIKE '" & ComboBox1.Text.Trim & "'", con)
الرد }}}
تم الشكر بواسطة:
#2
(13-07-14, 12:26 AM)vbnet كتب : .....

لم توفق في توضيح مشكلتك

f1 لم أفهم ماذا تعني
"الكامل في التاريخ لابن الأثير طبعة بيروت" هل هي معلومة كاملة في عمود واحد أم أنها جزئين أو ثلاث تم دمجهم وسبب سؤالي هذا
إقتباس :يعرض في الكامبو الثلاثة الكتب كلها
الكامل في التاريخ
الكامل في التاريخ
الكامل في التاريخ
حيث ذكرت "الكامل في التاريخ" فقط بدون الباقي

لو توضح وتضع أكواد التعبئة في ComboBox بعد "البحث"

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

.....

f1 = حقل عنوان الكتاب مرتبط بع 30 حقg أخر لم أذكرها لاختصار المشكلة
منها مثلا حقل للمؤلف و حقل لبلد النشر

اذا عنوان الكتاب = الكامل في التاريخ (فقط)

مرتبط به عدة بيانات منها
المؤلف = ابن الاثير
بلد النشر = مصر

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

فان تم اختيار كتاب الكامل في التاريخ من الكامبو بوكس
ظهرت بيانات الكتاب الباقية
كاسم المؤلف (f2) و بلد النشر (f3) الخاصة بذلك الكتاب
الرد }}}
تم الشكر بواسطة:
#3
متهيالي ممكن تستخدم الكود ب الشكل التالي لإدخال البيانات المتشابهة الي الكومبوبوكس

كود :
Dim myDictionary As Dictionary(Of String, String) = New Dictionary(Of String, String)
        myDictionary.Add("1", "Ahmed")
        myDictionary.Add("2", "ahmed")
        myDictionary.Add("3", "Ahmed")

        ComboBox1.DataSource = New BindingSource(myDictionary, Nothing)
        ComboBox1.DisplayMember = "Value"
        ComboBox1.ValueMember = "Key"

في الحدث الخاص ب الكومبوبوكس و هو SelectedIndexChanged ضع الكود بالشكل التالي...انا فقط أضفت Labels للتوضيح يمكن أن تتعامل مع النتائج كما يحلو لك

كود :
Me.Label1.Text = CType(ComboBox1.SelectedItem, KeyValuePair(Of String, String)).Value
Me.Label2.Text = CType(ComboBox1.SelectedItem, KeyValuePair(Of String, String)).Key
الرد }}}
تم الشكر بواسطة: المهنا
#4
مع فائق شكري لتجاوبكم السريع

يبدوا أنني لم أوفق في شرح مشكلتي

هذا الملف المرفق هو مثال مصغر قمت بتعديله ليسهل رفعه

بنفس أكواد مشروعي

حاول تتحرك في البيانات في الكامبو بوكس

حتى تصل لكتاب (الكامل في التاريخ )

ستجد أن البيانات ثابته وكانه كتاب واحد
رغم انها في قاعدة البيانات عددها 5 تقريبا

أريد عند التقليب بينها يتغير بيانات الكتاب
والتي قد تتفق في العنوان وتختلف في باقي البيانات


الملفات المرفقة
.rar   Datapase_book.rar (الحجم : 357.56 ك ب / التحميلات : 78)
الرد }}}
تم الشكر بواسطة:
#5
المشكلة ف اسلوب ادخال البايانات من الداتا بيز الي الكومبوبوكس و طالما أنك لديك بيانات متشابهة ف المسميات امر طبيعي ان الكومبو بوكس سيقوم بإهمالها ...... عموما ليس من المنطقي أن تعرض بيانات غيركاملة للمستخدم ف الكومبوبوكس أو بيانات متشابهة و تترك المستخدم يخمن أي البيانات يختار

الحلول كالأتي

إما ان تستخدم الحل اعلاه و تقوم بادخال البيانات الموجودة ف الداتا بيز أولا الي Dictionary كما ف المثال أعلاه

أو أن تقوم ببناء كومبوبوكس جديد يقبل البيانات ب الشكل الذي تريده أنت
الرد }}}
تم الشكر بواسطة:
#6
(13-07-14, 01:56 AM)silverlight كتب : المشكلة ف اسلوب ادخال البايانات من الداتا بيز الي الكومبوبوكس و طالما أنك لديك بيانات متشابهة ف المسميات امر طبيعي ان الكومبو بوكس سيقوم بإهمالها ...... عموما ليس من المنطقي أن تعرض بيانات غيركاملة للمستخدم ف الكومبوبوكس أو بيانات متشابهة و تترك المستخدم يخمن أي البيانات يختار

الحلول كالأتي

إما ان تستخدم الحل اعلاه و تقوم بادخال البيانات الموجودة ف الداتا بيز أولا الي Dictionary كما ف المثال أعلاه

أو أن تقوم ببناء كومبوبوكس جديد يقبل البيانات ب الشكل الذي تريده أنت


الكمبو بوكس لم يهملها بل عرضها كلها الكتب المتشابهة
ولكنه لم يربطها مع التكست بوكس مع كافة الحقوق

بالنسبة للبيانات ليس كما ذكرت بل ستعرض كاملة
ولكن قد يكون هناك عشرة كتب بعنوان واحد
و ببيانات مختلف كاسم المؤلف و دار النشر

فمثلا تاريخ الأدب العربي هناك عشرات الكتب بهذا العنوان
وسيجها المستخدم في الكامبو بوكس ويختار حسب ما يريد
لانه راح يظهر له اسم المؤلف عند تغير حدث SelectedIndexChanged
فيظهر له
تاريخ الادرب العربي في الكامبو بوكس
و طه حسين مثلا في التكست بوكس مرتبط به كاسم مؤلف

وعندما يختار الكتاب الذي يليه والذي بنفس العنوان
تاريخ الادب العربي يظهر كارل بروكلمان في التكست بوكس المرتبط بنفس المؤلف


المثال المرفق فيه المشكلة و يسهلها العملية بسيطة ولكن لا اعرف صياغتها بالضبط
وهي تتلخص في اعتقادي في صياغة LIKE '""

تحياتي
الرد }}}
تم الشكر بواسطة:
#7
يا أستاذي الفاضل الحل ان تستخدم BindingSource لأنه و بدون ربط البيانات المتكررة ب مفتاح معين ...هذا المفتاح الهدف منه هنا هو أنه و عند اختيار اي شئ من الكومبوبوكس يقوم باختيار البيانات المقابلة لهذا الإختيار و يعرضها ببشكل الذي تختاره انت لكن ف حالتك هنا قراءة البيانات تتم بشكل صحيح من الداتا بيز لكن عند عرض البيانات مع الاختيار يحدث الخطأ

لاحظ المثال التالي و كيف ان البيانات تتغير مع تغير المفتاح الذي حددناه لكل اختيار موجود ف الكومبوبوكس

كود :
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim myDictionary As Dictionary(Of String, String) = New Dictionary(Of String, String)
        myDictionary.Add("1", "Ahmed")
        myDictionary.Add("2", "Ahmed")
        myDictionary.Add("3", "Ahmed")

        ComboBox1.DataSource = New BindingSource(myDictionary, Nothing)
        ComboBox1.DisplayMember = "Value"
        ComboBox1.ValueMember = "Key"

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        Me.Label1.Text = CType(ComboBox1.SelectedItem, KeyValuePair(Of String, String)).Value
        Select Case CType(ComboBox1.SelectedItem, KeyValuePair(Of String, String)).Key
            Case 1
                Label2.Text = "you are great"
            Case 2
                Label2.Text = "you are wrong"
            Case 3
                Label2.Text = "you are correct"

        End Select


   End Sub
End Class

عموما تاكد من ان الجملة المستخدمة لسحب البيانات من الداتا بيز مكتوبة برمجيا بشكل دقيق و لربما احد الزملاء الأفاضل من المهتمين ب الداتا بيز يستطيع مساعدنك ف ذلك
الرد }}}
تم الشكر بواسطة:
#8
حاول تغير اسلوب كتابة StoredProcedures و تكتبه ب الشكل التالي

SELECT * FROM Workers WHERE F1 LIKE ''%'' + @ComboBox1.Text.Trim + "'%", con)
الرد }}}
تم الشكر بواسطة:
#9
(13-07-14, 02:54 AM)silverlight كتب : حاول تغير اسلوب كتابة StoredProcedures و تكتبه ب الشكل التالي

SELECT * FROM Workers WHERE F1 LIKE ''%'' + @ComboBox1.Text.Trim + "'%", con)

بعد ما كتبته طلع كوماند أوت باللون الأخضر هذا الجزء بالذات
"'%", con

غيرت وبدلت لكن ما نفع
الرد }}}
تم الشكر بواسطة:
#10
شكرا لك

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


لكنها كل المحاولات لم تنفع لم تنجح
اتمني التعديل في المشروع اللى في المشاركة فوق

عشان التناقضات
الرد }}}
تم الشكر بواسطة:



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


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