منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : خطأ ارجو المتابعة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كل عام وانتم بخير

فى كود الحفظ والاضافه يظهر لى خذا الخطأ وراجعت كل شئ فلم اجدد سببا لذلك

والصور توضح الكود وحقول الجدول والخطأ

























جرب بدل ال varchar بـ Nvarchar اذا كنت تستخدم اللغلة العربية.

أو قم بتدخيل عمود عمود و اتبع اي عمود بة المشكلة
غيرت حقل PRO_CODE_ الى نص بدلا من رقم حفظ ولكن لم يحفظ بيانات فى القاعده الا EZN_CODE , EZN_DATE وباقى البيانات فارغه
(03-08-20, 04:34 AM)خالد كامل1 كتب : [ -> ]غيرت حقل PRO_CODE_ الى نص بدلا من رقم حفظ ولكن لم يحفظ بيانات فى القاعده الا EZN_CODE , EZN_DATE وباقى البيانات فارغه

أخى خالد ضع نسخة منم البرنامج مع قاعدة البيانات لمراجعته لأن الموضوع نظريا غير ممكنالفصل فيه
السلام عليكم ورحمة الله وبركاته اخي العزيز لقد جربت بنفس الاسماء ونفس نوع الحقول وتم الحفظ للعلم اخي العزيز ان الرقم لا يقبل اكثر من 10 ارقام ولا اعلم اذا هناك طريقه جعله يقبل الشي الثاني ezn_code يجب ان لا يتكرر ويمكنك استخدام جلب اكبر رقم او تقوم بجعل الحقل ترقيم تلقائي من داخل قاعدة البيانات وتحذفه من مكان كود الحفظ وهذا والله ولي التوفيق واتمنى ان تكون المعلومه وصلت

كود :
    Dim Cmd As New OleDbCommand
       With Cmd
           .Connection = con
           .CommandType = CommandType.Text
           .CommandText = "Insert Into ozenat ( ezn_code,ezn_date,reson_,pro_code_,pro_name_,qty_,user_name)values(@ezn_code,@ezn_date,@reson_,@pro_code_,@pro_name_,@qty_,@user_name)"
           .Parameters.Clear()
           .Parameters.AddWithValue("@ezn_code", ezn_code.Text)
           .Parameters.AddWithValue("@ezn_date", ezn_date.Value)
           .Parameters.AddWithValue("@reson_", reson_.Text)
           .Parameters.AddWithValue("@pro_code_", pro_code_.Text)
           .Parameters.AddWithValue("@pro_name_", pro_name_.text)
           .Parameters.AddWithValue("@qty_", qty_.Text)
           .Parameters.AddWithValue("@user_name", user_name.Text)
       End With
       If con.State = 1 Then con.Close()
       con.Open()
       Cmd.ExecuteNonQuery()
       con.Close()
       MsgBox("تم إضافة السجل بنجاح", MsgBoxStyle.Information, "حفظ")
       Cmd = Nothing

[attachment=25349]
[attachment=25374]

السلام عليكم ورحمة الله وبركاته 
اخي خالد يبدو ان هناك خللا ما حاولت البحث عن اي شيئ يمكن ان يكون هو السبب من خلال الصور والكود الموضوع
عملت لك مثال بسيط بنفس الحقول وهو يعمل عند بدون اي مشكلة جربه عندك
(03-08-20, 07:15 AM)alshandodi كتب : [ -> ]السلام عليكم ورحمة الله وبركاته اخي العزيز لقد جربت بنفس الاسماء ونفس نوع الحقول وتم الحفظ للعلم اخي العزيز ان الرقم لا يقبل اكثر من 10 ارقام ولا اعلم اذا هناك طريقه جعله يقبل الشي الثاني ezn_code يجب ان لا يتكرر ويمكنك استخدام جلب اكبر رقم او تقوم بجعل الحقل ترقيم تلقائي من داخل قاعدة البيانات وتحذفه من مكان كود الحفظ وهذا والله ولي التوفيق واتمنى ان تكون المعلومه وصلت

كود :
    Dim Cmd As New OleDbCommand
       With Cmd
           .Connection = con
           .CommandType = CommandType.Text
           .CommandText = "Insert Into ozenat ( ezn_code,ezn_date,reson_,pro_code_,pro_name_,qty_,user_name)values(@ezn_code,@ezn_date,@reson_,@pro_code_,@pro_name_,@qty_,@user_name)"
           .Parameters.Clear()
           .Parameters.AddWithValue("@ezn_code", ezn_code.Text)
           .Parameters.AddWithValue("@ezn_date", ezn_date.Value)
           .Parameters.AddWithValue("@reson_", reson_.Text)
           .Parameters.AddWithValue("@pro_code_", pro_code_.Text)
           .Parameters.AddWithValue("@pro_name_", pro_name_.text)
           .Parameters.AddWithValue("@qty_", qty_.Text)
           .Parameters.AddWithValue("@user_name", user_name.Text)
       End With
       If con.State = 1 Then con.Close()
       con.Open()
       Cmd.ExecuteNonQuery()
       con.Close()
       MsgBox("تم إضافة السجل بنجاح", MsgBoxStyle.Information, "حفظ")
       Cmd = Nothing

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

