PDA

View Full Version : ADOQuery و مشکل استفاده از پارامترهای SQL



Rocker
چهارشنبه 31 مرداد 1386, 11:45 صبح
دوستان عزیز سلام:
من این دستور اس کیو ال را نوشتم اما هنگام اجرا شدن خطا میدهد.هدفم از نوشتن این دستور این بود تا بتونم تمام فیلدها را با محتوای یک پارامتر مقایسه کنم اما فکر کنم در طرز نوشتن دستور مشکل دارم آخه وقتی اونها رو جدا جدا می نویسم قشنگ اجرا میشن.
نوع فیلد id عددی و نو فیلد name هم رشته ای میباشد.و در ضمن datatype پارامتر param1 از نوع ftatring میباشد.
خواهش میکنم منو بازم کمکم کنید ممنون.
فداتون.

SQL.Add('select * from table1 WHERE name like :param1 or id like:param1 ');

Batman
چهارشنبه 31 مرداد 1386, 12:56 عصر
با سلام
دوست عزیز استفاده از : در دستورات sql معنایی نداره چون دستورات sql پارامتر نداره
اگر یه مثال از هدف کارتون بزنید بهتر میتونم راهنماییتون کنم
موفق باشید

SYNDROME
چهارشنبه 31 مرداد 1386, 13:32 عصر
با سلام
اینجوری بنویس.


SQL.Add('select * from table1 WHERE name like :param1 or id like:param2 ');

سپس پارامترها را مقدار دهی کن و سپس Activeمربوط به ADOرا Trueکن.
موفق باشید

Rocker
چهارشنبه 31 مرداد 1386, 15:03 عصر
آقای syndrom یک دنیا از شما متشکرم من مشکلم را به روشی دگیر حل نمودم باز هم از لطف شما دوست عزیز بسیا بسیار متشکرم.

borhan_rahimi
دوشنبه 27 خرداد 1387, 12:09 عصر
دوست عزیز
خدا خیرت بده بگو به چه روشی حل کردی ، آخه روش اولی که از پارامتر استفاده نکرده ، دومی هم که نتونسته یک پارامتر رو دوبار استفاده کنه ، من خواهشمندم اگه یه چیزی یاد می گیرین به احترام بقیه که سعی می کنند کمکتون کنند ، شما هم روشتون رو بگین.
با تشکر

اصغر (پآچ)
سه شنبه 28 خرداد 1387, 01:09 صبح
سلام دوستان

با اجازه علی آقای غفوری عزیـــــــــــزم!

من خودم به شخصه از پارامترهای ADO استفاده نمی کنم درسته که استفاده از پارامترها خیلی مزایا داره اما من مقدار دهی دستی رو بیشتر می پسندم
کد رو به صورت زیر تغییر بده


SQL.Add('select * from table1 WHERE name like ''' + مقدار مورد مقایسه + ''' or id = ' + مقدار مورد مقایسه);

موفق و موید باشی

SYNDROME
سه شنبه 28 خرداد 1387, 06:51 صبح
SQL.Add('select * from table1 WHERE name like ''' + مقدار مورد مقایسه + ''' or id = ' + مقدار مورد مقایسه);


فقط یک نکته را با اجازه شما به دستورتان اضافه کنم.
در پست اول اگر دقت کنید هر دو مقدار با Param1 مقدار دهی شده است پس یا هر دو فیلد رشته است و یا هر دو عدد.
پس دستور شما باید یا برای هر دو فیلد کوتیشن بگذارید و یا نگذارید.
فیلد رشته ای


SQL.Add('select * from table1 WHERE name like '+ Quotedstr(مقدار مورد مقایسه) + ' or id = ' + Quotedstr(مقدار مورد مقایسه));

فیلد عددی


SQL.Add('select * from table1 WHERE name like '+ مقدار مورد مقایسه + ' or id = ' + مقدار مورد مقایسه);

دستور Quotedstr همان عمل '''+Value+''' را انجام می دهد.
موفق باشید