PDA

View Full Version : مشکل با insert در adocommand



farhad110
سه شنبه 09 بهمن 1386, 11:03 صبح
سلام.روی برنامه ای دارم کار میکنم که از دیتابیس sql server استفاده میکنه. دستور زیر رو برای وارد کردن داده ها نوشتم:

sqlstr:='insert into table1 values ('+EDpercode.Text+', "'+EDname.Text+'", "'+EDfamily.Text+'")';
dm.ADOCommand.CommandText:=sqlstr;
dm.ADOCommand.Execute;
اما زمان اجرا با پیغام خطای زیر روبرو میشم:
http://i32.tinypic.com/34xri2a.jpg

مشکل کجاست؟
تشکر

JAFO_IRAN
سه شنبه 09 بهمن 1386, 11:36 صبح
سلام

1. اسامی فیلدها رو ذکر نکردید، البته میشه فرض کنیم که تمام فیلدها مورد نظر هستن و
2. اولین متن رو داخل double quote نگذاشتید - احتمالا توی همون edit هم SampleText درج شده باشه...

ارادت

farhad110
سه شنبه 09 بهمن 1386, 11:44 صبح
1- تمام فیلدها مورد نظر هستند
2- data type اولین فیلد int هست

حمیدرضاصادقیان
سه شنبه 09 بهمن 1386, 11:54 صبح
دوست عزیز شما چرا مقادیر رو به صورت پارامتر پاس نمیکنی.اینجوری دیگه نیازی نیست به این '' سروکار داشته باشی.
خیلی راحت بهش مقدار میدی و اگه مشکلی هم باشه مشخص میشه.

farhad110
سه شنبه 09 بهمن 1386, 13:01 عصر
دوست عزیز شما چرا مقادیر رو به صورت پارامتر پاس نمیکنی.اینجوری دیگه نیازی نیست به این '' سروکار داشته باشی.
خیلی راحت بهش مقدار میدی و اگه مشکلی هم باشه مشخص میشه.
کد زیر رو نوشتم. پیغام میده که پارامتر p1 وجود نداره:

sqlstr:='insert into employee values (:p1,:p2,:p3)';
dm.ADOCommand.Parameters.ParamValues['p1']:=EDpercode.Text;
dm.ADOCommand.Parameters.ParamValues['p2']:=EDname.Text;
dm.ADOCommand.Parameters.ParamValues['p3']:=EDfamily.Text;
dm.ADOCommand.CommandText:=sqlstr;
dm.ADOCommand.Execute;
منظور شما همین کد هست یا کد دیگر؟

ویرایش:
پارامترها رو در خود adocommand هم معرفی کردم حل شد

حمیدرضاصادقیان
سه شنبه 09 بهمن 1386, 13:24 عصر
سلام .منظورم همین کد هست.نیازی هم به تعریف پارامترها نیست.شما قبل از پاس دادن پارامترها باید اول رشته رو به adocommand اختصاص بدی بعدی پارامترهارو فراخوانی بکنی.