(03-08-20, 04:24 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة الله وبركاته 
اخي خالد يبدو ان هناك خللا ما حاولت البحث عن اي شيئ يمكن ان يكون هو السبب من خلال الصور والكود الموضوع
عملت لك مثال بسيط بنفس الحقول وهو يعمل عند بدون اي مشكلة جربه عندك

اخى ابراهيم اشكرك كثيرا كثيرا على سرعه التجاوب مع سءوالى وتلك عادتك الدائمه المساعده و\باسرع وقت ممكن 
ولى طلب اخر قد طلبته من اخى   alshandodi       
اشكرك على تعبك معى اخى الكريم ولكنى اتساءل ما هو افضل كود للترقيم التلقائى بحيث يبحث عن اكبر رقم ويضف الرقم الذى يليه وكذلك يبحث عن جميع لارقام بالترتيب وان وجد رقما فى الترتيب ناقص يضعه فى غعمليه اضافه جديده

(03-08-20, 07:15 AM)alshandodi كتب : [ -> ]السلام عليكم ورحمة الله وبركاته اخي العزيز لقد جربت بنفس الاسماء ونفس نوع الحقول وتم الحفظ للعلم اخي العزيز ان الرقم لا يقبل اكثر من 10 ارقام ولا اعلم اذا هناك طريقه جعله يقبل الشي الثاني ezn_code يجب ان لا يتكرر ويمكنك استخدام جلب اكبر رقم او تقوم بجعل الحقل ترقيم تلقائي من داخل قاعدة البيانات وتحذفه من مكان كود الحفظ وهذا والله ولي التوفيق واتمنى ان تكون المعلومه وصلت

كود :
    Dim Cmd As New OleDbCommand
       With Cmd
           .Connection = con
           .CommandType = CommandType.Text
           .CommandText = "Insert Into ozenat ( ezn_code,ezn_date,reson_,pro_code_,pro_name_,qty_,user_name)values(@ezn_code,@ezn_date,@reson_,@pro_code_,@pro_name_,@qty_,@user_name)"
           .Parameters.Clear()
           .Parameters.AddWithValue("@ezn_code", ezn_code.Text)
           .Parameters.AddWithValue("@ezn_date", ezn_date.Value)
           .Parameters.AddWithValue("@reson_", reson_.Text)
           .Parameters.AddWithValue("@pro_code_", pro_code_.Text)
           .Parameters.AddWithValue("@pro_name_", pro_name_.text)
           .Parameters.AddWithValue("@qty_", qty_.Text)
           .Parameters.AddWithValue("@user_name", user_name.Text)
       End With
       If con.State = 1 Then con.Close()
       con.Open()
       Cmd.ExecuteNonQuery()
       con.Close()
       MsgBox("تم إضافة السجل بنجاح", MsgBoxStyle.Information, "حفظ")
       Cmd = Nothing
نفس الخلل اخى الكريم
وعند ياسر استعملت loop على الداتا جريد فيو ظبط معى ولكنى مش مستريح اريد ان اعرف السبب لماذا لم يتم الاضافه فى الكود الاول
السلام عليكم
اخي ضع نسخة من البرنامج وقاعدة البيانات ليتسنى لجميع الاخوة في تفحص الكود والمساعدة افضل
تحياتي لك
السلام عليكم اخي خالد
من اجل الفانكشن الذي يجلب اكبر قيمة من حقل الاي دي ويضيف لها 1 
اولا عد الى قاعدة البيانات حيث تصميم الجدول قم بازالة Primary key عن حقل الاي دي ان كان موجود ثم غير نوع الحقل من AutoNumber الى Number ثم اعد Primary key اليه 
واكتب هذا الفنكشن لجلب رقم الاي دي
كود :
Public Function MaxID_ozenat() As DataTable
       Dim Query As String = "Select IIF(MAX(ezn_ID) IS Null,1,MAX(ezn_ID)+1) From ozenat"
       Dim Cmd As New OleDbCommand()
       Dim dt As New dataTable()
       dt.Clear()
       Cmd = New OleDbCommand(Query, Con)
       Dim da As New OleDbDataAdapter(Cmd)
       da.Fill(dt)
       Return (dt)
   End Function
الان لكي نستخدمه يجب عند الضغط على زر جديد الذي يقوم بتفريغ كل الحقول وحقل الاي دي سيضع فيه القيمة العائدة من الفنكشن

اكتب هذا الصب لتفريغ الادوات
كود :
Public Sub Cleardata_ozenat()
       Txt_ezn_ID.Text = ""
       Txt_ezn_code.Text = ""
       Dtp_ezn_date.Value = Now.ToString("dd/MM/yyyy")
       Txt__reson.Text = ""
       Txt__pro_code.Text = ""
       Txt__pro_name.Text = ""
       Txt__qty.Text = ""
       Txt__user_name.Text = ""
       Txt_ezn_code.focus()
       Txt_ezn_ID.Text = MaxId_ozenat.Rows(0)(0)
   End Sub
الان في زر جديد استدعي صب تفريغ الادوات
كود :
Cleardata_ozenat()
وبالتوفيق
ملاحظة: بعد عمل ماسبق يجب الانتباه الى جملة الحفظ واضافة حقل الايدي في جملة الحفظ مع الباراميتر لاننا في السابق عندما كان حقل الاي دي ترقيم تلقائي
كانت مهمة اضافة الترقيم من مهام قاعدة البيانات نفسها
أشكر الاستاذ ابراهيم وجميع الاساتذه في هذا المنتدى الغالي 
اخي العزيز خالد لو كان لديك دفتر فواتير واردت ازالة فاتورة هل ستطبع من جديد نفس الفاتوره فالافضل اينما الرقم يصل يكمل المشوار من وجهة نظري 
فلا علم لي  ما هو الكود المناسب