السلام عليكم
قمت بانشاء برنامج بلغة vb.net ويقوم بالحفظ في قاعدة بيانات من نوع اكسس وذلك باستخدام مكتبة ado.net
والمشكلة هنا ان البرنامج يعمل بشكل جيد ولكن عند تجربته لا يعمل وعند تجربته مره أخرى في نفس الوقت يقوم بالحفظ بشكل طبيعي جداً
أي انه يعمل ولا يعمل فما الحل ، وهذا هو الكود :
كود لحفظ فاتورة وعرض تقرير بمحتويات الفاتورة
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'التاكد من امكانية حفظ الفاتورة
If BtnCancel.Enabled = True Then
Mssg.OK("غير مسموح بحفظ الفاتورة أثناء إجراء عملية ..")
Exit Sub
End If
Cmd.CommandText = "select * from [sellmovement]"
Dr = Cmd.ExecuteReader
If Dr.HasRows = False Then
Mssg.OK("لا توجد أي عملية في الفاتورة الحالية ..")
Dr.Close()
Exit Sub
End If
Dr.Close()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'التاكد من ملأ بيانات الدفع وطريقة الدفع قبل اجراء عملية حفظ للفاتورة
If RadioButton1.Checked Then
If TextBox1.Text = "" Then Mssg.OK("ادخل بيانات الدفع ..") : Exit Sub
ElseIf RadioButton2.Checked Then
If TextBox4.Text = "" Then Mssg.OK("ادخل بيانات الدفع ..") : Exit Sub
ElseIf RadioButton3.Checked Then
If TextBox2.Text = "" Then Mssg.OK("ادخل بيانات الدفع ..") : Exit Sub
If TextBox3.Text = "" Then Mssg.OK("ادخل بيانات الدفع ..") : Exit Sub
If Val(TextBox12.Text) <> Val(Val(TextBox3.Text) + Val(TextBox2.Text)) Then
Mssg.OK("تاكد من أن بيانات الدفع صحيحة ..") : Exit Sub
End If
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'التأكد من ادخال البيانات الهامة في الفاتورة لحفظها
If ComboBox1.Text = "" Then Mssg.OK("ادخل اسم العميل أولاً") : Exit Sub
If DateTimePicker1.Text = "" Then Mssg.OK("ادخل التاريخ أولاً") : Exit Sub
'الحصول على كود العميل بناء على اسمه وذلك من جدول العملاء
Dim Cus_id As Integer = 0
If ComboBox1.Text <> "< عميل افتراضي >" Then
Cmd.CommandText = "select [id] from [customers] where [nam] = '" & ComboBox1.Text & "'"
Cus_id = Cmd.ExecuteScalar
ElseIf ComboBox1.Text = "< عميل افتراضي >" Then
Cus_id = -1
Else
Mssg.OK("خطأ أثناء حفظ الفاتورة ، اعد المحاولة ..") : Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'اظهار رسالة لتاكيد الحفظ
If Mssg.YesNo("هل أنت متأكد ؟") = False Then Exit Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'كود حفظ بيانات الدفع الخاصة بالفاتورة وذلك بالتعديل في بيانات الفاتورة في الجدول الرئيسي
Dim data As String
data = "[tot]='" & TextBox12.Text & "'"
If RadioButton1.Checked Then
data += ",[pay_typ]='نقدى'"
data += ",[payed]='" & TextBox1.Text & "'"
ElseIf RadioButton2.Checked Then
data += ",[pay_typ]='اجل'"
data += ",[not_payed]='" & TextBox4.Text & "'"
ElseIf RadioButton3.Checked Then
data += ",[pay_typ]='نقدى واجل'"
data += ",[payed]='" & TextBox2.Text & "'"
data += ",[not_payed]='" & TextBox3.Text & "'"
End If
Cmd_execute.CommandText = "update [cbills] set " & data & " where [bill_id]=" & CInt(TextBox14.Text)
Dim N As Integer = Cmd_execute.ExecuteNonQuery()
If N < 1 Then Mssg.OK("حدث خطأ أثناء حفظ الفاتورة ..") : Exit Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'خطوة تعديل كمية الاصناف في المخزن
Cmd.CommandText = "select [itm_id],sum([qua]) from [sellMovement] group by [itm_id]"
Dr = Cmd.ExecuteReader
Do While Dr.Read
'الحصول على كمية الصنف
Cmd1.CommandText = "select [qua] from [items] where [id]=" & Dr(0)
Dim Qua As Integer = Cmd1.ExecuteScalar
Qua = Qua - CInt(Dr(1))
'تعديل كمية الصنف
Cmd_execute.CommandText = "update [items] set [qua]=" & Qua & " where [id]=" & Dr(0)
Cmd_execute.ExecuteNonQuery()
Loop
Dr.Close()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'لحفظ العمليات الخاصة بالفاتورة في الجدول الرئيسي للعمليات
Cmd_execute.CommandText = "insert into [sellmovements] select * from [sellmovement]"
Cmd_execute.ExecuteNonQuery()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'لحذف جميع العمليات في جدول العمليات المؤقت
Cmd_execute.CommandText = "delete * from [sellmovement]"
Cmd_execute.ExecuteNonQuery()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'افراغ محتويات الليست فيو
fillListView()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'تعديل ارصدة العملاء
Dim CusTot As Double
'للحصول على رصيد العميل صاحب الفاتورة
Cmd.CommandText = "select [bal] from [customers] where [id]=" & Cus_id
If IsDBNull(Cmd.ExecuteScalar) = False Then CusTot = Cmd.ExecuteScalar Else CusTot = 0.0
CusTot += CType(TextBox12.Text, Double)
Cmd_execute.CommandText = "update [customers] set [bal]=" & CusTot & " where [id]=" & Cus_id
Cmd_execute.ExecuteNonQuery()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'للتحكم في اظهار او اخفاء زر فاتورة جديدة وزر حفظ فاتورة
Cmd.CommandText = "select * from [sellmovement]"
Dr = Cmd.ExecuteReader
If Dr.HasRows Then
BtnSaveBill.Enabled = True
BtnNewBill.Enabled = True
Else
BtnSaveBill.Enabled = False
BtnNewBill.Enabled = False
End If
Dr.Close()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'لتعديل بيانات الشاشة التي تحذر من البضاعة الناقصة في المخزن
Cmd.CommandText = "select [nam],[qua] from [items] where [qua] < [lmt]"
Dr = Cmd.ExecuteReader
If Dr.HasRows Then
Dr.Close()
If Notes.Handle Then Notes.Close()
Notes.MdiParent = Form1
Notes.Show()
Notes.SendToBack()
End If
Dr.Close()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Mssg.OK("تم حفظ الفاتورة بنجاح ..")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'لطباعة فاتورة البيع
Dim TB As New DataTable
Cmd.CommandText = "drop view ViwSellBill"
Cmd.ExecuteNonQuery()
Cmd.CommandText = "create view ViwSellBill as SELECT [itm_nam],[qua],[prc],[disctype],[disc],[tot_disc],[tot] FROM [sellMovements] WHERE [bill_id]=" & CInt(TextBox14.Text)
Cmd.ExecuteNonQuery()
Dim rep As New RepSellBill
Dim tbl As Table
tbl = rep.Database.Tables("ViwSellBill")
tbl.Location = Application.StartupPath & "\accountManager.mdb"
'لعرض اسم الموظف
Dim EmpNam As TextObject
EmpNam = rep.Section4.ReportObjects("text11")
EmpNam.Text = Current_Emp_Name
'لعرض اسم العميل
Dim CusNam As TextObject
CusNam = rep.Section2.ReportObjects("text15")
CusNam.Text = ComboBox1.Text
'لعرض رقم فاتورة البيع
Dim BillId As TextObject
BillId = rep.Section2.ReportObjects("text16")
BillId.Text = TextBox14.Text
'لعرض بيانات الشركة في الفاتورة
Cmd.CommandText = "select [company_name],[field],[tax_num],[tele],[address] from [main_info]"
Dr = Cmd.ExecuteReader
Dr.Read()
Dim CompNam As TextObject 'لعرض اسم الشركة
CompNam = rep.Section2.ReportObjects("text18")
CompNam.Text = Dr(0)
Dim Compfld As TextObject 'لعرض نشاط الشركة
Compfld = rep.Section2.ReportObjects("text19")
Compfld.Text = Dr(1)
Dim CompST As TextObject 'لعرض السجل التجاري للشركة
CompST = rep.Section2.ReportObjects("text17")
CompST.Text = Dr(2)
Dim CompTel As TextObject 'لعرض تليفون الشركة
CompTel = rep.Section2.ReportObjects("text22")
CompTel.Text = Dr(3)
Dim CompAdd As TextObject 'لعرض عنوان الشركة
CompAdd = rep.Section2.ReportObjects("text23")
CompAdd.Text = Dr(4)
Dr.Close()
RepViewer.CrystalReportViewer1.ReportSource = rep
RepViewer.CrystalReportViewer1.RefreshReport()
RepViewer.ShowDialog()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'لعرض شاشة القبض بناء على بيانات الفاتورة
If RadioButton1.Checked Then
VarType = "عميل"
VarMasterNam = ComboBox1.Text()
VarValue = TextBox12.Text
VarDet = "مقابل صرف بضاعة من المخازن"
Abd.ShowDialog()
ElseIf RadioButton3.Checked Then
VarType = "عميل"
VarMasterNam = ComboBox1.Text()
VarValue = TextBox2.Text
VarDet = "مقابل صرف بضاعة من المخازن"
Abd.ShowDialog()
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'لتفريغ بيانات الفاتورة الرئيسية من على الشاشة
'اسم العميل وتاريخ الفاتورة وبيانات الدفع
ComboBox1.Text = ""
DateTimePicker1.Value = Now.Date
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'اتاحة بيانات الدفع للتعديل فيها
RadioButton1.Enabled = True
RadioButton2.Enabled = True
RadioButton3.Enabled = True
RadioButton1.Checked = True
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'عرض اجمالي قيمة الفاتورة في المكان المخصص لذلك
TextBox12.Text = "0"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
TextBox14.Clear()