تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] معالجة مشكل طباعة الفاتورة دون حفضها
#1
السلام عليكم

في برنامج  فاتورة مطعم أقوم بتتابع

1- طبع الفاتورة في ورقة من خلال داتاغريد
2- نقص كمية المنتوجات من قاعدة البيانات
3- حفض رأس الفاتورة
4- حفض منتوجات الفاتورة
5- إفراغ الداتاغريد


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

جزاكم الله خيرا

لا أريد طباعة الورقة إذا لم يتم حفضها في القاعدة
الرد }}}
تم الشكر بواسطة:
#2
قبل الطباعة اعمل استعلام برقم الفاتورة إذا الرقم موجود قم بالطباعة او الغي امر الطباعة .
يا رحمن الدنيا والآخرة ورحيمهما
الرد }}}
تم الشكر بواسطة: sniperjawadino , عبد العزيز البسكري , elgokr , elgokr
#3
شكرا أخي

لكني من باب سرعة البرنامج
أقوم بالطباعة قبل حفض الفاتورة 
كما وضحت في التسلسل

كما أنه كيف أعرف رقم الفاتورة و هي لم تحفض في القاعدة 
فهناك عدة عملاء يحفضون في القاعدة في نفس الوقت و أخاف أن يقع أي تعارض

----------------

لو تكرمت أخي و تضع لي كود TRANSACTION هنا 
سأكن شاااكرا لك



كود :
   
       Using cmd As New OleDbCommand("UPDATE ", cn)
           cmd.ExecuteNonQuery()
       End Using

       Using cmd As New OleDbCommand("INSERT ", cn)
           cmd.ExecuteNonQuery()
       End Using

       Using cmd As New OleDbCommand("Delete ", cn)
           cmd.ExecuteNonQuery()
       End Using
الرد }}}
تم الشكر بواسطة: elgokr
#4
كل الامر انك بحاجة لعمل كود تحقق وليكن كاستعلام لجلب قيمة واحدة مثلاً كالتالى لو بتستخدم Sql

كود :
sql select top 1 id from aaa

الاستعلام صغير وخفيفة ومش هياخد ولا هيسبب اى تاخر فى الطباعة
وبحيث اذا كان الاستعلام جلب نتيجة الـ ID اى كانت رقمها يتم الطباعة واعتماد الاضافة بعد الطباعة
بكده تكون تم تجنب مشكلة الطباعة وعدم تمكنه بالاتصال بقاعدة البيانات
الرد }}}
تم الشكر بواسطة: sniperjawadino , elgokr , elgokr
#5
انت بتقول "لا أريد طباعة الورقة إذا لم يتم حفضها في القاعدة "

بعد الحفظ يتم جلب رقم الفاتورة مباشرة ،،

ثم طباعة الفاتورة في حال جلب رقم الفاتورة .

هذا مثال لحفظ سجل في قاعدة بيانات اكسس وجلب ID للسجل نفسه ،، يمكنك التحقق من القيمة وتنفيذ امر بعد التحقق .

كود :
Dim connect As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
   "Data Source=|DataDirectory|\Database1.accdb;Persist Security Info=True;"

متغير يحمل قيمة الترقيم التلقائي    Dim ID As Integer

Using conn As New OleDbConnection(connect)
 Using cmd As New SqlCommand("insert Into Categories (CategoryName) Values (@CategoryName)", conn)
   cmd.Parameters.AddWithValue("@CategoryName", Category.Text)
   conn.Open()
   cmd.ExecuteNonquery()
   cmd.Commandtext="select @@Identity"
   ID = cmd.ExecuteScalar()

MsgBox(ID)

If ID <> "" or ID <> Nothing then
ضع كود الطباعة هنا سواء بإستعلام برقم الآيدي أو من الداتاقريدفيو كما عملت انت
End If

   conn.close()
 End Using
End Using
يا رحمن الدنيا والآخرة ورحيمهما
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , sniperjawadino , elgokr
#6
(06-10-19, 06:52 PM)kiki كتب :
كود :
sql select top 1 id from aaa


شكرا لك أخي KIKI  سأحاول إستخدام الفكرة
جزاك الله كل خير

(06-10-19, 09:13 PM)حريف برمجة كتب : حريف برمجة
كود :
Dim connect As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
   "Data Source=|DataDirectory|\Database1.accdb;Persist Security Info=True;"

متغير يحمل قيمة الترقيم التلقائي    Dim ID As Integer

Using conn As New OleDbConnection(connect)
 Using cmd As New SqlCommand("insert Into Categories (CategoryName) Values (@CategoryName)", conn)
   cmd.Parameters.AddWithValue("@CategoryName", Category.Text)
   conn.Open()
   cmd.ExecuteNonquery()
   cmd.Commandtext="select @@Identity"
   ID = cmd.ExecuteScalar()

MsgBox(ID)

If ID <> "" or ID <> Nothing then
ضع كود الطباعة هنا سواء بإستعلام برقم الآيدي أو من الداتاقريدفيو كما عملت انت
End If

   conn.close()
 End Using
End Using


نعم أخي حريف برمجة فهمت الفكرة
سأحاول تطوير هذه الطريقة 
شكرا كثيرا و جزاك الله على تعبك
الرد }}}
تم الشكر بواسطة: elgokr , elgokr



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


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