أحاول ان اعمل برنامج عيادة لطبيب
قمت باستخدام قاعدة بيانات اكسس باسم mydata
تتضمن جداول لاسم المريض العنوان العمر الحالة العائلية
واجهتني مشكلة في كود البحث حيث جعلت المستخدم يختار اسم الجدول الذي سيبحث به بواسطة ازارار الاختيار ونوع البحث مطابق للكلمة ام لا
ثم يتم عرض ذلك في ادوات تكست وفي شبكة بيانات ولكن عندما اطلب منه ان يبحث مرة ثانية يظهر خطأ
ارجو المساعة في حله
اسم قاعدة البيانات mydata
اسم الجدول patient
حقول الجدول name adress matrial age phone
الفورم الخاص بواجهة البرنامج form1
الفورم الخاص بنافذة البحث form4
زر البحث button6
تكست كلمة البحث TextBox6
يتم اظهار نتيجة البحث في تكست TextBox12345
وفي شبكة بياناتDataGridView1
اختيار البحث المطابق RadioButton1
اختيار البحث العام RadioButton2
اختيار الجدول المراد البحث به RadioButton7RadioButton6 RadioButton5 RadioButton4RadioButton3
حذف النتيجة الحالية من قاعدة البيانات Button1
تديل النتيجة الحاليةButton4
حفظ التعديل Button3
الغاء التعديل Button2
العودة للواجهة الرئيسية Button5
المشكلة ان البرنامج صالح للاستخدام مرة واحدة فهو يعطي نتيجة صحيحة ويمكن التعديل عليها وحذفها من قاعدة البيانات ولكن عند البحث بواسطة كلمة ثانية يظهر خطأ
والكود هو
Imports System.Data
Imports System.Data.OleDb
Public Class Form4
Dim frm As New Form1
Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source =" & Application.StartupPath & "\MyData.mdb"
Dim Conn As New OleDbConnection(ConStr)
Dim DataSet1 As New DataSet
Dim SQLstr As String
Dim m As String
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Button6.Enabled = False
Button3.Enabled = True
Button4.Enabled = True
Button2.Enabled = False
Button1.Enabled = False
TextBox1.ReadOnly = False
TextBox2.ReadOnly = False
TextBox3.ReadOnly = False
TextBox4.ReadOnly = False
TextBox5.ReadOnly = False
m = TextBox5.Text
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
If TextBox6.Text = Trim("") Then Exit Sub
If RadioButton1.Checked = True Then
ExactSearch()
ElseIf RadioButton2.Checked = True Then
GeneralSearch()
End If
Conn.Open()
Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, Conn)
DataAdapter1.Fill(DataSet1, "patient")
Conn.Close()
TextBox1.DataBindings.Add("Text", DataSet1, "patient.name")
TextBox2.DataBindings.Add("Text", DataSet1, "patient.adress")
TextBox3.DataBindings.Add("Text", DataSet1, "patient.matrial")
TextBox4.DataBindings.Add("Text", DataSet1, "patient.age")
TextBox5.DataBindings.Add("Text", DataSet1, "patient.phone")
DataGridView1.DataSource = DataSet1
DataGridView1.DataMember = "patient"
If Me.BindingContext(DataSet1, "patient").Count = 0 Then
MsgBox("No Result, Please Try Again ")
Exit Sub
End If
Button1.Enabled = True
Button2.Enabled = True
End Sub
Public Sub ExactSearch()
If RadioButton3.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE name = '" & TextBox6.Text & "'"
ElseIf RadioButton4.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE adress = '" & TextBox6.Text & "'"
ElseIf RadioButton5.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE matrial = '" & TextBox6.Text & "'"
ElseIf RadioButton6.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE age = '" & TextBox6.Text & "'"
ElseIf RadioButton7.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE phone = '" & TextBox6.Text & "'"
End If
End Sub
Public Sub GeneralSearch()
If RadioButton3.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE name LIKE '%" & TextBox6.Text & "%'"
ElseIf RadioButton4.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE adress LIKE '%" & TextBox6.Text & "%'"
ElseIf RadioButton5.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE matrial LIKE '%" & TextBox6.Text & "%'"
ElseIf RadioButton6.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE age LIKE '%" & TextBox6.Text & "%'"
ElseIf RadioButton7.Checked = True Then
SQLstr = "SELECT * FROM patient WHERE phone LIKE '%" & TextBox6.Text & "%'"
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Me.Close()
frm.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MsgBox("دكتور شريف هل تريد حذف السجل الحالي", MsgBoxStyle.OkCancel) = MsgBoxResult.Cancel Then
Exit Sub
End If
Dim adapter2 As New OleDbDataAdapter(SQLstr, Conn)
Dim SavInto As New OleDb.OleDbCommand
SavInto.Connection = Conn
SavInto.CommandType = CommandType.Text
SavInto.CommandText = "DELETE FROM patient WHERE phone ='" & Trim(TextBox5.Text) & "'"
Conn.Open()
SavInto.ExecuteNonQuery()
DataSet1.Clear()
adapter2.Fill(DataSet1, "patient")
Conn.Close()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Button6.Enabled = True
Dim SavInto As New OleDb.OleDbCommand
Dim adapter2 As New OleDbDataAdapter(SQLstr, Conn)
SavInto.Connection = Conn
SavInto.CommandType = CommandType.Text
SavInto.CommandText = "UPDATE patient SET name = '" & Trim(TextBox1.Text) & "' , adress = '" & Trim(TextBox2.Text) & "' , matrial = '" & Trim(TextBox3.Text) & "' , age = '" & Trim(TextBox4.Text) & "' , phone = '" & Trim(TextBox5.Text) & "' WHERE phone ='" & m & "'"
Conn.Open()
SavInto.ExecuteNonQuery()
Conn.Close()
Button3.Enabled = False
Button4.Enabled = False
Button2.Enabled = True
Button1.Enabled = True
TextBox1.ReadOnly = True
TextBox2.ReadOnly = True
TextBox3.ReadOnly = True
TextBox4.ReadOnly = True
TextBox5.ReadOnly = True
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Button6.Enabled = True
Button3.Enabled = False
Button4.Enabled = False
Button2.Enabled = True
Button1.Enabled = True
TextBox1.ReadOnly = True
TextBox2.ReadOnly = True
TextBox3.ReadOnly = True
TextBox4.ReadOnly = True
TextBox5.ReadOnly = True
End Sub
Private Sub Form4_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Leave
Me.Show()
End Sub
End Classارجو المساعة ولكم جزيل الشكر مسبقا ولكل من اتعب نفسه حتى بقراءة الموضوع
سأقوم برفع المسروع في المرفقات