PDA

View Full Version : سوال: خطا عجیب هنگام اتصال به بانک اکسس



hsn_abieteh
جمعه 03 تیر 1390, 09:12 صبح
سلام دوستان
برنامم رو به بانک sql که وصل میکنم هیچ مشکلی نیست و همه چی درست اجرا میشه اما وقتی به بانک اکسس متصل میکنم دستورات insert , delete به خوبی جواب میده ولی برا update این خطا رو میده Syntax error in UPDATE statement

جالبه که وقتی بانک رو به اس کیو ال وصل میکنم این خطا رو نمیده و فقط با اکسس مشکل داره.
قبلا هم این مشکل رو نداشتم هر کاری هم میکنم چاره ای براش پیدا نمیشه:افسرده:

این هم کد update و کوئری که استفاده کردم


ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add('update organization set number=:l0 where classname=:l1');ADOQuery1.Parameters[0].Value:=edit1.Text;ADOQuery1.Parameters[1].Value:=edit2.Text;ADOQuery1.ExecSQL;


خواهشا کمک کنید. یعنی چاره ای هست که این درست بشه؟

orum_javad
جمعه 03 تیر 1390, 18:54 عصر
شما از گرامر دلفی تو SQL استفاده کردین. عملگر تساوی در SQL = هست نه :=
کد شما:
update organization set number=:l0 where classname=:l1
کد اصلاح شده:
update organization set number=l0 where classname=l1

hsn_abieteh
جمعه 03 تیر 1390, 19:36 عصر
مرسی آقا جواد که جواب دادی.
حرفت درسته جواد جان ولی من عملگر تساوی نمیخوام و استفاده نکردم. اون l0 و l1 دو تا متغیر هستند که بعد تو کدی که گذاشتم مقدار دو تا edit رو ریختم تو دو تا متغیر!

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update organization set number=:l0 where classname=:l1');
ADOQuery1.Parameters[0].Value:=edit1.Text;
ADOQuery1.Parameters[1].Value:=edit2.Text;
ADOQuery1.ExecSQL;

قبلا اینکار ومی کردم و هیچ خطایی نمیداد. اقعا دیگه موندم چیکار کنم. خواهشا کمک کنید

Mask
شنبه 04 تیر 1390, 21:52 عصر
اصلا چه نیازی به آپدیت داری؟
من هیچ وقت بانک اکسس رو آپدیت نمیکنم.مشکلی هم نداشتم.
از این دستور استفاده کنید:

ADOQuery1.Requery();

Mahmood_M
یک شنبه 05 تیر 1390, 02:17 صبح
اصلا چه نیازی به آپدیت داری؟
من هیچ وقت بانک اکسس رو آپدیت نمیکنم.مشکلی هم نداشتم.
دستور UPDATE در SQL با بروزرسانی جدول کمی متفاوته ، این دستور برای تغییر اطلاعات یک سری از رکوردهای خاص استفاده میشه

قبلا اینکار ومی کردم و هیچ خطایی نمیداد. اقعا دیگه موندم چیکار کنم. خواهشا کمک کنید
Syntax دستور مشکلی نداره ، فیلد Number از نوع Integer هست ؟ نوع داده ای ( DataType ) مربوط به پارامترها رو چک کنید ...

hsn_abieteh
یک شنبه 05 تیر 1390, 23:22 عصر
Syntax دستور مشکلی نداره ، فیلد Number از نوع Integer هست ؟ نوع داده ای ( DataType ) مربوط به پارامترها رو چک کنید ...

سلام
نه نوعش text هست. به هر نوعی هم که تغییر میدم باز همین خطا رو میده.
روی یک بانک خالی هم تست کردم و insert کردم ولی برا آپدیت همون خطا رو داد.
اگه راه حلی به ذهنتون میرسه دریغ نکنید. خدا خیرتون بده

