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



عند كتابة ID والضغط على زر View يبحث البرنامج فى قاعدة البيانات التالية:



بواسطة هذا الكود:

كود :
Imports System.Data.OleDb
Public Class Form1

   Dim cnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Reservation.accdb")
   Dim cmd As OleDbCommand
   Dim dr As OleDbDataReader

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       Try
           cnn.Open()
           Dim sql As String = "SELECT * FROM Appointments WHERE PersonID=@id"
           cmd = New OleDbCommand(sql, cnn)
           cmd.Parameters.AddWithValue("@id", TextBox1.Text)
           dr = cmd.ExecuteReader()
           If dr.Read = False Then
               User_ID.DateTimePicker1.Value = Date.Now
           Else
               User_ID.DateTimePicker1.Value = dr.Item(0).ToString
           End If
       Catch ex As Exception
           MsgBox(ex.Message)
       Finally
           If (cnn.State = ConnectionState.Open) Then cnn.Close()
       End Try

       User_ID.Show()

   End Sub
End Class

ثم يفتح Form التالية:



وعندما يجد رقم ID مسجل فى قاعدة البيانات يتحول تلقائياً لليوم المسجل به
ويغير label backcolor للمكان الذى تم به الحجز للون البنفسجى
عن طريق هذا الكود:

كود :
Imports System.Data.OleDb
Public Class User_ID

   Dim cnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Reservation.accdb")
   Dim cmd As OleDbCommand
   Dim da As OleDbDataAdapter
   Dim cm As OleDbCommandBuilder
   Dim dr As OleDbDataReader
   Dim dt As DataTable

   Private Sub User_ID_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       DateTimePicker1.Format = DateTimePickerFormat.Custom
       DateTimePicker1.CustomFormat = "dd-MMMM-yyyy"

       Try
           cnn.Open()
           Dim sql As String = "SELECT * FROM Appointments WHERE AppDate=@date"
           Dim cmd As New OleDbCommand(sql, cnn)
           cmd.Parameters.AddWithValue("@date", DateTimePicker1.Value.ToShortDateString)
           Using dr As OleDbDataReader = cmd.ExecuteReader()
               If dr.HasRows Then
                   Do While dr.Read()

                       If dr.Item(2).ToString = "Yes" Then
                           Label1.BackColor = Color.Violet
                       Else
                           Label1.BackColor = SystemColors.Control
                       End If

                       If dr.Item(3).ToString = "Yes" Then
                           Label2.BackColor = Color.Violet
                       Else
                           Label2.BackColor = SystemColors.Control
                       End If

                       If dr.Item(4).ToString = "Yes" Then
                           Label3.BackColor = Color.Violet
                       Else
                           Label3.BackColor = SystemColors.Control
                       End If

                       If dr.Item(5).ToString = "Yes" Then
                           Label4.BackColor = Color.Violet
                       Else
                           Label4.BackColor = SystemColors.Control
                       End If

                   Loop
               End If
               dr.Close()
           End Using
       Catch ex As Exception
           MsgBox(ex.Message)
       Finally
           If (cnn.State = ConnectionState.Open) Then cnn.Close()
       End Try

   End Sub

   Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged

       Try
           cnn.Open()
           Dim sql As String = "SELECT * FROM Appointments WHERE AppDate=@date"
           Dim cmd As New OleDbCommand(sql, cnn)
           cmd.Parameters.AddWithValue("@date", DateTimePicker1.Value.ToShortDateString)
           Dim dr As OleDbDataReader = cmd.ExecuteReader()
           If dr.HasRows Then
               Do While dr.Read()

                   If dr.Item(2).ToString = "Yes" Then
                       Label1.BackColor = Color.Violet
                   Else
                       Label1.BackColor = SystemColors.Control
                   End If

                   If dr.Item(3).ToString = "Yes" Then
                       Label2.BackColor = Color.Violet
                   Else
                       Label2.BackColor = SystemColors.Control
                   End If

                   If dr.Item(4).ToString = "Yes" Then
                       Label3.BackColor = Color.Violet
                   Else
                       Label3.BackColor = SystemColors.Control
                   End If

                   If dr.Item(5).ToString = "Yes" Then
                       Label4.BackColor = Color.Violet
                   Else
                       Label4.BackColor = SystemColors.Control
                   End If

               Loop
           End If
       Catch ex As Exception
           MsgBox(ex.Message)
       Finally
           If (cnn.State = ConnectionState.Open) Then cnn.Close()
       End Try

   End Sub
