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


الملفات المرفقة
.rar   datagridvew.rar (الحجم : 87.75 ك ب / التحميلات : 10)
الرد
تم الشكر بواسطة:
#2
مرحباً اخى nourmandour

للاسف لا يمكننى التعديل على المشروع المرفق
واعادة ارساله لك بسبب اختلاف الاصدار

ولكن يمكنك تعديل على السورس لديك
بنائاً لما ساقوم بشرحه الان

تعال على كود الحفظ خاص الحدث Button2_Click
واستبدل كامل الكود بداخله بهذا الكود
كود :
       For i As Integer = 0 To dgrid.RowCount - 1
           Dim sql As String = "INSERT INTO fat_ba (id, numb, [date], sdad, amel, mgma, sanf, kmea, sar, agmale, mdfa) Values (@id, @numb, @date, @sdad, @amel, @mgma, @sanf, @kmea, @sar, @agmale, @mdfa)"
           Dim cm As New OleDb.OleDbCommand(sql, conn)
           Dim sdad As String = ""
           If RadioButton1.Checked = True Then
               sdad = "نقدي"
           ElseIf RadioButton2.Checked = True Then
               sdad = "اجلة"
           ElseIf RadioButton3.Checked = True Then
               sdad = "جزء نقضي"
           End If

           With cm.Parameters
               .AddWithValue("@id", TextBox1.Text).DbType = DbType.String
               .AddWithValue("@numb", dgrid.Rows(i).Cells(0).Value).DbType = DbType.Int32
               .AddWithValue("@date", TextBox2.Text).DbType = DbType.String
               .AddWithValue("@sdad", sdad).DbType = DbType.String
               .AddWithValue("@amel", ComboBox2.Text).DbType = DbType.String
               .AddWithValue("@mgma", dgrid.Rows(i).Cells(1).Value).DbType = DbType.String
               .AddWithValue("@sanf", dgrid.Rows(i).Cells(2).Value).DbType = DbType.String
               .AddWithValue("@kmea", dgrid.Rows(i).Cells(3).Value).DbType = DbType.Int32
               .AddWithValue("@sar", dgrid.Rows(i).Cells(4).Value).DbType = DbType.Currency
               .AddWithValue("@agmale", dgrid.Rows(i).Cells(5).Value).DbType = DbType.Currency
               .AddWithValue("@mdfa", 0).DbType = DbType.Currency
           End With

           If (conn.State = ConnectionState.Open) Then conn.Close()
           conn.Open()
           cm.ExecuteNonQuery()
           conn.Close()
       Next
       MsgBox("تم الحفظ")

قم بفتح شاشة mdconn
واستبدل كامل الكود بها بهذا الكود
كود :
Imports System.Data.OleDb

Module mdconn
   Public conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\data_1.mdb;user id=admin;jet oledb:database password=123")
End Module

بالنهاية لا تنسي ان تجعل السورس يعمل على بيئة 32Bit
من الواضح ان جهازك يعمل على بيئة 32Bit
لذلك لم يحدث معك اى مشكلة ولكن عند اختبار البرنامج
على جهاز من بيئة 64Bit فلا يمكنك تشغيل البرنامج لذلك حرصاً اجعل
البرنامج على بيئة 32Bit

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: nourmandour , nourmandour , ابو روضة , حريف برمجة
#3
(12-04-19, 12:15 AM)elgokr كتب :
مرحباً اخى nourmandour

للاسف لا يمكننى التعديل على المشروع المرفق
واعادة ارساله لك بسبب اختلاف الاصدار

ولكن يمكنك تعديل على السورس لديك
بنائاً لما ساقوم بشرحه الان

تعال على كود الحفظ خاص الحدث Button2_Click
واستبدل كامل الكود بداخله بهذا الكود
كود :
       For i As Integer = 0 To dgrid.RowCount - 1
           Dim sql As String = "INSERT INTO fat_ba (id, numb, [date], sdad, amel, mgma, sanf, kmea, sar, agmale, mdfa) Values (@id, @numb, @date, @sdad, @amel, @mgma, @sanf, @kmea, @sar, @agmale, @mdfa)"
           Dim cm As New OleDb.OleDbCommand(sql, conn)
           Dim sdad As String = ""
           If RadioButton1.Checked = True Then
               sdad = "نقدي"
           ElseIf RadioButton2.Checked = True Then
               sdad = "اجلة"
           ElseIf RadioButton3.Checked = True Then
               sdad = "جزء نقضي"
           End If

           With cm.Parameters
               .AddWithValue("@id", TextBox1.Text).DbType = DbType.String
               .AddWithValue("@numb", dgrid.Rows(i).Cells(0).Value).DbType = DbType.Int32
               .AddWithValue("@date", TextBox2.Text).DbType = DbType.String
               .AddWithValue("@sdad", sdad).DbType = DbType.String
               .AddWithValue("@amel", ComboBox2.Text).DbType = DbType.String
               .AddWithValue("@mgma", dgrid.Rows(i).Cells(1).Value).DbType = DbType.String
               .AddWithValue("@sanf", dgrid.Rows(i).Cells(2).Value).DbType = DbType.String
               .AddWithValue("@kmea", dgrid.Rows(i).Cells(3).Value).DbType = DbType.Int32
               .AddWithValue("@sar", dgrid.Rows(i).Cells(4).Value).DbType = DbType.Currency
               .AddWithValue("@agmale", dgrid.Rows(i).Cells(5).Value).DbType = DbType.Currency
               .AddWithValue("@mdfa", 0).DbType = DbType.Currency
           End With

           If (conn.State = ConnectionState.Open) Then conn.Close()
           conn.Open()
           cm.ExecuteNonQuery()
           conn.Close()
       Next
       MsgBox("تم الحفظ")

