PDA

View Full Version : مشکل در گرفتن query (پیغام error )



googooli
شنبه 03 مرداد 1383, 01:28 صبح
من باید یک query بنویسم که با استفاده از از sql است . در این فرم سه combobox به نام
fields , table, operand دارم و یک dbgrid دارم و یک editbox که مقادیر برای دستور where را
در آن وارد میکنم .ضمنا از adoquery استفاده میکنم .
مشکل من این است که در اجرای برنامه مشکل دارم و در هنگام اجرای برنامه پیغام exception
syntax error می دهد.

MToloo
شنبه 03 مرداد 1383, 08:04 صبح
میشه یک نمونه از مقادیری که تو این سه تا کمبو واردمیشن و بنویسی؟
این فیلدی که تو کمبوی field انتخاب میشه عددیه یا رشته ای؟ اگه رشته ایه تو کوتیشن میزاریش یا نه؟
بعد یه چیز مهمتر بعد از where فاصله نذاشتی!

googooli
شنبه 03 مرداد 1383, 10:11 صبح
این برنامه جدید است . برای نمونه مقدار جدول student در کمبو (table ) و sno در کمبو (field ) و = در کمبو (op ) و در
edit هم خود کاربر مقدار مورد نظر را می دهد .
در ضمن فیلد داخل کمبوی field می تواند هم عددی و هم رشته ای باشد.
در ضمن با فاصله بعد where درست نشد .

googooli
شنبه 03 مرداد 1383, 10:22 صبح
این هم ظاهر فرم است .

سار
شنبه 03 مرداد 1383, 11:19 صبح
دستور سلکت به این شکل صحیح است:


Select * from Table Where Name='aaaaa' ....

شما باید در دستورات خود کتیشن رو هم قرار بدید تا مشکل حل شود. در حال حاضر برنامه شما چنین کدی میسازد:


Select * from Table Where Name=aaaaa ....

MToloo
چهارشنبه 07 مرداد 1383, 06:06 صبح
ببخشید جثارتا باید عرض کنم که دستور گوگولی این کد را میسازد:

Select * from Table where FieldName ='edit1.Text'
متوجه منظورم شدی؟ شما انگار دقیقا عبارت edit1.Text رو گذاشتی تو کوتیشن نه مقدار edit1.Text . اصلا اگه دقت کرده باشی دلفی عبارت edit1.Text رو آبی کرده. یعنی اون و به عنوان یک رشته در نظر گرفته. شما قبل از edit1.Text و بعد از اون باید چهار تا علامت ' بزاری نه سه تا. اگه برات ممکنه گیج کننده باشه از تابع QuotedStr استفاده کن (البته فقط برای فیلدهای رشته ای):

tmp = tmp + field + op + QuotedStr(Edit1.Text);
در مورد شرط اولیت یعنی فیلدهای عددی هم اشتباهت اینه که بعد از Where باز هم فاصله نذاشتی.!
:wink: