الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في الحفظ في قاعدة بيانات أكسس

بدأه rafeek633 في 19 يناير 2011 · 3 رد · 1,434 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

قمت بانشاء برنامج بلغة 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()

#2

عليكم السلام

اخي قم بالتاشير على قاعدة البيانات لديك في النافذة Solution Explorer

ثم بعد التشير على قاعدة البيانات اظهر خصائص قاعدة البيانات

في خانة Copy to Output Directiory

اختر Do not Copy

C# حبيبتي

#3
رفيق الامل كتب:

عليكم السلام

اخي قم بالتاشير على قاعدة البيانات لديك في النافذة Solution Explorer

ثم بعد التشير على قاعدة البيانات اظهر خصائص قاعدة البيانات

في خانة Copy to Output Directiory

اختر Do not Copy

السلام عليكم

متشكر دا على ردك ولكني لم اضيف قاعدة البيانات الى المشروع ، انا اربطها بالمشروع من خلال الـ Connection الخاص بالادو دوت نت فقط

#4

اربط الكوماند بمكان الكونكشن

Cmd_execute.Connection = new OleDbConnection("provider=Microsoft.jet.OLEDB.4.0;Data Source =..\\..\\db.mdb");

C# حبيبتي

مواضيع مشابهة