PDA

View Full Version : مشکل در ارسال به اکسس



sepehr2121
سه شنبه 11 آذر 1393, 15:02 عصر
سلام دوستان!
توروخدا کمک کنید که الآن چند روزه درگیر این کد لامصبم، حتی توی stackoverflow هم مطرح کردم جواب نگرفتم
وقتی این کد رو اجرا میکنم پیغام خطا میده که:
Syntax error in INSERT INTO statement.


private void btnprint_Click(object sender, EventArgs e)
{
int factornum = int.Parse(tbxfactor.Text);
int kalanum = int.Parse(tbxkalanum.Text);
oleDbCommand1.Parameters.AddWithValue("@factornum", factornum);
for (int i = 1; i <= kalanum; i++)
{


///oleDbCommand1.CommandText = "insert into fackala(factornum,kalaid,fee,number) values(@f,@k,@fe,@n)";
foreach (Control ctr in panel1.Controls)
{


if (ctr is TextBox && ctr.Name == i.ToString())
{
int kalaid = int.Parse(((TextBox)ctr).Text);
oleDbCommand1.Parameters.AddWithValue("@kalaid", kalaid);
}
else if (ctr is TextBox && ctr.Name == "tbxfee_" + (i.ToString()))
{
int fee = int.Parse(((TextBox)ctr).Text);
oleDbCommand1.Parameters.AddWithValue("@fee", fee);
}
else if (ctr is TextBox && ctr.Name == "tbxnumber_" + (i.ToString()))
{
int number = int.Parse(((TextBox)ctr).Text);
oleDbCommand1.Parameters.AddWithValue("@number", number);
}

}
//oleDbCommand1.CommandText = "INSERT INTO fackala(factornum,kalaid,fee,number) values('" + factornum.ToString() + "','" + kalaid + "','" + fee + "','" + number + "')";
oleDbCommand1.CommandText = "INSERT INTO fackala(factornum,kalaid,fee,number) values(?,?,?,?)";

oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();

}

حتی گفتم شاید اشتباه زدم دستور رو اومدم به صورت دستی توی دستور insert مقدار دادم ولی بازم همین پیغام رو داد!
چیکار کنم؟؟؟؟

_Memol_
چهارشنبه 12 آذر 1393, 01:10 صبح
سلام
کدت به ظاهر درسته اما این خط رو ببین
oleDbCommand1.CommandText =
"insert into fackala(factornum,kalaid,fee,number) values (@f,@k,@fe,@n)";

بین Values یه فاصله بزاری بد نیست
ببین نوع داده هات درست هست خط به خط debug کن بعد هر convert هم با var توو یه متغیر بریز ببین درست convert میشه

sepehr2121
چهارشنبه 12 آذر 1393, 12:08 عصر
سلام
کدت به ظاهر درسته اما این خط رو ببین
oleDbCommand1.CommandText =
"insert into fackala(factornum,kalaid,fee,number) values (@f,@k,@fe,@n)";

بین Values یه فاصله بزاری بد نیست
ببین نوع داده هات درست هست خط به خط debug کن بعد هر convert هم با var توو یه متغیر بریز ببین درست convert میشه


بازم ارور میده!
توروخدا کمک کنید!

samin_panahi
چهارشنبه 12 آذر 1393, 12:15 عصر
بازم ارور میده!
توروخدا کمک کنید!

factornum چیه؟
کجا مقدار دهی می شه؟

sepehr2121
چهارشنبه 12 آذر 1393, 12:22 عصر
factornum چیه؟
کجا مقدار دهی می شه؟

قبل از حلقه for!

samin_panahi
چهارشنبه 12 آذر 1393, 12:29 عصر
قبل از حلقه for!

ok
خوب چرا تو دستور insert مقادیر رو نذاشتید و بجاش علامت سوال گذاشتید؟
oleDbCommand1.CommandText = "INSERT INTO fackala(factornum,kalaid,fee,number) values(?,?,?,?)";

oleDbCommand1.CommandText = "INSERT INTO fackala(factornum,kalaid,fee,number) values(@factornum,@kalaid,@fee,@number)";

sepehr2121
چهارشنبه 12 آذر 1393, 12:49 عصر
توی stackoverflow خوندم که اینکارو بکنم درست میشه ولی بازم فایده نداشت!
به همین فرمی که شما گفتید هم نوشتم ولی نشد!
اینم لینک سوال توی stackoverflow!
http://stackoverflow.com/questions/27248710/insert-syntax-error-in-oledbconnection

samin_panahi
چهارشنبه 12 آذر 1393, 12:58 عصر
اگه برنامه تون رو اینجا بذارید شاید بهتر بشه کمک کرد
فعلا تو این تیکه کدی که گذاشتید مشکلی نمی بینم

danialafshari
چهارشنبه 12 آذر 1393, 15:54 عصر
با سلام
قبلاً این سورس رو قرار دادم که مقادیر رو در دیتابیس اکسس ذخیره می کنه و بدرستی کار می کنه
http://barnamenevis.org/showthread.php?387693-%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87&p=1717822#post1717822
بهتره open رو در سورس زیر بالای Execute قرار دهید
طبق سورس برنامتون رو مطابقت دهید
موفق باشید

sepehr2121
چهارشنبه 12 آذر 1393, 23:05 عصر
من یک چیز جالب پیدا کردم!
وقتی اسم ستونهارو پاک میکنم توی دستور insert دست کار میکنه! یعنی اینجوری:
INSERT INTO fackala VALUES (@id,@factornum,@kalaid,@fee,@number)
مشکل از چی میتونه باشه؟ اسم ستون هارو هم چک کردم درست بود!

sepehr2121
چهارشنبه 12 آذر 1393, 23:30 عصر
مشکل از از ستون number بود که جز کلمات ذخیره شده هستش!
باید دستور به صورت زیر باشه:

INSERT INTO fackala (factornum,kalaid,fee,[number]) VALUES(@factornum,@kalaid,@fee,@number)
امیدوارم کسی مثل من اینقدر گیر نیفته، یک هفته دنبال همین بودم!