الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

آمل تصحيح الخطأ الموجود في الكود

بدأه m00j في 22 فبراير 2012 · 11 رد · 701 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

باختصار هذا كود يضيف البيانات من جدول لآخر ويحتوي على باراميتر أيضا وهنا المشكلة آمل النظر في اكود و تصحيح الخطأ

    Dim con As New OleDbConnection
        Dim cmd As New OleDbCommand
        Try
            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\DellXPS\Desktop\mDB.accdb"

            con.Open()
            cmd.Connection = con
            cmd.CommandText = "INSERT INTO t2(f3,f4) SELECT f1 @Eid FROM t1 WHERE f11=true "
            cmd.ExecuteNonQuery()
            cmd.Parameters.Add("@Eid",  OleDbType.VarChar).Value = TextBox1.Text
        Catch ex As Exception
            MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records")
        Finally
            con.Close()
        End Try

نص رسالة الخطأ هي:

error while inserting record on table ..Syntax error (missing operator) in query

والفكرة باختصار عاوز اضيف بيانات إلى جدول مع العلم بأن مصدر البيانات همــــا : جدول آخر و مربع نص في النموذج

والعلة في جملة الاستعلام والله اعلم .. ما اعرف كيف اضيف البارميتر ولا مكانه الصحيح .. هل يكون بعد جمله الاستعلام وكيف اكتبه !!

هل هذا الشكل صحيح واذا كان صحيح ليه ما يضيف القيمة للجدول

cmd.CommandText = "INSERT INTO t2(f3,f4) SELECT f1  FROM t1 @Eid WHERE f11=true "

آمل أن تكون الفكرة واضحة :)

تم تعديل هذه المشاركة بواسطة m00j في 23 فبراير 2012 في 12:06

#2

الأخ/ m00j

المشكلة في الاستعلام

INSERT INTO t2(f3) SELECT f1 FROM t1 @Eid WHERE f11=true

الخطأ بعد FROM

t1 @Eid الباراميتر بعد اسم الجدول

إذا كنت تقصد اضافة قيمة الباراميتر إلى اسم الجدول اضف + بينها

* اذا كان اعتقادي خطأ: يرجى التوضيح أكثر،، شكراً

#3

اخي suleiman_asg

بالفعل انت فاهم بالضبط ما احتاج ,, و صححت الملاحظة الي قلت لي عنها بس ما نجحت العملية !!

"INSERT INTO table2(column3) SELECT column1 FROM table1 +  @parameter WHERE column11=true "

البارميتر هو مربع نص موجود في نموذج .

تم تعديل هذه المشاركة بواسطة m00j في 22 فبراير 2012 في 19:20

#4

غير ترتيب السطرين:

cmd.ExecuteNonQuery()

cmd.Parameters.Add("@Eid", OleDbType.VarChar).Value = TextBox1.Text

لتصبح:

cmd.Parameters.Add("@Eid", OleDbType.VarChar).Value = TextBox1.Text

cmd.ExecuteNonQuery()

#5

جرب اخوي يكون اسناد الباراميتر قبل جملة الاستعلام ثم أمر التنفيذ في الأخير ..

cmd.Parameters.Add("@Eid", OleDbType.VarChar).Value = TextBox1.Text

cmd.CommandText = "INSERT INTO table2(column3) SELECT column1 FROM table1 + @parameter WHERE column11=true "

cmd.ExecuteNonQuery()

#6

أنا خارج المنزل بأمر من وزارة الداخلية ( المدام ) واول ما ارجع بجرب ورد لك وعسى الله يوفق يا رب

#7

الله يستر ،،

#8

أنا بقصد بالداخلية زوجتي :happy:

#9

عارف :wacko: برضو الله يستر

#10

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

تصحيح لجملة الاضافة في الاعلى:

"INSERT INTO table2(column3,column4) SELECT column1 FROM table1 + @parameter WHERE column2=true "

مكونات المشروع:

table1: column1 column2

table2: column3 column4

Form1: textbox1

تم تعديل هذه المشاركة بواسطة m00j في 23 فبراير 2012 في 12:05

#11

جرب هذا

  Dim con As New OleDbConnection
        Dim cmd As New OleDbCommand
        Try
            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\DellXPS\Desktop\mDB.accdb"

            con.Open()
            cmd.Connection = con
            cmd.CommandText = "INSERT INTO t2(f3,f4)  SELECT f1,f2 FROM " &  TextBox1.Text 
            cmd.ExecuteNonQuery() 
        Catch ex As Exception
            MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records")
        Finally
            con.Close()
        End Try
#12

شكر اخي كريم وجدت مكان الخطأ وصححته الف الف الف شكر لكم جميعا والحل كالتالي :

صحيح

INSERT INTO table2(column3, column4) SELECT column1, @parameter FROM table1 WHERE column2=true

خطأ

INSERT INTO table2(column3, column4) SELECT column1+ @parameter FROM table1 WHERE column2=true

جملة الاستعلام حساسة لاستخدام الفواصل وليس علامة + في مثالي طبعا ولا ادري كيف تستخدم اشارة الجمع في جمل الاستعلام :)

تم تعديل هذه المشاركة بواسطة m00j في 23 فبراير 2012 في 15:24

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…