دلفی + MSSQLServer

شروع موضوع توسط bird ‏23 آگوست 2005 در انجمن Delphi

  1. bird

    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 ، به آن می فرستید. در واقع فکر می کنم اصل مشکلم با کاراکتر ‘ می باشد. حالت های زیادی راهم مثل قرار دادن ‘ داخل "" امتحان کردم، اما هیچ کدام جواب نمی دهند.
    خیلی ممنون
     
  2. bird

    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‌ ام اكسسي بود انجام مي دادم و هيچ مشكلي هم وجود نداشت .اگه كسي راه حل اين قضيه رو مي دونه، .لطفاً منو راهنمايي كنه، خيلي ممنون مي شم.
     
  3. smt

    smt کاربر تازه وارد

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

    bird کاربر تازه وارد

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