برگزیده های پرشین تولز

دلفی + MSSQLServer

bird

کاربر تازه وارد
تاریخ عضویت
22 جولای 2005
نوشته‌ها
106
لایک‌ها
0
سلام
من در حال نوشتن یک برنامه بانک اطلاعاتی بوسیله ی MSSQL Server و دلفی هستم. می خواستم عبارتی را در RunTime به Query string کامپوننت TADOQuery اضافه کنم، مثلا فرض می کنیم که Query string مان عبارت روبرو باشد:
'%select * from Table1 where FamilyName LIKE ‘% :myParameter
من برای اینکار Query string بالا را به تابع add به شکل زیر می فرستم:
()ADOQuery1.SQL.add
منتها وقتی Query string را به تابع add می دهم، موقع اجرا می گوید که پارامتر myParameter را نمی شناسد. می خواستم ببینم شما چگونه Query string بالا را به عنوان آرگومان تابع add ، به آن می فرستید. در واقع فکر می کنم اصل مشکلم با کاراکتر ‘ می باشد. حالت های زیادی راهم مثل قرار دادن ‘ داخل "" امتحان کردم، اما هیچ کدام جواب نمی دهند.
خیلی ممنون
 

bird

کاربر تازه وارد
تاریخ عضویت
22 جولای 2005
نوشته‌ها
106
لایک‌ها
0
من متوجه شدم كه مشكل از کاراکتر ‘ نبوده، بلكه مشكل من در مقدار دهي به پارامتر است. توي برنامه ام از اين دو خط استفاده مي كنم:

;(ADOQuery1.SQL.add(‘select * from Table1 where familyname LIKE' + #39 + '%' + ':vFname' + '%' +# 39
;ADOQuery1.Parameters.ParamByName(‘vFname').Value := EditBox1.Text

DB ام شا مل فيلدي بنام Familyname است و من مي خواهم كه كاربر درون EditBox1 هر چه كه تايپ كرد، خروجي query ركورد هايي را باز گرداند كه Familyname آنها اين رشته تايپ شده درون EditBox1 را، در بر داشته باشند.
#39 هم كد اسكي كاراكتر ‘ مي باشد.
وقتي برنامه ام را اجرا مي كنم ، پيغام مي دهد كه: ADOQuery1: Parameter ‘vFname’ Not Found . در صورتي كه من دقيقاً همين كار را زماني كه DB‌ ام اكسسي بود انجام مي دادم و هيچ مشكلي هم وجود نداشت .اگه كسي راه حل اين قضيه رو مي دونه، .لطفاً منو راهنمايي كنه، خيلي ممنون مي شم.
 

smt

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2004
نوشته‌ها
35
لایک‌ها
0
به جای استفاده از پارامترها به نظر من راه زیر ساده تر است که خود من هم جواب گرفته ام :
s:='select * from Table1 where familyname LIKE' + quotedstr(editbox1.Text);​
ADOQuery1.SQL.add(s);​
البته گاهی اوقات LIKE جواب نمی دهد و باید از = استفاده کنی .
 

bird

کاربر تازه وارد
تاریخ عضویت
22 جولای 2005
نوشته‌ها
106
لایک‌ها
0
از راهنمایی تون متشکرم.
با اضافه کردن % در داخل تابع quotedstr به همون نتیجه ای که می خواستم، رسیدم.
-مرسی
 
بالا