hsn_abieteh
شنبه 11 تیر 1390, 23:54 عصر
متاسفانه ویندوز هم عوض کردم وآفیس رو هم دوباره نصب کردم ولی باز همون خطا رو میده.
یعنی هیچکی تا به حال به این مشکل برنخورده؟

alaveh
چهارشنبه 15 تیر 1390, 04:06 صبح
دوست عزیز

حتما خودت هم می دونستی که هیچ ربطی به ویندوزت نداره ولی از سر ناچاری بوده این کارت .

اینو امتحان کن

ADOQuery1.SQL.Clear;
x="update organization set number="
x=x+:l;
x=x+"where classname="; x=x+:l; ADOQuery1.SQL.Add(x);
ADOQuery1.Parameters[0].Value:=edit1.Text;
ADOQuery1.Parameters[1].Value:=edit2.Text;
ADOQuery1.ExecSQL;

دستورات بالا همون دستورات خودت هستن
فقط قسمت کویری اصلیتو با یک متغیر رشته ای عوض کردم .
من مدتیه کد ننوشتم ممکنه سینتکس رو اشتباه کرده باشم که دیگه حتما خودت با رشته ها و ... آشنایی

Mahmood_M
چهارشنبه 15 تیر 1390, 17:35 عصر
یک نمونه رو می تونید از لینک زیر دانلود کنید :

http://parsaspace.com/files/6303694884/SQL_UPDATE.rar.html
موفق باشید ...

firststep
چهارشنبه 15 تیر 1390, 19:46 عصر
کاشکی هم تیبلتو توی یک بانک می کردی و هم یک نمونه می گزاشتی، تاببینیم توی سیس ما هم ارور می ده یا نه.......... فکر می کنم این شکل بهتره

hsn_abieteh
پنج شنبه 16 تیر 1390, 18:54 عصر
دوست عزیز

حتما خودت هم می دونستی که هیچ ربطی به ویندوزت نداره ولی از سر ناچاری بوده این کارت .

اینو امتحان کن

ADOQuery1.SQL.Clear;
x="update organization set number="
x=x+:l;
x=x+"where classname="; x=x+:l; ADOQuery1.SQL.Add(x);
ADOQuery1.Parameters[0].Value:=edit1.Text;
ADOQuery1.Parameters[1].Value:=edit2.Text;
ADOQuery1.ExecSQL;

دستورات بالا همون دستورات خودت هستن
فقط قسمت کویری اصلیتو با یک متغیر رشته ای عوض کردم .
من مدتیه کد ننوشتم ممکنه سینتکس رو اشتباه کرده باشم که دیگه حتما خودت با رشته ها و ... آشنایی
مرسی دوست عزیز ولی متاسفانه جواب نداد و همون خطا!
آخه فرقی نمیکنه


یک نمونه رو می تونید از لینک زیر دانلود کنید :

http://parsaspace.com/files/6303694884/SQL_UPDATE.rar.html
موفق باشید ...
یک دنیا ممنون. میدونید چیز جالب
برنامم رو وقتی وصل میکنم به بانک شما(همون db.mdb) می تونم با استفاده از بانکی که شما تو کامپیوترتون ساختید ویرایش انجام بدم یا با برنامه ی خود شما میتونم ویرایش کنم .
ئلی وقتی خودم یه بانک اکسس می سازم و میخوام با دلفی ویرایش کنم خطا میده.
راه حلی به ذهنتون نمیرسه؟ آخه اون برنامه های قدیمی که نوشتم بانکشون ویرایش میشه.
فکر کردم شاید مشکل از آفیس باشه برا همین 2007 نصب کردم ولی مشکل حل نشد.


کاشکی هم تیبلتو توی یک بانک می کردی و هم یک نمونه می گزاشتی، تاببینیم توی سیس ما هم ارور می ده یا نه.......... فکر می کنم این شکل بهتره
چشم دوست عزیز. این هم یه نمونه مثلا که تو کامپیوتر من خطای سینتکس میده.(ضمیمه کردم)

72070

alaveh
جمعه 17 تیر 1390, 02:17 صبح
دوست من

