PDA

View Full Version : چگونه از یک متغیر در یک دستور sql استفاده کنم ؟؟



ninja506
جمعه 09 خرداد 1393, 17:37 عصر
با سلام خدمت کلیه اساتید
من یک مشکل بزرگ گیر کردم . با یک adoquery مقادیری از یک جدول انتخاب کرده ام و مقدار یک متغیر را برابر با مقدار یکی از فیلدها قرار داده ام . حال وقتی می خواهم از این متغیر در دستور sql یک adoquery دیگر استفاده کنم به علامت ( گیر می دهد . لطفا راهنماییم کنید .

a:=qry1.FieldByName('kodper').AsInteger;
qry2.Close;
qry2.SQL.Clear;
qry2.SQL.Add('select top 1 * from kod6 where kodper (like ''%'+a+'%'') ');
qry2.Open;

ارور :
[Error] Unit1.pas(44): ')' expected but identifier 'a' found

SayeyeZohor
جمعه 09 خرداد 1393, 19:43 عصر
با سلام خدمت کلیه اساتید
من یک مشکل بزرگ گیر کردم . با یک adoquery مقادیری از یک جدول انتخاب کرده ام و مقدار یک متغیر را برابر با مقدار یکی از فیلدها قرار داده ام . حال وقتی می خواهم از این متغیر در دستور sql یک adoquery دیگر استفاده کنم به علامت ( گیر می دهد . لطفا راهنماییم کنید .

a:=qry1.FieldByName('kodper').AsInteger;
qry2.Close;
qry2.SQL.Clear;
qry2.SQL.Add('select top 1 * from kod6 where kodper (like ''%'+a+'%'') ');
qry2.Open;

ارور :
[Error] Unit1.pas(44): ')' expected but identifier 'a' found

از تگ pascal استفاده کن


اینو چک کن ............



a:=qry1.FieldByName('kodper').AsInteger;
qry2.Close;
qry2.SQL.Clear;
qry2.SQL.Add('Select top 1 * From kod6 Where kodper (like '+QuotedStr('%'+Inttostr(a)+'%')+')');
qry2.Open;




ارور :
[Error] Unit1.pas(44): ')' expected but identifier 'a' found

عقاب سیاه
جمعه 09 خرداد 1393, 19:47 عصر
فکر میکنم a از نوع int هست و نمیشه بدون تبدیل وسط رشته استفاده بشه

ninja506
جمعه 09 خرداد 1393, 23:13 عصر
با تشکر از دوستان عزیز
مشکل من تا حدودی رفع شد فقط مشکل اینه که اگه از این کدی که بالا گذاشتید استفاده کنم سینتکس ارور می ده و میگه :
syntax error (missing operator) in query experssion 'kodper' (like'%552%') . p
ممنون میشم منو از این گرفتاری نجات بدین

عقاب سیاه
جمعه 09 خرداد 1393, 23:46 عصر
ببینید این جوری هم خطا میده:
qry2.SQL.Add('Select top 1 * From kod6 Where kodper like '+QuotedStr('%'+Inttostr(a)+'%'));

ninja506
شنبه 10 خرداد 1393, 00:06 صبح
ببینید این جوری هم خطا میده:
qry2.SQL.Add('Select top 1 * From kod6 Where kodper like '+QuotedStr('%'+Inttostr(a)+'%'));

با تشکر از شما دوست عزیز
این بار ارور نداد ولی مقدار جستجو شده qry2 را خالی برگشت می دهد یعنی dbgrid متصل به این کوئری خالی است .

عقاب سیاه
شنبه 10 خرداد 1393, 00:10 صبح
خواهش میکنم
خوب اون دیگه مربوط به اطلاعت توی جدوله
این کد اولین رکوردی را باز میگردونه که شامل اون عدد داخل متغییر a باشه و اون دوتا % نشون میده که قبل و بعد عدده هم هرچی باشه مهم نیست