قم بفتح شاشة mdconn
واستبدل كامل الكود بها بهذا الكود
كود :
Imports System.Data.OleDb

Module mdconn
   Public conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\data_1.mdb;user id=admin;jet oledb:database password=123")
End Module

بالنهاية لا تنسي ان تجعل السورس يعمل على بيئة 32Bit
من الواضح ان جهازك يعمل على بيئة 32Bit
لذلك لم يحدث معك اى مشكلة ولكن عند اختبار البرنامج
على جهاز من بيئة 64Bit فلا يمكنك تشغيل البرنامج لذلك حرصاً اجعل
البرنامج على بيئة 32Bit

تحياتى لك
وتمنياتى لك التوفيق

الف الف الف شكرا 
وتسلم ايدك
 
في استفسار بخصوص 32bit يعني البرنامج 
بعد ما يخلص موش يشتغل علي اي نسخة غير 32 bit
الرد
تم الشكر بواسطة: ابو روضة
#4
الشكر لله والحمد لله
والحمد لله على كل حال

بخصوص بيئة الـ 32Bit للبرنامج
فهو يعملى على نظام 32Bit و 64Bit
عكس 64Bit لا يمكن العمل على 32Bit 

والمقصود بانك تجعل البرنامج على بيئة 32Bit
وهنا ليتم استعمال ملفات الـ Dll خاص بالاتصال بقاعدة البيانات
لان الاصدارا المستخدم لا يحتاج 
الى تثبيت اى اضافات مع البرنامج على الجهاز الاخر
لان بطبيعة الحال اى نسخة Windows تحتوى على ملفات Dll
تخص هذا الاتصال ولكن الملفات ببيئة 32Bit

لهذا السبب سيحدث مشكلة
اذا تم فتح البرنامج على نظام 64Bit
بدون تعديل بيئة البرنامج نفسه

اتمنى ان تكون الصورة وضحت لك كاملاً

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Question [VB.NET] ازرار التنقل و الاضافة و الحفظ و الحذف و التعديل في entity framework باستخدام visual vb 2010 + sql server 2008 3 137 28-10-20, 12:46 PM
آخر رد: Anas Mahmoud
  خطأ في الحفظ بدون صورة sofiane-phy 7 163 24-10-20, 08:28 AM
آخر رد: سعود
  [VB.NET] سؤال توضيحي حول الحفظ عن طريق CommandBuilder larbihamri 2 155 19-10-20, 10:07 AM
آخر رد: larbihamri
  مساعدة من فظلكم خطأ عند الحفظ sofiane-phy 2 178 01-10-20, 06:06 PM
آخر رد: sofiane-phy
  مساعدة من فظلكم خطأ عند الحفظ sofiane-phy 0 136 01-10-20, 05:28 PM
آخر رد: sofiane-phy
  ممكن مساعدة (الخطأ غير واضح في كود الحفظ) sofiane-phy 2 198 22-09-20, 12:15 PM
آخر رد: sofiane-phy
  [سؤال] عدة جداول و مشكلة في الحفظ gharib 4 406 12-08-20, 11:14 PM
آخر رد: gharib
  خطأ عند الحفظ Column 'FixID' does not belong to table . i1982 2 369 25-04-20, 02:21 PM
آخر رد: i1982
  تغير ترتيب السجلات بعد الحفظ من خلال الداتاقريدفيو جيولوجي مبتدئ 2 389 19-03-20, 03:23 AM
آخر رد: جيولوجي مبتدئ
  [VB.NET] عمل refresh ل datatable بعد الحفظ tahaayyoub 1 351 04-03-20, 05:47 PM
آخر رد: alsalamoni

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


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