تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] الشرح المتكامل لطريقة عمل فاتورة مبيعات وطباعتها
#5
بسم الله وعلى بركة الله نبدأ مرحلة حفظ الفاتورة
الآن وبعد تطبيق كل الخطوات السابقة أصبحت كل خلايا جداول قاعدة البيانات يقابلها بيانات موجودة علي الفورم بقى فقط تخزينها من البرنامج لقاعدة البيانات وهنا سأعتمد على أنني سأقوم بعمل SUB  حفظ خاص لكل جدول وترتيبهم داخل اجراء مفتاح الحفظ
نبدأ بالجدول الأول جدول رأس الفاتورة نقوم بإنشاء Sub جديد ونسميه SUB saveHeader     ويكون الكود كالتالي

PHP كود :
Try
Dim Header As New DAL
Dim Bill_Date 
As Date CDate(DateTimePicker1.Text).ToString("yyyy/MM/dd")
Dim TottalBill As Double Val(DGVsum.Text) - Val(txtDisc.Text)
Header.Editdata("insert into tbl_Header (CustomerName,OutDate,BillTottal) Values ('" txtCust.Text "' ,'" Bill_Date "' ,'" TottalBill "' ) ")
Catch 
ex As Exception
MsgBox
(ex.Message)

End Try 

حفظ جدول TblPay  كود :
PHP كود :
Sub Save_TblPay()
 
      Dim Bill_Date As Date CDate(DateTimePicker1.Text).ToString("yyyy/MM/dd")

 
      Dim TblPaySave As New DAL
       TblPaySave
.Editdata("insert into TblPay (HeaderID,Paid,PaidFrom,PaidDate) Values ('" txtBillNo.Text "' ,'" txtPay.Text "' ,'" txtCust.Text "' ,'" Bill_Date "' ) ")

 
  End Sub 

الآن حفظ الأصناف المباعة
نقوم بعمل حلقة تكرار من صفر وحتي نهاية صفوف الداتا جريد فيو وهنا يمكننا حفظ رقم الفاتورة اما بمربع رقم الفاتورة أو بالصف المخفي من الداتا جريد فيو
يكون الكود بالشكل التالي
PHP كود :
Sub Save_TblProducts()
 
      Try
 
          Dim cmd As New DAL
           
For As Integer 0 To DataGridView1.Rows.Count 1
               cmd
.Editdata("insert into TblProducts ( HeaderID , ProductsName , ProductsCount , ProductsPrice , ProductsTottal ) VALUES ('" txtBillNo.Text "' , '" DataGridView1.Rows(I).Cells(0).Value "' , '" DataGridView1.Rows(I).Cells(1).Value "' , '" DataGridView1.Rows(I).Cells(2).Value "' , '" DataGridView1.Rows(I).Cells(3).Value "' )")
 
          Next
       
Catch ex As Exception
           MsgBox
(ex.Message16"خطأ")
 
      End Try
 
  End Sub 


والآن بعد كتابة جميع الأكواد لمفتاح الحفظ نضعها في حدث Button1_Click ونراعي الترتيب حيث ((( لابد ))) من وضع SUB حفظ رأس الجدول اولاً لأن باقي الجداول مرتبطة به برقم الفاتورة ويكون الكود كالتالي :

PHP كود :
Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
       SaveHeader
()
 
      Save_TblProducts()
 
      Save_TblPay()
 
      MessageBox.Show("تم حفظ الفاتورة بنجاح ""تم"MessageBoxButtons.OKMessageBoxIcon.Asterisk)
 
  End Sub 




وهكذا نكون انتهينا من 80% من العمل وتم حفظ الفاتورة بنجاح في قاعدة البيانات ويتبقي لنا عمل تقرير البيع وطباعته
للحوار بقية ...... Big Grin
ولا تنسوني ووالدتي ( رحمها الله )  بصالح الدعاء
دمتم بخير