End Class

حتى الآن كل شىء على ما يرام ولكن إذا لاحظتم بالأعلى فى صورة قاعدة البيانات
إذا كتبت ID رقم 5 مثلاً سيتحول لتاريخ 9 ابريل ويغير لون ال label الثالث
ولكن هناك حجز آخر بتاريخ 9 ابريل وذلك للمكان الأول ولكنه لا يغير لونه
أى أن reader يقرأ نتيجة واحدة فقط ولا أعرف الخطأ الذى لا يجعله يبحث فى الكود كله
البرنامج فى المرفقات


الملفات المرفقة
.rar   Search All Rows.rar (الحجم : 80.87 ك ب / التحميلات : 17)
الرد }}}
تم الشكر بواسطة: asemshahen5
#2
لا يتغيّر اللون لأنّه من المفروض تكون عبارة YES مكتوبة للمقعد الأوّل بقاعدة البيانات
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5 , asemshahen5
#3
كلمة yes مكتوبة أخى العزيز ولكن التاريخ مسجل مرتين فى قاعدة البيانات كما فى الصورة:



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







الرد }}}
تم الشكر بواسطة: asemshahen5
#5
(02-05-20, 05:43 AM)Doctor GME كتب : حتى الآن كل شىء على ما يرام ولكن إذا لاحظتم بالأعلى فى صورة قاعدة البيانات
إذا كتبت ID رقم 5 مثلاً سيتحول لتاريخ 9 ابريل ويغير لون ال label الثالث
ولكن هناك حجز آخر بتاريخ 9 ابريل وذلك للمكان الأول ولكنه لا يغير لونه
أى أن reader يقرأ نتيجة واحدة فقط ولا أعرف الخطأ الذى لا يجعله يبحث فى الكود كله
البرنامج فى المرفقات


السلام عليكم و رحمة الله و بركاته

السبب هو شرط if 

 عدلت لك المثال ليعمل كما تريد


الملفات المرفقة
.rar   Search All Rows.rar (الحجم : 99.18 ك ب / التحميلات : 32)
الرد }}}
تم الشكر بواسطة: asemshahen5 , Doctor GME , ابراهيم ايبو
#6
شكراً أخى WaeLx
بعد بعض التعديلات يعمل جيداً
والشكر أيضاً للأخ ابراهيم ايبو لمحاولته المساعدة
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة فى Radiobutton عند وضع صورة فيه أبو جودة 3 80 15-04-24, 04:31 AM
آخر رد: Taha Okla
  [سؤال] لدي مشكلة عند قراءة ملف نصي من خلال أداة RichBox , حيث تظهر لي علامات استفهام Mostchar 2 149 07-04-24, 02:51 PM
آخر رد: تركي الحلواني
  مشكلة في التايمر assuhimi 3 126 23-03-24, 04:51 PM
آخر رد: Taha Okla
  [سؤال] أتمنى اجابة وافية:عمل برنامج بقاعدة بيانات SQL دون حاجة تثبيت SQLSERVER dr.programming 6 652 19-03-24, 08:56 AM
آخر رد: سلامه محمد11
  [سؤال] مشكلة اتصال مفتوح dell 2 171 12-03-24, 09:46 PM
آخر رد: dell
  مشكلة عند نقل البرنامج من فيجوال 2013 الى فيجوال 2017 strongriseman 5 156 12-03-24, 10:37 AM
آخر رد: strongriseman
  مشكلة فى جمع عمود فى داتا جريد فيو احمد خطاب 3 162 06-03-24, 07:49 PM
آخر رد: احمد خطاب
Photo [VB.NET] مشكلة في شكل الفورم abuyazan 5 305 27-02-24, 09:38 PM
آخر رد: aljzazy
  [VB.NET] مشكلة فى رفع الفاتورة asdfar1977 5 176 25-02-24, 02:04 PM
آخر رد: asdfar1977
  [VB.NET] حل مشكلة الاتصال بقواعد البيانات access loay775 2 170 25-02-24, 06:29 AM
آخر رد: loay775

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


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