تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] تعديل فى ربط قاعدة بيانات أكسس مع Combobox
#1
أصمم برنامج لتسجيل الأدوية الطبية بهذا الشكل



حيث Type هو نوع الدواء و Name هو إسم الدواء و Dose هى جرعته وRoute هو طريقة تعاطيه
ووضعت له قاعدة بيانات بهذ الشكل



فعند اختيار النوع وهو Antibiotics فى ال Combobox المسمى Type
تظهر قائمة بأسمائها فى ال Combobox المسمى Name وعند اختيار أحد الانواع وليكن Augmentin منها
تظهر الجرعات المتاحة لهذا الدواء والمسجلة بقاعدة البيانات ويفصل بينها (-) كما بالصورة:



وعند اختيار أحد الجرعات من Combobox المسمى Dose ولتكن 20 تظهر طريقة تعاطيه المقابله له فى قاعدة البيانات
فى نفس موقع فواصل (-) كما بالصورة:



المشكلة التى أواجهها هى أنه قد يوجد لجرعة واحدة طريقتين للتعاطى لذا أود أن أضيف علامة فاصلة أخرى كما بالصورة:



بحيث عند اختيار الجرعة من Combobox المسمى Dose ولتكن 20 تظهر طريقتى التعاطى كل واحدة فى خانة
كما بالصورة:



وهذا هو الكود الخاص بهذه الوظيفة وعذراً للإطالة
كود :
  Dim cnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Medication.accdb")
   Dim da As OleDbDataAdapter
   Dim cm As OleDbCommandBuilder
   Dim cmd As OleDbCommand
   Dim itemRoute As String()
   Private Sub MedType1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles MedType1.SelectedIndexChanged

       MedName1.Items.Clear()
       MedDose1.Items.Clear()
       MedRoute1.Items.Clear()

       If MedType1.SelectedItem = ("Antibiotics") Then

           Dim dt1 As New DataTable
           dt1.Clear()
           Dim sql As String = "SELECT * FROM Antibiotics"
           da = New OleDbDataAdapter(sql, cnn)
           cm = New OleDbCommandBuilder(da)
           da.Fill(dt1)

           For ii As Integer = 0 To dt1.Rows.Count - 1
               MedName1.Items.Add(dt1(ii)(0))
           Next

       End If

   End Sub

   Private Sub MedName1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles MedName1.SelectedIndexChanged

       MedDose1.Items.Clear()
       MedRoute1.Items.Clear()

       If MedType1.SelectedItem = ("Antibiotics") Then

           Dim dt2 As New DataTable
           dt2.Clear()
           Dim sql2 As String = "SELECT * FROM Antibiotics WHERE Antibiotics = '" & MedName1.SelectedItem & "'"
           da = New OleDbDataAdapter(sql2, cnn)
           cm = New OleDbCommandBuilder(da)
           da.Fill(dt2)
           Dim doses As String = dt2(0)(1)
           Dim dose As String() = doses.Split("-")
           For ii As Integer = 0 To dose.Count - 1
               MedDose1.Items.Add(dose(ii))
           Next
           Dim routes As String = dt2(0)(2)
           Dim route As String() = routes.Split("-")
           itemRoute = route

       End If

   End Sub
الرد }}}
تم الشكر بواسطة: asemshahen5
#2
السلام عليكم ورحمة الله وبركاته
اخي الكريم 
اولا تحتاج الى تصميم قاعدة البيانات من جديد بحيث يكون لديك :
جدول  الاصناف له مفتاح رئيسي
 - جدول اسماء الادوية مرتبط بجدول الاصناف مفتاح فرعي 
- حدول الجرعات مرتبط بجدول اسماء الادوية بمفتاح فرعي
-جدول طريقة الاستعمال مرتبط بجدول اسماء الادوية بمفتاح فرعي , او تربطه بجدول الجرعات اذا كان هناك اختلاف في طريقة الاستعمال حسب الجرعة
ثم ستملأ كل كومبو بناء على الاختيار في الجدول الريسي التابع له
ارجو ان تكون الفكرة قد اتضحت لديك
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: Doctor GME , asemshahen5
#3
اخي الكريم اليك مثال مع قاعدة بيانات اكسس
فيه 4 كومبو بوكس يملا كل واحد بناء على اختيار الاب


الملفات المرفقة
.zip   Doctor.zip (الحجم : 107.41 ك ب / التحميلات : 58)
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , Doctor GME , asemshahen5
#4
شكراً جزيلاً لمحاولتك المساعدة
الكود الذى وضعته أخى الكريم جيد إلى حد كبير ولكنه لم يحل المشكلة
فكما ترى بهذه الصورة



صممت قاعدةالبيانات ليكون اسم الدواء وجرعاته وطريقة تعاطى كل جرعة بجانبها تماماً وذلك لسهولة الإضافة
حيث أن البرنامج سيحتوى على آلاف الأدوية من مختلف الأصناف مثل المضادات والمسكنات وخلافه
ولا يمكن أن تكتب كلها فى جدول Dawaa مثل مقترحك فهذا سيصعب جداً التعديل ويفتح الباب للخطأ
فى شىء خطير مثل كتابة الدواء
كما أن مقترحك أخى الكريم لا يربط طريقة تعاطى الدواء بالجرعة وإنما بإسم الدواء
وما أقصده أن دواء ما ولتكن جرعته 50 مللى جرام يؤخذ بالفم ولكن جرعة 100 مللى جرام تؤخذ بالحقن وهكذا
أما مقترحك فعند إضافة بند آخر فى طريقة التعاطى يظهر مباشرة بعد اختيار اسم الدواء وليس الجرعة هكذا



