تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ماذا يعني هذا الخطأ اثناء الحفظ
#1
عند الحفظ يأتي هذا الخطأ مع العلم اني نقلت الكود صحيح من الدورة أفيدوني بارك الله فيكم



لم أعرف حتى مكان الخطأ 

كود :
Try
           Dim Sql = "Select * From ReceiptOfltems Where VoucherCode=N'" & (VoucherCode.Text) & "'"
           Dim Adp As New SqlClient.SqlDataAdapter(Sql, SQLConn)
           Dim DS As New DataSet
           Adp.Fill(DS)
           Dim DT = DS.Tables(0)
           If DT.Rows.Count > 0 Then
               '******************************************************************************************************************************
               VoucherCode.Text = Format(GET_LAST_RECORD("ReceiptOfltems", "Voucherid") + 1, "ROF000000")
               SupplierlnVoiceCode.Text = GET_LAST_RECORD("ReceiptOfltems", "Voucherid") + 1
               '******************************************************************************************************************************
           Else
               Dim DR = DT.NewRow
               DR!VoucherCode = VoucherCode.Text
               DR!VoucherDate = VoucherDate.Value
               DR!SupplierCode = SupplierCode.Text
               DR!SupplierName = SupplierName.Text
               DR!SupplierlnVoiceCode = SupplierlnVoiceCode.Text
               DR!SupplierlnvoiceDate = SupplierlnvoiceDate.Value
               DR!SupplierInVoiceType = SupplierInVoiceType.Text
               DR!SalesTAX = Val(SalesTAX.Text)
               DR!Notes = Notes.Text
               DR!TotalQty = TotalQty.Text
               DR!TotalDiscount = Val(TotalDiscount.Text)
               DR!TotalVoucher = Val(TotalVoucher.Text)
               DR!TotalArabic = TotalArabic.Text
               DR!Status = True
               DT.Rows.Add(DR)
               Dim Cmd As New SqlClient.SqlCommandBuilder(Adp)
               Adp.Update(DT)
           End If

           BtnNew_Click(Nothing, Nothing)
           MsgBox(" تم حفظ سند التوريد فى قاعدة البيانات بنجاح", MsgBoxStyle.Information, "رسالة تأكيد")

       Catch ex As Exception
           MessageBox.Show(ex.Message, "فشل في الحفظ  ", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)

       End Try



كود :
Sub Showrecord(Vcode As String)

       DataGridView1.Rows.Clear()
       Dim Sql = "Select * From ReceiptOfltems Where VoucherCode=N'" & (Vcode) & "'"
               Dim Adp As New SqlClient.SqlDataAdapter(Sql, SQLConn)
       Dim DS As New DataSet
       Adp.Fill(DS)
       Dim DT = DS.Tables(0)
       If DT.Rows.Count = 0 Then
           MsgBox("عزيزى عفواً لم يتم العثور على السند يرجى التأكد من الرقم", MsgBoxStyle.Exclamation, "تنبيه")
       Else
           Dim DR = DT.Rows(0)

           VoucherCode.Text = CType((DR!VoucherCode), String)
           VoucherDate.Text = CType((DR!VoucherDate), String)
           SalesTAX.Text = CType((DR!SalesTAX), String)

           Notes.Text = CType((DR!Notes), String)

           SupplierCode.Text = CType((DR!SupplierCode), String)
           SupplierName.Text = CType((DR!SupplierName), String)
           SupplierInVoiceType.Text = CType((DR!SupplierInVoiceType), String)
           SupplierlnVoiceCode.Text = CType((DR!SupplierlnVoiceCode), String)
           SupplierlnvoiceDate.Text = CType((DR!SupplierlnvoiceDate), String)

           TotalQty.Text = CType((DR!TotalQty), String)

           TotalDiscount.Text = CType((DR!TotalDiscount), String)
           TotalVoucher.Text = CType((DR!TotalVoucher), String)
           TotalArabic.Text = CType((DR!TotalArabic), String)
           DR!Status = True

       End If
       Adp.Dispose()
       DS.Dispose()
       DT.Dispose()

   End Sub


الملفات المرفقة صورة/صور
   
------------------------
منكم أتعلم
------------------------

الرد
تم الشكر بواسطة:
#2
السلام عليكم...
قم بإزالة Try لنتعرف على مكان الخطأ ونقوم بمعالجته.
المبرمج لا يفكر في المشكلة بل في الحل!!
الرد
تم الشكر بواسطة: عبد العزيز البسكري , sofiane-phy
#3
عزيزي كما قال لك الاخ اسامه قم بحذف try كي نعرف مكان الخطا
الرد
#4
من رأيي كتجربة
قم بتغيير قيمة الحقل
TOTALARABIC
إلى
MAX
الرد
#5
https://stackoverflow.com/a/5591482

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

راجع قاعدة البيانات قد تكون معرف الاعمدة بنوع Nvarchar(50) مثلا اجعلها Nvarchar(MAX) هذا النوع مرن مع النصوص اي كان طولها

ايضا لاحظت انك تستخدم الطريقة الخطأ في تمرير المعلومات الى الاستعلام


كود :
Where VoucherCode=N'" & (VoucherCode.Text) & "'"

هذا مثال واضح للنقطة ضعف ال SqlInjection ، لابد من استخدام البرامترات رابجع موضوعي :

http://vb4arb.com/vb/showthread.php?tid=36486

ايضا لاحظت انك تستخدم Val في حساب قيم مالية وهو خطأ لاكثر من سبب اهمهم انه يعود بقيمة Double بينما يجب ان تكون معاملاتك المالية كلها ب Decimal ، وايضا خطأ لانه لا يعطيك اي دلالة اذا ما كان النص المدخل سليم ام لا

بدلا منها استخدم Decimal.TryParse :

http://vb4arb.com/vb/showthread.php?tid=36426
الرد
#6
(02-11-20, 04:55 PM)Anas Mahmoud كتب : https://stackoverflow.com/a/5591482

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

راجع قاعدة البيانات قد تكون معرف الاعمدة بنوع Nvarchar(50) مثلا اجعلها Nvarchar(MAX) هذا النوع مرن مع النصوص اي كان طولها

ايضا لاحظت انك تستخدم الطريقة الخطأ في تمرير المعلومات الى الاستعلام


كود :
Where VoucherCode=N'" & (VoucherCode.Text) & "'"

هذا مثال واضح للنقطة ضعف ال SqlInjection ، لابد من استخدام البرامترات رابجع موضوعي :

http://vb4arb.com/vb/showthread.php?tid=36486

ايضا لاحظت انك تستخدم Val في حساب قيم مالية وهو خطأ لاكثر من سبب اهمهم انه يعود بقيمة Double بينما يجب ان تكون معاملاتك المالية كلها ب Decimal ، وايضا خطأ لانه لا يعطيك اي دلالة اذا ما كان النص المدخل سليم ام لا

بدلا منها استخدم Decimal.TryParse :

http://vb4arb.com/vb/showthread.php?tid=36426

تم حل المشكل اصبت أخي Anas Mahmoud كان الخطأ في القيمة النصية جزاكم الله خيرا اخوتي اسامه الهرماوي ، Master Hacker ، عبد العزيز البسكري ، Anas Mahmoud
------------------------
منكم أتعلم
------------------------

الرد
تم الشكر بواسطة: اسامه الهرماوي


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  يتم الحفظ ولكن دون الترتيب بالرقم - كيف اجبره على الحفظ بالترتب ؟ a.amin 9 2,255 10-07-21, 12:54 PM
آخر رد: Lathe1
  اريد زر الحفظ هو نفس زر التعديل سمير جمال 6 1,436 06-07-21, 09:39 AM
آخر رد: strongriseman
  [سؤال] الحفظ و التعديل و الحذف داخل datagridview and databases Sql server mo.fathi 2 776 05-07-21, 04:28 PM
آخر رد: naserflaha71
  كيف تم عمل هذا ؟ هل هي اداة ام ماذا saudd4001 8 359 30-06-21, 10:40 PM
آخر رد: saudd4001
  طريقة حذف فورم اثناء تشغيل البرنامج Basil Abdallah 3 399 30-05-21, 12:58 AM
آخر رد: mrfenix93
  جمل الحفظ الخاصة بال commandbuilder لا تعمل الوضع المنفصل hany nabil3 1 191 17-05-21, 10:46 PM
آخر رد: عبد العزيز البسكري
  محتاج كود الحفظ وتعديل فى جدولين new_programer 3 389 28-04-21, 07:11 PM
آخر رد: new_programer
  الحفظ والتعديل مباشرة من الداتا جريد aftfm 1 407 06-04-21, 11:26 AM
آخر رد: عبد العزيز البسكري
  عدم القدرة على الحفظ داخل ملف MDF Owz 4 508 24-02-21, 06:27 PM
آخر رد: العتيق
  ما الخطأ في حفظ جدول إلى ملف نصي ahmedfa71 16 3,216 17-02-21, 09:23 PM
آخر رد: yaskonofdakla

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم