تقييم الموضوع :
  • 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 ك ب / التحميلات : 34)
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: عبد العزيز البسكري , 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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] مساعدة في تعديل كود ميدو الفنان 4 112 16-09-20, 06:17 PM
آخر رد: ميدو الفنان
  [كود] تصحيح او تعديل كود البحث في نص مشكل عبد الهادي بهاب 6 185 16-09-20, 03:54 PM
آخر رد: عبد الهادي بهاب
  استفسار بخصوص حجم قاعدة بيانات سيكوال سيرفر momani33 0 33 16-09-20, 02:22 PM
آخر رد: momani33
  [VB.NET] تعديل البيانات من خلال فورم آخر EbrNaj00 6 159 16-09-20, 12:42 AM
آخر رد: EbrNaj00
  المساعدة في التعديل على كود تعديل البيانات في قاعدة سيكوال سيرفر momani33 3 66 15-09-20, 08:10 PM
آخر رد: Anas Mahmoud
  ربط قاعدة البيانات محمود احمد سعد 1 66 14-09-20, 03:49 PM
آخر رد: اسامه الهرماوي
  ربط قاعدة البيانات محمود احمد سعد 1 70 14-09-20, 03:00 PM
آخر رد: Anas Mahmoud
  حاجة غريبة بتحصل فى قاعدة البيانات mostafa nada 4 87 14-09-20, 08:41 AM
آخر رد: الوايلي
  [VB.NET] تعديل في عملية البحث abu7shihab 4 154 11-09-20, 08:20 PM
آخر رد: T 1
  مشكلة عند حفظ البيانات في قاعدة بيانات SQL Server momani33 4 171 08-09-20, 03:44 PM
آخر رد: Hasaneen

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


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