SQL اط این مشکلا زیاد داره

شما هیچ وقت کدی که تولید میشه رو لحظه قبل از execsql دیدی ؟

زمانی که کد تموم میشه و توی متغیر ذخیره میشه با یه دستور مثل Showmessage متن کامل دستور رو چک کن ( هر چند که فکر می کنی متنت درسته )

اگر کد تولید شدت درست بود که هیج ولی اگر کدت مشکل داشته باشه اینجوری راحت مشخص میشه .

hsn_abieteh
جمعه 17 تیر 1390, 08:54 صبح
اونو هم امتحان کردم دوست عزیز. مقادیر قبل از execsql داخل متغیر وجود داره.
میشه شما همون برنامه ای که من ضمیمه کردم رو امتحان کنید ببینید واسه شما هم همون خطا رو میده یا اینکه بدون مشکل اجرا میشه؟

alaveh
یک شنبه 19 تیر 1390, 02:14 صبح
اجرا میشه فقط توی آپدیت ارور سینتکس میگیره که وقت نداشتم چکش کنم

با این حساب مشکل از وصل شدن به بانک نیست که اگر بود توی حذف و اضافه هم ازوز میداد یا حتی همون open

hsn_abieteh
یک شنبه 19 تیر 1390, 16:34 عصر
اجرا میشه فقط توی آپدیت ارور سینتکس میگیره که وقت نداشتم چکش کنم

با این حساب مشکل از وصل شدن به بانک نیست که اگر بود توی حذف و اضافه هم ازوز میداد یا حتی همون open

پس مشکل از کامپیوتر من نیست. یا اینکه من فکر میکردم کامپایلرم مشکل داره.
پس احتمالا یه جای کار اشتباهه
ولی کجا خدا میدونه

alaveh
دوشنبه 20 تیر 1390, 03:47 صبح
اگر مشکلت با آپدیته که فکر نکنم پیدا کردن ایرادش سخت باشه . مشکلتون اینه که آپدیتش کار نمیکنه ؟ اگر اینجوریه بگو تا یه بررسیش کنم شاید تونستم .

hsn_abieteh
دوشنبه 20 تیر 1390, 21:41 عصر
اگر مشکلت با آپدیته که فکر نکنم پیدا کردن ایرادش سخت باشه . مشکلتون اینه که آپدیتش کار نمیکنه ؟ اگر اینجوریه بگو تا یه بررسیش کنم شاید تونستم .

اره داداش مشکل فقط وقتی هست که میخوام آپدیت کنم. اگه بتونی مشکلشو پیدا کنی که خدایی کلی ممنونت میشم.

یعنی ممکنه که من از شر این خطا راحت شم؟
http://up.iranblog.com/images/84kdj2wm765fzld7ro7.jpg

alaveh
چهارشنبه 22 تیر 1390, 00:35 صبح
اره داداش مشکل فقط وقتی هست که میخوام آپدیت کنم. اگه بتونی مشکلشو پیدا کنی که خدایی کلی ممنونت میشم.

یعنی ممکنه که من از شر این خطا راحت شم؟


خدمت دوست عزیزم

درست شد72379

alaveh
چهارشنبه 22 تیر 1390, 00:36 صبح
مشکل اسم فیلدت بود NUMBER

تغییرش دادم درست شد

hsn_abieteh
چهارشنبه 22 تیر 1390, 23:00 عصر
مشکل اسم فیلدت بود NUMBER

تغییرش دادم درست شد

یعنی واقعا مشکل من این بود. باورم نمیشه که من اینقد خنگم.

دستت طلا داداش. خدا خیرت بده

alaveh
پنج شنبه 23 تیر 1390, 00:38 صبح
پیش میاد عزیز

همیشه راه های آسون رو تست کن . اسم جدولاتو کوتاه و اختصاری انتخاب کن . هیچ وقت یک کلمه تک انتخاب نکن مثل click windows sql number و.....

موفق باشی