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

كيف يتم ربط حقلين في Combobox

بدأه m_b في 16 ديسمبر 2009 · 14 رد · 4,169 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم شباب

كيف يتم ربط حقلين من قاعدة بيانات في ComboBox

مثل ربط حقل رقم الحساب واسم الحساب في برامج المحاسبة

#3

السلام عليكم اخي محمد رضى والاخوه في المنتدى

ما اريدة هو تحميل محتوى حقلين في ComboBox

فمثلاً هذه طريقة لتحميل محتوى حقل في ComboBox

    ' دالة لتحميل اسماء الاصناف الرئيسية من قاعدة البيانات الى ComboBox

    Public Sub ComboBoxLoad()
        Try
            conn = New OleDbConnection(ConStr)
            MyDataSet = New DataSet

            Dim sql As String = "SELECT * FROM Classes_Types"
            Dim Cmd As New OleDbCommand(sql, conn)

            Dim AdapterSave As New OleDbDataAdapter(Cmd)

            AdapterSave.Fill(MyDataSet, "Classes_Types")
            ComboBox1.DataSource = MyDataSet.Tables("Classes_Types")
            ComboBox1.DisplayMember = "Name_Class"

        Catch ex As OleDbException
            MsgBox(ex.ToString, MsgBoxStyle.OkOnly, "Exception")
        End Try
    End Sub

ما اريدة هو تحميل حقلين في ComboBox هما حقل Name_Class وحقل IDClass

#4

تستعمل الخاصية ValueMember مع DisplayMember :

            ComboBox1.DataSource = MyDataSet.Tables("Classes_Types")
' حقل الأسماء
            ComboBox1.DisplayMember = "Name_Class"
' حقل المراجع
ComboBox1.ValueMember = "IDClass"

تم تعديل هذه المشاركة بواسطة محمد رضى في 18 ديسمبر 2009 في 01:56

#5

لاخ محمد رضى شكراً لك على اهتمامك في الموضوع

استخدمت القيمة Value Member ولم يتم تحميل محتوى الحقلين في ComboBox

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

11010001 صندوق فرع 1

11010002 صندوق فرع 2

11010003 صندوق رقم 3

وهكذا

بعتبار ان رقم الحساب يمثل حقل في قاعدة البيانات واسم الحساب يمثل الحقل الثاني

في الاخير اشكرك مره اخره على اهتمامك في الموضوع ومتابعنة

#6

السلام عليكم شباب

تم ارفاق صورة لمعرفة ما اريدة بالضبط

post-207163-12613143843491_thumb.jpg

#7

الـ DataBinding لا تسمح لك بإستخدام قيمة اكثر من حقل معا لذا فسنقوم بعمل حيلة صغيره و هى تكون فى كتابتك لجملة الإستعلام.

كما لاحظت انك تريد ان تظهر الحقلين IDClass و Name_Class بجانب بعضهما و بنفس الترتيب، لذا سنقوم بتعديل جملة الإستعلام الذكوره فى المشاركه الثالثه من:

Dim sql As String = "SELECT * FROM Classes_Types"

لتصبح كالتالى

Dim sql As String = "SELECT *, " & _
                    "IDClass & ' ' & Name_Class As MixValue " & _
                    "FROM Classes_Types"

كما تلاحظ قمنا بعمل دمج بين الحقلين داخل جملة الإستعلام و الحقل الناتج قمنا بتسميته MixValue، الأمر الأن اصبح بسيط قم بتعديل السطر التالى من :

ComboBox1.DisplayMember = "Name_Class"

إلى

ComboBox1.DisplayMember = "MixValue"

و ستظهر النتيجه كما تريد.

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 20 ديسمبر 2009 في 22:36

مدونتي: C++ Tips and Tricks

#8

الاخ Muhammad alaa

كيف يتم جعل TextBox لا يقبل إلا ارقام ..ولا ينتقل الى TextBox أخر إلا اذا كان عدد الارقام هو نفسة المحدد في الخاصية MaxLength فثلاً اذا كان قيمة الخاصية MaxLength =8 فانة لا يتم الانتقال من TextBox إلا اذا تم ادخال 8 ارقام وفي حال لم يتم ادخال 8 ارقام وتم الضغط الى Enter فانة يتم البحث في ارقام الحسابات المتوافقة مع ارقام المدخلة ( الثمانية ارقام هي عبارة عن ارقام الحسابات )

#9

لجعل مربع يكتب ارقام فقط (ارقام صحيحه) قم بوضع الكود التالى فى حدث KeyPress له

        If Not (Char.IsNumber(e.KeyChar) OrElse e.KeyChar = ChrW(8)) Then
            e.Handled = True
        End If

بالنسبه للإنتقال من مربع نص لأى اداه اخرى بناءا على شرط معين فهذا يتم مع الحدث Validating قم بكتابة الكود التالى بداخله

        If TextBox1.Text.Trim = String.Empty Then
            e.Cancel = False
            Return
        End If

        If TextBox1.TextLength <> TextBox1.MaxLength Then
            e.Cancel = True
        Else
            e.Cancel = False
        End If

