02-05-20, 05:43 AM
هذه هى الواجهة الرئيسية فى برنامجى:
![[صورة مرفقة: 668758020.jpg]](https://www5.0zz0.com/2020/05/02/04/668758020.jpg)
عند كتابة ID والضغط على زر View يبحث البرنامج فى قاعدة البيانات التالية:
![[صورة مرفقة: 593216475.jpg]](https://www4.0zz0.com/2020/05/02/04/593216475.jpg)
بواسطة هذا الكود:
ثم يفتح Form التالية:
![[صورة مرفقة: 303403470.jpg]](https://www4.0zz0.com/2020/05/02/04/303403470.jpg)
وعندما يجد رقم ID مسجل فى قاعدة البيانات يتحول تلقائياً لليوم المسجل به
ويغير label backcolor للمكان الذى تم به الحجز للون البنفسجى
عن طريق هذا الكود:
حتى الآن كل شىء على ما يرام ولكن إذا لاحظتم بالأعلى فى صورة قاعدة البيانات
إذا كتبت ID رقم 5 مثلاً سيتحول لتاريخ 9 ابريل ويغير لون ال label الثالث
ولكن هناك حجز آخر بتاريخ 9 ابريل وذلك للمكان الأول ولكنه لا يغير لونه
أى أن reader يقرأ نتيجة واحدة فقط ولا أعرف الخطأ الذى لا يجعله يبحث فى الكود كله
البرنامج فى المرفقات
![[صورة مرفقة: 668758020.jpg]](https://www5.0zz0.com/2020/05/02/04/668758020.jpg)
عند كتابة ID والضغط على زر View يبحث البرنامج فى قاعدة البيانات التالية:
![[صورة مرفقة: 593216475.jpg]](https://www4.0zz0.com/2020/05/02/04/593216475.jpg)
بواسطة هذا الكود:
كود :
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 التالية:
![[صورة مرفقة: 303403470.jpg]](https://www4.0zz0.com/2020/05/02/04/303403470.jpg)
وعندما يجد رقم 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 يقرأ نتيجة واحدة فقط ولا أعرف الخطأ الذى لا يجعله يبحث فى الكود كله
البرنامج فى المرفقات
![[صورة مرفقة: p_1582dhzpa1.jpg]](https://a.top4top.io/p_1582dhzpa1.jpg)
![[صورة مرفقة: p_158285pio1.png]](https://i.top4top.io/p_158285pio1.png)
![[صورة مرفقة: 939904043.jpg]](https://www4.0zz0.com/2020/05/02/05/939904043.jpg)