تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة في كود اضافة الى sql 2012
#11
و عليكم السلام و رحمة الله و بركاته

أخي الكريم للحصول على سجل جديد فارغ يحتوي على نفس حقول الجدول عليك أولا ملئ الجدول بالبيانات
رسالة الخطأ تؤكد عدم وجود الحقل الثاني لأن فهرس الحقل الأول 0

ليصبح الكود بالترتيب التالي

كود :
       Dim con As New SqlConnection("Server= \SQLEXPRESS; Database = mail; Integrated Security = true")

       Dim da As New SqlDataAdapter
       Dim dt As New DataTable
       Dim cmd As New SqlCommand
       Dim cmdb As SqlCommandBuilder

       Dim strTableName As String = "TableName"

       REM تمرير أمر الإختيار لمحول البيانات
       da = New SqlDataAdapter("SELECT * FROM [" & strTableName & "]", con)
       REM لاستكمال عملية التحديث في حال حدوث خطأ
       da.ContinueUpdateOnError = True
       REM هنا يتم توليد أوامر التعديل و الحذف وفقاً لأمر الإختيار
       cmdb = New SqlCommandBuilder(da)
       REM مسح الجدول إذا كان مستخدم مسبقاً
       dt = New DataTable
       REM فتح الإتصال
       If con.State = ConnectionState.Closed Then con.Open()
       REM قراءة الجدول من القاعدة و حفظه في المتغير
       da.Fill(dt)
       REM إغلاق الإتصال
       con.Close()
       REM عند ملئ الجدول بالبيانات تحصل على سطر جديد بنفس الحقول
       Dim r As DataRow = dt.NewRow
       r(0) = TextBox1.Text
       dt.Rows.Add(r)
       REM فتح الإتصال
       If con.State = ConnectionState.Closed Then con.Open()
       da.Update(dt)
       REM إغلاق الإتصال
       con.Close()
مع العلم أني لم أختبر الكود و عدلته ضمن المشاركة فقط
الرد }}}
تم الشكر بواسطة: Anas Mahmoud , ابراهيم ايبو , moh developer
#12
السلام عليكم اخي الكريم
جرب الكود بهذا الشكل 
كود :
  Try

           Dim dt As New DataTable
           Dim last As Integer = dt.Rows.Count
           Dim Row As DataRow = dt.NewRow
           dt.Rows.Add()

           dt.Rows(last).Item("اسم الحقل الاول") = CInt(TextBox1.Text) ' اذا كان هذا الحقل من نوع رقمي نحوله من نص الى رقم
           dt.Rows(last).Item("اسم الحقل الثاني") = TextBox2.Text
           dt.Rows(last).Item("اسم الحقل الثالث") = TextBox3.Text
           dt.Rows(last).Item("اسم الحقل الرابع") = TextBox4.Text
           dt.Rows(last).Item("اسم الحقل الخامس") = TextBox5.Text
           dt.Rows(last).Item("اسم الحقل السادس") = TextBox6.Text
           dt.Rows(last).Item("اسم الحقل السابع") = TextBox7.Text
       
           Dim save As New SqlCommandBuilder()
           save = New SqlCommandBuilder(da)
           da.Update(dt)
           dt.AcceptChanges()
           MessageBox.Show("تم اضافة السجل بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information)
       Catch ex As Exception
           MessageBox.Show("لم تتم الاضافة ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
       End Try
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: Mohamad Anan , moh developer
#13
(23-09-20, 06:46 AM)Mohamad Anan كتب : و عليكم السلام و رحمة الله و بركاته

أخي الكريم للحصول على سجل جديد فارغ يحتوي على نفس حقول الجدول عليك أولا ملئ الجدول بالبيانات
رسالة الخطأ تؤكد عدم وجود الحقل الثاني لأن فهرس الحقل الأول 0

ليصبح الكود بالترتيب التالي

كود :
       Dim con As New SqlConnection("Server= \SQLEXPRESS; Database = mail; Integrated Security = true")

       Dim da As New SqlDataAdapter
       Dim dt As New DataTable
       Dim cmd As New SqlCommand
       Dim cmdb As SqlCommandBuilder

       Dim strTableName As String = "TableName"

       REM تمرير أمر الإختيار لمحول البيانات
       da = New SqlDataAdapter("SELECT * FROM [" & strTableName & "]", con)
       REM لاستكمال عملية التحديث في حال حدوث خطأ
       da.ContinueUpdateOnError = True
       REM هنا يتم توليد أوامر التعديل و الحذف وفقاً لأمر الإختيار
       cmdb = New SqlCommandBuilder(da)
       REM مسح الجدول إذا كان مستخدم مسبقاً
       dt = New DataTable
       REM فتح الإتصال
       If con.State = ConnectionState.Closed Then con.Open()
       REM قراءة الجدول من القاعدة و حفظه في المتغير
       da.Fill(dt)
       REM إغلاق الإتصال
       con.Close()
       REM عند ملئ الجدول بالبيانات تحصل على سطر جديد بنفس الحقول
       Dim r As DataRow = dt.NewRow
       r(0) = TextBox1.Text
       dt.Rows.Add(r)
       REM فتح الإتصال
       If con.State = ConnectionState.Closed Then con.Open()
       da.Update(dt)
       REM إغلاق الإتصال
       con.Close()
مع العلم أني لم أختبر الكود و عدلته ضمن المشاركة فقط


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#14
الرسالة تفيد بأن الجدول T1 غير موجود تأكد من وجود الجدول في قاعدة البيانات
أنا وضعت اسم الجدول بمتغير لاستبداله باسم الجدول عندك بعد التأكد من الاتصال الصحيح بقاعدة البيانات
كود :
Dim strTableName As String = "اسم الجدول عندك"
الرد }}}
تم الشكر بواسطة:



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


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