بالنسبه للخاصيه Cancel عند جعلها True لن يغادر الـ Focus مربع النص على الإطلاق و اعنى بعلى الإطلاق انك حتى لو اردت غلق البرنامج من زر Close الموجود بالـ TitleBar فلن يتم الإستجابه و سيظل تنفيذ اى اوامر معلق حتى يتم جعل Cancel بـ False.

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

        If TextBox1.TextLength <> TextBox1.MaxLength Then
            TextBox1.Focus()
        End If

بالنسبه لعمل بحث داخل قاعدة البيانات برقم الحساب المدخل فى حالة ضغط زر Enter فسنحتاج لكتابة كود اضافى داخل حدث KeyPress و بعد الكود الذى يتعامل الأرقام (يعنى اكتب الكود ده بعد اللى فات :mad: )

        If e.KeyChar = ChrW(13) AndAlso TextBox1.TextLength = TextBox1.MaxLength Then
            MsgBox("Enter")
        End If

قم بحذف كود الرساله Msgbox و ضع الكود الذى يقوم بعملية البحث الفعليه

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#10

السلام عليكم شباب

أخي العزيز محمد علاء الدين

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

تم تعديل هذه المشاركة بواسطة m_b في 22 ديسمبر 2009 في 00:30

#11
اقتباس
اريد ان اعرف طريقة التعديل باستخدام رقم القيد حيث عند ضغط تعديل يفتح تكست رقم القيد وعند اخال رقم القيد يتم ملىء البيانات في الفورم كل حقل في مكانة

اذا كن فهمت كلامك بشكل سليم فأنت تقوم بجعل الخاصيه Enabled بـ True اثناء التعديل، إذا كان كذلك فقط قم بحذف هذا السطر من الكود و ستجد انه غير قابل للتعديل فى وضع التعديل

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#12

اخي العزيز محمد علاء الدين طبعاً ارفقت صورة واجهة البرنامج لتوضيح ما اريدة

اريد اولاً عند ادخال جميع البيانات المطلوبة في الفورم فانة يتم حفظ العملية في سطر جديد في الداتاجريت فيو وهو يمثل الجانب المدين من العملية ثم يتم تسجيل بيانات جديدة تمثل الجاني الدائن في العملية ويتم حفظها في سطر اخر في الداتاجريت فيو ولكنة لايتم حفظها فعلياً في قاعدة البيانات إلا عند الضغط على زر حفظ ولا يتم الحفظ إلا بعد مقارنة ان الجانب المدين مساوياً للجانب الدائن .

ثانياً في حالة ان هانك تعديل في قيد معين فأنة عند الضغط على زر تعديل يتم تفعيل التكست الخاص رقم القيد ليتم ادخال رقم القيد المراد تعديلة وبعد الضغط على Enter يتم تحميل قيد العملية في الداتاجريت فيو وعند اختيار السطر المراد تعديلة بالضغظ على دبل كليك يتم ملىء البيانات في اماكنها في الفورم بنفس التنسق قبل حفظها .

ثالثاً ما سبق ان سئلة علية وهو اذا لم اكن اعرف رقم حساب العملية المراد تسجيلها وقمت بتسجيل الارقام الاولى وبعد الضغظ على Enter يتم فتح Combobox او listbox برقام الحاسابات واسمائها اعتماداً على ما تم ادخاله وفي حال لم ادخل اي رقم وضغظة انتر فانة يتم فتح كامل شجرة الحسابات واسمائها , وبعد اختيار رقم الحساب المراد يتم حفظ رقم الحاساب في تكست واسم الحساب في تكست أخر .

طبعاً انا حاولة ان اكتب اجراء للعملية ولكنة لم ينجح .

Public Sub ListBoxLoad()
        Try
            conn = New OleDbConnection(ConStr)
            MyDataSet = New DataSet

            Dim sql As String = "SELECT *, " & _
             "IDClass & ' ' & Name_Class As MixValue " & _
                    "FROM Classes_Types" & _
                    "WHERE IDClass LIKE '" & TextBox4.Text & "'"
            Dim Cmd As New OleDbCommand(sql, conn)

            Dim AdapterSave As New OleDbDataAdapter(Cmd)

            AdapterSave.Fill(MyDataSet, "Classes_Types")
            ListSearch.DataSource = MyDataSet.Tables("Classes_Types")
            ListSearch.DisplayMember = "MixValue"

        Catch ex As OleDbException
            MsgBox(ex.ToString, MsgBoxStyle.OkOnly, "Exception")
        End Try
    End Sub

post-207163-12615101830457_thumb.jpg

post-207163-12615101952551_thumb.jpg

#13

السلام عليكم شباب

هل الاسئلة مو واضحة

#14

السلام عليكم

شباب ارجو المساعدة الموضوع مهم جداً لي لانهاء البرنامج

#15

السلام عليكم شباب

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

لذلك ارجو منكم المساعدة لان الموضوع ضروري لانهاء المشروع

وشكراً لكم جميعاً

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