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

مشكلة فى جملة Insert

بدأه امجد مختار في 31 أغسطس 2008 · 10 رد · 1,101 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
Cmd.CommandText = "insert into Sales values ('" + BookId + "','" + memberId + "',#" + DateTime.Now + "#,#" + DateTime.Now + "#,'Buy',buyCost,delivery,0,0,total)";
Cmd.ExecuteNonQuery();

Syntax error in date in query expression '#29/08/2008 08:00:11 م#'.

ما السبب وما الحل ؟

تم تعديل هذه المشاركة بواسطة امجد مختار في 31 أغسطس 2008 في 22:32

اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد

من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن

#2

أنت كتبت كود يعني أنك كنت تبني برنامج أو تحاول هل من الممكن أن أعرف ما هي فكرة برنامجك ؟؟!!!

#3

تأكد من ان قاعدة البيانات تقبل التاريخ بهذا الشكل لأن TimeDate.Now ترجع التاريخ والوقت معا وربما حقل التاريخ بقاعدة البيانات غير مجهز لاستقبال التاريخ بهذا الشكل

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

#4

أنا بسجل بيانات فى قاعدة بيانات أكسس وهذا الحقل الذى يعطى خطأ نوعه

DateTime

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

تم تعديل هذه المشاركة بواسطة امجد مختار في 1 سبتمبر 2008 في 15:33

اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد

من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن

#5

طيب ممكن ترفق ملف قاعدة البيانات ونحاول عليه

لآن رسالة الخطأ تعني فقط ان في مشكلة نمط الادخال للتاريخ لاحظ ان فيه تاريخ ووقت طويل وآخر قصير

يعني ممكن تدخل على شكل ارقام وممكن تدخل على شكل اسماء شهور

حاول ترفق الملف وانا هاحاول عليه وان شاء الله نتوصل لمكمن المشكلة ونحلها باذن الله

#6

تفضل قاعدة البيانات

db.rar

اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد

من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن

#7

انا للاسف حاليا نسخة الفيجوال ستوديو فيها مشكلة

لكن جرب تشيل الرمز # من الجملة قبل وبعد DateTime.Now وذلك لأن رسالة الخطأ تعني ادخال قيمة

'#29/08/2008 08:00:11 م#'.'

بمعنى

Cmd.CommandText = "insert into Sales values ('" + BookId + "','" + memberId + "'," + DateTime.Now + "," + DateTime.Now + ",'Buy',buyCost,delivery,0,0,total)";

بالاضافة الى ان DateTime.Now ترجع قيمة تاريخ بالتالي لست في حاجة الى علامات # لكي تجعلها صالحة كقيمة تاريخ

جرب وقولي

#8

للاسف طلع هذا الخطأ

Syntax error (missing operator) in query expression '30/08/2008 03:04:29 م'.

اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد

من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن

#9

اليك هذا الكود ( انا تجاهلت باقي الحقول وتعاملت فقط مع حقلي التاريخ DateFrom, DateTo

string connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\db.mdb";

			OleDbConnection  OleDbConnection1 =new OleDbConnection(connectionString);
			OleDbCommand  cmd = new OleDbCommand();
			cmd.CommandType = System.Data.CommandType.Text;
			cmd.CommandText = "INSERT INTO Sales (DateFrom, DateTo) VALUES ('" + DateTime.Now  + "','" +  DateTime.Now  + "')";
			cmd.Connection = OleDbConnection1;

			OleDbConnection1.Open();
			cmd.ExecuteNonQuery();
			OleDbConnection1.Close();
			Form2 f =new Form2();
			f.Show();

السطر الاول به جملة الاتصال Connection String

ثم انشاء command جديد من النوع text

ثم السطر الاهم وهو جملة insert ولاحظ ان وضعت فقط علامات ' قبل وبعد DateTime.Now

ثم فتح الاتصال وتنفيذ الامر

ثم اغلاق الاتصال

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

الكود تم تجربته وتمت العملية بدون اخطاء

بانتظار ردك

#10

الحمد لله اشتغلت بنجاح

شكراً جزيلاً

ولكن كيف يتم وضع تاريخ على أنها قيمة نصية ؟

اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد

من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن

#11

اذا كنت تقصد انك تريد اخذ التاريخ من مربع نص مثلا وتدخله على انه تاريخ فيجب عليك وضع # قبل وبعد التاريخ مثلا

#1/1/2008#

وبالتالي تضع في جملة insert into نفس العلامة كالتالي

 string strDateFrom = "# " + txtDateFrom.Text + "#";
string strDateTo= "#" + txtDateTo.Text + "#";
// لاحظ ان txtDateFrom and txtDateTo هما مربعا نص

cmd.CommandText = "INSERT INTO Sales (DateFrom, DateTo) VALUES (' " + strDateFrom  + "','" +  strDateTo  + "')";

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