السلام عليكم شباب
كيف يتم ربط حقلين من قاعدة بيانات في ComboBox
مثل ربط حقل رقم الحساب واسم الحساب في برامج المحاسبة
السلام عليكم شباب
كيف يتم ربط حقلين من قاعدة بيانات في ComboBox
مثل ربط حقل رقم الحساب واسم الحساب في برامج المحاسبة
إذا كنت تقصد ربط جدولين عن طريق كومبوبوكس و داتاجريدفيو, فانظر هنا :
السلام عليكم اخي محمد رضى والاخوه في المنتدى
ما اريدة هو تحميل محتوى حقلين في 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
تستعمل الخاصية ValueMember مع DisplayMember :
ComboBox1.DataSource = MyDataSet.Tables("Classes_Types")
' حقل الأسماء
ComboBox1.DisplayMember = "Name_Class"
' حقل المراجع
ComboBox1.ValueMember = "IDClass"تم تعديل هذه المشاركة بواسطة محمد رضى في 18 ديسمبر 2009 في 01:56
لاخ محمد رضى شكراً لك على اهتمامك في الموضوع
استخدمت القيمة Value Member ولم يتم تحميل محتوى الحقلين في ComboBox
ما اريدة هو عند فتح القائمة المنسدلة للـ Combobox ان يكون المحتوى بالشكل التالي
11010001 صندوق فرع 1
11010002 صندوق فرع 2
11010003 صندوق رقم 3
وهكذا
بعتبار ان رقم الحساب يمثل حقل في قاعدة البيانات واسم الحساب يمثل الحقل الثاني
في الاخير اشكرك مره اخره على اهتمامك في الموضوع ومتابعنة
الـ 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
الاخ Muhammad alaa
كيف يتم جعل TextBox لا يقبل إلا ارقام ..ولا ينتقل الى TextBox أخر إلا اذا كان عدد الارقام هو نفسة المحدد في الخاصية MaxLength فثلاً اذا كان قيمة الخاصية MaxLength =8 فانة لا يتم الانتقال من TextBox إلا اذا تم ادخال 8 ارقام وفي حال لم يتم ادخال 8 ارقام وتم الضغط الى Enter فانة يتم البحث في ارقام الحسابات المتوافقة مع ارقام المدخلة ( الثمانية ارقام هي عبارة عن ارقام الحسابات )
لجعل مربع يكتب ارقام فقط (ارقام صحيحه) قم بوضع الكود التالى فى حدث 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
السلام عليكم شباب
أخي العزيز محمد علاء الدين
اريد ان اعرف طريقة التعديل باستخدام رقم القيد حيث عند ضغط تعديل يفتح تكست رقم القيد وعند اخال رقم القيد يتم ملىء البيانات في الفورم كل حقل في مكانة
تم تعديل هذه المشاركة بواسطة m_b في 22 ديسمبر 2009 في 00:30
اقتباساريد ان اعرف طريقة التعديل باستخدام رقم القيد حيث عند ضغط تعديل يفتح تكست رقم القيد وعند اخال رقم القيد يتم ملىء البيانات في الفورم كل حقل في مكانة
اذا كن فهمت كلامك بشكل سليم فأنت تقوم بجعل الخاصيه Enabled بـ True اثناء التعديل، إذا كان كذلك فقط قم بحذف هذا السطر من الكود و ستجد انه غير قابل للتعديل فى وضع التعديل
و الله ولى التوفيق
مدونتي: C++ Tips and Tricks
اخي العزيز محمد علاء الدين طبعاً ارفقت صورة واجهة البرنامج لتوضيح ما اريدة
اريد اولاً عند ادخال جميع البيانات المطلوبة في الفورم فانة يتم حفظ العملية في سطر جديد في الداتاجريت فيو وهو يمثل الجانب المدين من العملية ثم يتم تسجيل بيانات جديدة تمثل الجاني الدائن في العملية ويتم حفظها في سطر اخر في الداتاجريت فيو ولكنة لايتم حفظها فعلياً في قاعدة البيانات إلا عند الضغط على زر حفظ ولا يتم الحفظ إلا بعد مقارنة ان الجانب المدين مساوياً للجانب الدائن .
ثانياً في حالة ان هانك تعديل في قيد معين فأنة عند الضغط على زر تعديل يتم تفعيل التكست الخاص رقم القيد ليتم ادخال رقم القيد المراد تعديلة وبعد الضغط على 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السلام عليكم شباب
هل الاسئلة مو واضحة
السلام عليكم
شباب ارجو المساعدة الموضوع مهم جداً لي لانهاء البرنامج
السلام عليكم شباب
بعد عودتي من المرض فتحت الموضوع ولكني لم اجد اي رد على السؤال
لذلك ارجو منكم المساعدة لان الموضوع ضروري لانهاء المشروع
وشكراً لكم جميعاً