ولهذا طلبت التعديل فى قاعدة البيانات التى صممتها وهى تنفذ كل ما يطلبه البرنامج ولكن ينقصها فقط التعرف على الفواصل
بين طريقة التعاطى والأخرى لجعلها خانات مستقلة كما بالصورة



وشكراً جزيلاً مرة أخرى لمجهودك
الرد }}}
#5
العفو اخي الكريم ولك الشكر ايضا
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
#6
السلام عليكم اخي الكريم
انت تريد جلب القيمة الموجودة في خلية لاحد السجلات والقيمة عبارة عن اكثر من قيمة تفصلها اشارة (-)
لدي فكرة ولكن تحتاج الى تجريب ولايسمح لي الوقت حاليا بتجربة ذلك يمكنك العمل بهذا الاتجاه ان استوعبت الفكرة
الفكرة تقوم على جلب قيمة تلك الخلية ( الجرعات )وتحويلها الى مصفوفة نصية بتقطيعها بوساطة اشارة(-) ثم وضع الناتج في كومبوبوكس 
وكذلك الحال بالنسبة لخلية طريقة الاستخدام 
وعند الاختيار من كومبو الجرعات لاتتغير القيم في كومبو طريقة الاستخدام بل يجب ان نختار نحن ذلك يدويا !!!!
ربما يوجد لذلك حل لاأعرف
هذا ماعندي وفوق كل ذي علم عليم
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: Doctor GME , asemshahen5
#7
للأسف يا أخى لا يمكن الاختيار يدوياً
فهذا ضد هدف البرنامج المصمم لحفظ كل ما يتعلق بالدواء وإظهاره أوتوماتيكياً منعاً للخطأ
ولهذا فأنا أحاول مع الطريقة الصعبة
وشكراً جزيلاً لاهتمامك
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5
#8
السلام عليكم و رحمة الله و بركاته

عندي اقتراح بسيط

الحل في تنظيم قاعدة البيانات

أنا أفهم أنك تريد صف واحد بكل جدول به كل المعلومات الخاصة بالدواء و هذا غير منطقي لأن بعض هذه المعلومات متغيرة و مترابطة

محتاج تضيف جدول به ثلاث صفوف

drugId , dose, route

و تربط drugId ب Id الدواء المقابل

و عندما تختار الدواء رقم واحد مثلا، تظهر الجرعات الخاصة به و عندما تختار جرعة ما فتظر تلقائيا طريقة الاعطاء لهذه الجرعة

تسطيع ان تجعل الادخال عن طريق البرمجة و ليس يدوي لتجنب الخطأ
الرد }}}
#9
شكراً لاقتراحك أخى
قام الأخ ابراهيم ايبو مشكوراً بتصميم اقتراح مشابه تجده فى الردود بالأعلى
ولكنه لا ينفذ الفكرة المطلوبة
كل ما أفكر به حالياً هو كود يكتب فى مهام ال combobox الأخير
ويجعله يقسم ما يأتيه من قاعدة البيانات عند إيجاده رمز &
الرد }}}
تم الشكر بواسطة: asemshahen5
#10
(30-03-20, 01:44 PM)Doctor GME كتب : شكراً لاقتراحك أخى
قام الأخ ابراهيم ايبو مشكوراً بتصميم اقتراح مشابه تجده فى الردود بالأعلى
ولكنه لا ينفذ الفكرة المطلوبة
كل ما أفكر به حالياً هو كود يكتب فى مهام ال combobox الأخير
ويجعله يقسم ما يأتيه من قاعدة البيانات عند إيجاده رمز &

أعتقد ان عندي فكرة ممكن تحل المشكلة

هتحتاج تربط textbox ب Dose، و textbox اخر ب Route

و يكون الكود الل يملأ ال combobox الخاص ب  Dose  كالتالي

PHP كود :
Dim DoseArray() As String TextBox1.Text.Split("&"c)

ComboBox1.Items.Clear()
 
       
For As Integer 0 To DoseArray.GetUpperBound(0)

 
  ComboBox1.Items.Add(DoseArray(i))

Next 


و هكذا
الرد }}}
تم الشكر بواسطة: asemshahen5 , Doctor GME


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تعديل على فاتورة مبيعات خالد كامل1 4 124 26-03-24, 10:49 PM
آخر رد: خالد كامل1
  كيف اتعامل مع databindings و ال combobox سلام و محبه 2 84 24-03-24, 05:00 AM
آخر رد: سلام و محبه
  هل من الممكن العمل على قاعدة بيانات اكسل على الفيجوال بيسك خالد كامل1 4 145 24-03-24, 02:00 AM
آخر رد: خالد كامل1
  تعديل كود ارسال صورة الى الواتس new_programer 2 170 21-03-24, 10:07 PM
آخر رد: new_programer
  [سؤال] أتمنى اجابة وافية:عمل برنامج بقاعدة بيانات SQL دون حاجة تثبيت SQLSERVER dr.programming 6 656 19-03-24, 08:56 AM
آخر رد: سلامه محمد11
  تعديل صب المجموع الكلي والمعدل والتقدير مصمم هاوي 3 173 19-03-24, 01:33 AM
آخر رد: مصمم هاوي
  استعلام select عن مجموعة بيانات Adel27213 1 214 15-03-24, 01:11 AM
آخر رد: justforit
  تعديل طول حقل معين في جميع جداول القاعدة atefkhalf2004 1 108 09-03-24, 03:17 AM
آخر رد: atefkhalf2004
  تعديل بيانات عمود DataGridView دفعة واحدة مصمم هاوي 2 198 05-03-24, 08:27 PM
آخر رد: مصمم هاوي
  [VB.NET] تحديث بيانات فى كلاس من جدول سيكوال asdfar1977 6 196 26-02-24, 01:07 AM
آخر رد: asdfar1977

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


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