السلام عليكم ورحمة الله وبركاته
مشكلة المشاكل بالنسبة لي على الأقل وأكبر معضلة واجهتني في عمل برنامجي هي عمل تقرير للطباعة  وأعتقد انه أقل المواضيع شرحاً بشكل عملي لسبب وحيد أننا نستخدم طريقة الكود في الاتصال بقاعدة البيانات وأغلب شروحات التقارير تستخدم الاتصال بالداتا ست عن طريق المعالج  ما يسبب ( لخبطة ) لأغلب المستخدمين
وبعد التنقل ما بين الريبورت والكريستال ريبوت عشرات المرات استقريت علي الريبورت لأنه أفضل من ناحية أنني لن احتاج لأي إضافات أقوم بتنزيلها علي أجهزة العملاء وبعد مئات المحاولات الفاشلة استطعت أن أقوم بعمل التقرير بطريقة ( قد تكون قديمة ) ولكنها جاءت نتيجة العديد من المحاولات لكنني قررت أن أقوم بشرحها لعل غيري يستفيد ...
نبدأ على بركة الله
الآن نتوجه إلى قاعدة البيانات ونقوم بفتح برنامج الأكسس ومن قائمة إنشاء نقوم بعمل استعلام  في وضع التصميم وإضافة الثلاث جداول ونقوم بإضافة جميع الخلايا التي نريدها في الاستعلام  مع مراعاة أن أول خلية يتم اختيارها هي HeaderID



ونقوم بحفظ الاستعلام بأسم Report_Print

الآن نتوجة الي الفيجوال بيسك ومن قائمة Project    نختار Add new Item    ومنها نختار Dataset  



ثم نضغط كليك يمين ونختار  Add Data Table



ونقوم بتغيير اسم الجدول إلى اي أسم نشاء  ونضيف إليه خلايا بعدد خلايا الاستعلام الذي قمنا بإنشائه سابقا ونسمي الخلايا بنفس أسماء خلايا الاستعلام  
ليصبح الشكل النهائي للجدول كالآتي




الآن من ومن قائمة Project    نختار Add new Item    ومنها نختار Report



سيفتح أمامنا تقرير فارغ من قائمة أدوات التقرير يمكننا سحب الأدوات التي تتناسب مع التقرير لكن أهم أداة هي الجدول سنقوم بسحب جدول من قائمة أدوات التقرير ووضعه بمنتصف منطقة التصميم عند إفلات الجدول ستظهر رسالة بتحديد نوع الاتصال بقاعدة البيانات سنختار Dataset1 التي قمنا بإنشائها ومنها نختار الجدول الذي قمنا بتصميمه
كما في الصورة



الآن يمكننا وضع باقي الأدوات وإضافة أعمدة للجدول حسب ما نريد ليصبح الشكل كالتالي :



إلى هنا انتهينا من تصميم التقرير بقي تحديد الخلايا على التقرير وما يقابلها من الداتا ست وهناك طريقتين لعمل ذلك
الطريقة الأولى عن طريق فتح قائمة  View  ومنها إختيار   report data لتظهر لنا قائمة الخلايا المتاح اضافتها للتقرير ويمكننا اختيار داتا ست 1 وسحب الخلية وافلاتها علي مايقابلها في التقرير
الطريقة الثانية عن طريق الضغط علي مربع النص المراد تحديد قيمة له والضغط بمفتاح الفأرة الأيمن واختيار Expression  ومن القائمة اليسرى نختار Dataset   ومنها نقوم باختيار الخلية المقابلة لها في القيمة ونكرر ذلك مع باقي مربعات النص

الآن يبتبقي لنا تحديد خلايا الجدول وهي عن طريق النقر داخل خلية الجدول ليظهر لنا مربع تحديد القيمة ونختار منها قيمة كل خلية وما يقابلها في البيانات
أما آخر خلية وهي غير موجودة في قاعدة البيانات أصلا هي مربع نص المبلغ المتبقي وهي رقم محسوب لم اشاء أن أضعه في قاعدة البيانات ويمكننا هنا أن نضع له كود عن طريق والضغط بمفتاح الفأرة الأيمن واختيار Expression    وكتابة الكود التالي :
=First(Fields!BillTottal.Value, "DataSet1")-First(Fields!Paid.Value, "DataSet1")




ليصبح الشكل النهائي كما يلي



الآن اقتربنا على الانتهاء تبقي لنا إضافة فورم جديد ووضع أداة  ReportViewer عليه واختيار التقرير الذي قمنا بإنشائه
مع ملاحظة أنه بمجرد اختيار التقرير سيتم إضافة Dataset1  ,   SalahDTBindingSource    اوتوماتيكيا للتقرير



