السلام عليكم اخوانى الكرام
عندى فى شاشة العملاء حقل مخصص لرصيد العميل وعند استدعاء العميل فى شاشة الفاتورة وضعت تشيك بوكس لتحديد اذا كان العميل لة رصيد فيتم خصم الفاتورة من رصيدة المسجل لدية وذلك من خلال الضغط true على التشيك بوكس
وهذا هو الكود تم استدعائة فى زر الحفظ وقبل اجراء الحفظ وضعت الكود وعند الضغط لا تحصل معايا مشكلة ويتم حفظ الفاتورة ولكن لا يعمل اب ديت لرصيد العميل فى جدول العملاء
فارجو الايضاح والرد وشكرا لكم
كود :
Try
'===============================================================
If chkcustomerbalance.Checked = True Then
Dim balancenew2, invamo, cusbalan As Double
invamo = Val(InvoiceAmount.Text)
cusbalan = Val(CustomerBalanceBill.Text)
balancenew2 = invamo - cusbalan
If con.State = ConnectionState.Closed Then con.Open()
Dim cmd3 As New SqlCommand
cmd3.Connection = con
cmd3.CommandType = CommandType.Text
cmd3.CommandText = "UPDATE Customers SET CustomerBalance=@CustomerBalance WHERE CustomerName=@CustomerName"
cmd3.Parameters.AddWithValue("@CustomerBalance", balancenew2)
cmd3.Parameters.AddWithValue("@CustomerName", CustomerID.Text)
cmd3.ExecuteScalar()
con.Close()
End If
'===============================================================
Insert_Sales(InvoicID.Text, InvoicDate.Value, CustomerID.Text, InvoiceAmount.Text, ItemsNo.Text, EmpID.Text)
Insert_SalesDetails()
LoseQty()
Catch
Exit Sub
End Try
(26-02-19, 08:09 PM)mostafa nada كتب : [ -> ]يرجى الرد من فضلكم
اخي الفاضل موضوعك ليس كود تطلبه وتقوم بنسخة ولصقة وخلاص ..
موضوعك يجب ان تنتبه لأنه يحتوي على عمليتين وكلها مالية بمعنى ...
زيادة رصيد حساب + خصم رصيد حساب ؟
لنفرض ان عملية واحدة تمت بنجاح وقبل تنفيذ العملية الثانية حصل مثلاً إنقطاع الكهرباء او احد قام بفصل الكهرباء عن الجهاز أو أي سبب آخر ..
هنا تحصل كارثة ..
الأفضل في هذه العملية ،، تستخدم (transaction)
أقرأ هنا عن الموضوع
(26-02-19, 09:11 PM)حريف برمجة كتب : [ -> ] (26-02-19, 08:09 PM)mostafa nada كتب : [ -> ]يرجى الرد من فضلكم
اخي الفاضل موضوعك ليس كود تطلبه وتقوم بنسخة ولصقة وخلاص ..
موضوعك يجب ان تنتبه لأنه يحتوي على عمليتين وكلها مالية بمعنى ...
زيادة رصيد حساب + خصم رصيد حساب ؟
لنفرض ان عملية واحدة تمت بنجاح وقبل تنفيذ العملية الثانية حصل مثلاً إنقطاع الكهرباء او احد قام بفصل الكهرباء عن الجهاز أو أي سبب آخر ..
هنا تحصل كارثة ..
الأفضل في هذه العملية ،، تستخدم (transaction)
أقرأ هنا عن الموضوع
اخى الفاضل انت للاسف لم يتضح لك الكود او انك مفهمتش انا اقصد اية
انا هنا فى الاول لا اتعامل فى الكود بفيزا او حولات بنكية من والى !
ثانيا انا هنا اعمل على تحديث فقط جدول العملاء وذلك عند الضغط على زر حفظ الفاتورة بشرط انا تم النقر على التشيك بوكس الخاص باذا كان العميل يرديد ان يخصم مبلغ الفاتورة من الرصيد الخاص بى فى العملاء
وعلى سبيل المثال : اذا كان هذا العميل هو فى حسابة مسبقاً 500 ج قام بدفعها مقدما بدون ان ياخذ بيها شى
وبعد كدة جه عمل فاتورة وثمن هذة الفاتورة هى 300ج وهنا عند حفظ الفاتورة موظف الكاشير او المحاسب يسأل العميل اذا كان يريد دفع الفاتورة وبدون خصم رصيدة الموجود مسبقا وهو ال 500ج ام لا اذا وافق فعند الضغط على True فى التشيك بوكس يخصم ال 300 ج من رصيد الموجود وهو ال 500 ج وبعد ذلك يتم عملية التحديث للمبلغ ويصبح 200ج !!!
اذا كان غير ذلك واراد العميل ان يدفع ثمن الفاتورة فيفضل رصيدة زى ماهو بدون خصم!!!
اتمنى ان تكون فهمتنى اخى الكريم وكل ما فى الموضوع هو اريد ان استعلم بان هذا الكود فى خطأ ام لا مع العلم ان هو بيتم حفظ الفاتورة وبدون اجراء التحديث الخاص بمبلغ العميل
اذا ارفقت مثال فقط للجزئية المطلوب تعديلها ،، ستجد الحل بشكل اسرع .
وعليكم السلام ورحمة الله وبركاته
مرحباً اخى mostafa nada
اولاً راجع معى كلاً من التالى
1- بخصوص هذا الجزء من الكود
كود :
UPDATE Customers SET CustomerBalance=@CustomerBalance WHERE CustomerName=@CustomerName
2- وايضاً هنا
كود :
cmd3.Parameters.AddWithValue("@CustomerName", CustomerID.Text)
ثانياً لماذا لم يتم تحديث رصيد العميل بالقيمة الجديدة
هل لاحظت فى الاسطر بالاعلى التى اشرت اليها
يتجد فى كود التحديث تستدعى العميل من خلال CustomerName
اى من خلال اسم العميل
بينما انت تقوم باعطاء قيمة اسم العميل من خلال CustomerID.Text
تماماً القيمة هى رقم العميل وليس اسم العميل
فلحل المشكلة كل ما عليك تحويل الاسطر المذكورة الى هذا النحو
كود :
UPDATE Customers SET CustomerBalance=@CustomerBalance WHERE CustomerID=@CustomerID
لا اعلم اذا كان كود العميل عبارة عن CustomerID ام انه ID فقط فقم بتغيير المسما طبقاً لما لديك
من ثم التالى
كود :
cmd3.Parameters.AddWithValue("@CustomerID", CustomerID.Text)
بكده ستكون قمت بحل المشكلة بامر الله
تحياتى لك
وتمنياتى لك التوفيق
(27-02-19, 03:47 AM)elgokr كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته
مرحباً اخى mostafa nada
اولاً راجع معى كلاً من التالى
1- بخصوص هذا الجزء من الكود
كود :
UPDATE Customers SET CustomerBalance=@CustomerBalance WHERE CustomerName=@CustomerName
2- وايضاً هنا
كود :
cmd3.Parameters.AddWithValue("@CustomerName", CustomerID.Text)
ثانياً لماذا لم يتم تحديث رصيد العميل بالقيمة الجديدة
هل لاحظت فى الاسطر بالاعلى التى اشرت اليها
يتجد فى كود التحديث تستدعى العميل من خلال CustomerName
اى من خلال اسم العميل
بينما انت تقوم باعطاء قيمة اسم العميل من خلال CustomerID.Text
تماماً القيمة هى رقم العميل وليس اسم العميل
فلحل المشكلة كل ما عليك تحويل الاسطر المذكورة الى هذا النحو
كود :
UPDATE Customers SET CustomerBalance=@CustomerBalance WHERE CustomerID=@CustomerID
لا اعلم اذا كان كود العميل عبارة عن CustomerID ام انه ID فقط فقم بتغيير المسما طبقاً لما لديك
من ثم التالى
كود :
cmd3.Parameters.AddWithValue("@CustomerID", CustomerID.Text)
بكده ستكون قمت بحل المشكلة بامر الله
تحياتى لك
وتمنياتى لك التوفيق
شكرا لك اخى الكريم بالفعل تم حل المشكلة .. جزاك الله كل خير على التوضيح والشرك وبارك الله فيك
(27-02-19, 02:34 AM)mostafa nada كتب : [ -> ] (26-02-19, 09:11 PM)حريف برمجة كتب : [ -> ] (26-02-19, 08:09 PM)mostafa nada كتب : [ -> ]يرجى الرد من فضلكم
اخي الفاضل موضوعك ليس كود تطلبه وتقوم بنسخة ولصقة وخلاص ..
موضوعك يجب ان تنتبه لأنه يحتوي على عمليتين وكلها مالية بمعنى ...
زيادة رصيد حساب + خصم رصيد حساب ؟
لنفرض ان عملية واحدة تمت بنجاح وقبل تنفيذ العملية الثانية حصل مثلاً إنقطاع الكهرباء او احد قام بفصل الكهرباء عن الجهاز أو أي سبب آخر ..
هنا تحصل كارثة ..
الأفضل في هذه العملية ،، تستخدم (transaction)
أقرأ هنا عن الموضوع
اخى الفاضل انت للاسف لم يتضح لك الكود او انك مفهمتش انا اقصد اية
انا هنا فى الاول لا اتعامل فى الكود بفيزا او حولات بنكية من والى !
ثانيا انا هنا اعمل على تحديث فقط جدول العملاء وذلك عند الضغط على زر حفظ الفاتورة بشرط انا تم النقر على التشيك بوكس الخاص باذا كان العميل يرديد ان يخصم مبلغ الفاتورة من الرصيد الخاص بى فى العملاء
وعلى سبيل المثال : اذا كان هذا العميل هو فى حسابة مسبقاً 500 ج قام بدفعها مقدما بدون ان ياخذ بيها شى
وبعد كدة جه عمل فاتورة وثمن هذة الفاتورة هى 300ج وهنا عند حفظ الفاتورة موظف الكاشير او المحاسب يسأل العميل اذا كان يريد دفع الفاتورة وبدون خصم رصيدة الموجود مسبقا وهو ال 500ج ام لا اذا وافق فعند الضغط على True فى التشيك بوكس يخصم ال 300 ج من رصيد الموجود وهو ال 500 ج وبعد ذلك يتم عملية التحديث للمبلغ ويصبح 200ج !!!
اذا كان غير ذلك واراد العميل ان يدفع ثمن الفاتورة فيفضل رصيدة زى ماهو بدون خصم!!!
اتمنى ان تكون فهمتنى اخى الكريم وكل ما فى الموضوع هو اريد ان استعلم بان هذا الكود فى خطأ ام لا مع العلم ان هو بيتم حفظ الفاتورة وبدون اجراء التحديث الخاص بمبلغ العميل
ممكن توضح يخصم 300 من أي حساب ؟
أيضا يضيف 300 إلى أي حساب ؟