نغلق هذا الفورم ونعود الي اول فورم قمنا بتصميمه الخاص بالفاتورة في حدث الضغط علي مفتاح الحفظ نريد الآن ان يقوم بالطباعه بمجرد الانتهاء من الحفظ

نذهب الي حدث Button1_Click  
الأمر ببساطة الان نحن نمتلك داتا ست بها جدول قمنا بتصميمه غير مرتبط ولا يحتوي علي اي بيانات هذا الجدول هو مصدر بيانات التقرير لذلك إن استطعنا ملئ الجدول بالبيانات ستعرض علي التقرير بسهولة
نقوم أولا باضافة جملة اتصال جديدة وجلب مكتبات داتا لاننا سنقوم بتعبئة الجدول عن طريق داتا ادابتر
ثم نذهب الي الأكسس ونقوم بفتح الاستعلام في وضع SQL  وننسخ الكود الموجود به ثم نضعه في جملة الاستعلام بوضع شرط كالتالي
اولا نقوم بتعريف متغير جديد كالتالي
           Dim NO As String = Val(txtBillNo.Text)
ثم الكود :
PHP كود :
          Dim DA As New OleDbDataAdapter("SELECT tbl_Header.HeaderID, tbl_Header.CustomerName, tbl_Header.OutDate, tbl_Header.BillTottal, TblPay.Paid, TblProducts.ProductsName, TblProducts.ProductsCount, TblProducts.ProductsPrice, TblProducts.ProductsTottal FROM (tbl_Header INNER JOIN TblPay ON tbl_Header.HeaderID=TblPay.HeaderID) INNER JOIN TblProducts ON tbl_Header.HeaderID=TblProducts.HeaderID WHERE (((tbl_Header.HeaderID)= " NO " ));"Con

الان نحن نملك داتا ادابتر DA  وتم تخزين جميع البيانات به الان نقوم بتعبئة الداتا ست بالبيانات كالتالي
PHP كود :
          DA.Fill(frm_Print.DataSet1"SalahDT"

ونقوم بامر فتح الفورم الذي يحتوي علي عارض التقارير
PHP كود :
          frm_Print.Show() 


ليكون الكود النهائي كالتالي

PHP كود :
Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
       SaveHeader
()
 
      Save_TblProducts()
 
      Save_TblPay()
 
      Try
 
          Dim NO As String Val(txtBillNo.Text)
 
          Dim DA As New OleDbDataAdapter("SELECT tbl_Header.HeaderID, tbl_Header.CustomerName, tbl_Header.OutDate, tbl_Header.BillTottal, TblPay.Paid, TblProducts.ProductsName, TblProducts.ProductsCount, TblProducts.ProductsPrice, TblProducts.ProductsTottal FROM (tbl_Header INNER JOIN TblPay ON tbl_Header.HeaderID=TblPay.HeaderID) INNER JOIN TblProducts ON tbl_Header.HeaderID=TblProducts.HeaderID WHERE (((tbl_Header.HeaderID)= " NO " ));"Con)
 
          DA.Fill(frm_Print.DataSet1"SalahDT")
 
          frm_Print.Show()
 
      Catch ex As Exception
           MsgBox
(ex.Message)
 
      End Try
 
      MessageBox.Show("تم حفظ الفاتورة بنجاح ""تم"MessageBoxButtons.OKMessageBoxIcon.Asterisk)
 
  End Sub 


 والآن مع الصور




التقرير في وضع المعاينة



صورة مقربة للتقرير



وهكذا نكون انتهينا من عمل فاتورة مبيعات وربطها بداتا ست وحفظها في قاعدة البيانات وطباعتها
لاتنسونا بصالح الدعاء
دمتم بخير
الرد }}}


الردود في هذا الموضوع
RE: الشرح المتكامل لطريقة عمل فاتورة مبيعات وطباعتها - بواسطة الفيومي116 - 24-03-15, 10:02 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تصميم فاتورة مبيعات ومشتريات Abu Ehab 0 3,278 27-11-18, 11:27 AM
آخر رد: Abu Ehab
  مثال للعمليات علي قواعد البيانات مع الشرح mr_mgm 2 5,579 21-11-18, 04:20 AM
آخر رد: Ebrahim5556

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


يقوم بقرائة الموضوع: