# Native Code > برنامه نویسی در Delphi > برنامه نویسی در Delphi Prism >  اجرای دستورات SQL در  ASP.NET

## saeed_82

من یه پروژه ASP.NET ساختم و از BDPConnection,BDPDataAdaptor,Datasource و نیز Datagrid استفاده کردم و بانک Access رو به اونا لینک کردم . تا اینجا درسته
وقتی برنامه اجرا میشه و من لیست رو میبینم . من برای اجرای یه دستور جدید از پارامترهای دیتا آداپتور استفاده نکردم . از یه کامند استفاده کردم که اونرو به BDPDataAdaptor/SelectCommand لینک کردم و دستور اس کیو ال رو به این طریق عوض میکنم
ولی یه مشکلی وجود داره . وقتی دستور جدید اجرا میشه میبینم که تعداد صفحات دیتاگرید بدرستی تغییر میکنه ولی وقتی روی هر شماره صفحه ای کلیک می کنم دوباره اطلاعات اس کیو ال اولی نشون داده میشه
لطفا بنده رو راهنمایی کنید
اگه روش بهتری برای اجرای دستورات اس کیو ال میدونید بنده رو در جریان بزارید
راستی بنده هنوز نفهمیدم معادل clientdataset در این روش چیه 
یعنی ما نتایج یک اس کیو ال رو چطور میتونیم تحلیل کنیم.
قربون شما

----------


## saeed_82

آی هوار
یعنی اینجا هیچکی نیست یه خورده بیشتر از دوخط دلفی بلد باشه

----------


## SyntaxCheck

سلام



> آی هوار 
> یعنی اینجا هیچکی نیست یه خورده بیشتر از دوخط دلفی بلد باشه


دوست عزیز هوار زدن لازم نیست. این رو فراموش نکنید که در این فروم اصولا کسی برای پاسخگویی به سوالات الزامی نداره و پاسخهایی که از طرف دوستان داده میشه صرفا لطفی از طرف پاسخدهنده هست. پس کسی طلبی از دیگری برای جواب گرفتن نداره که در همون لحظه که سوال پرسیده شد جواب رو بگیره.


اما جواب سوالتون:



> وقتی برنامه اجرا میشه و من لیست رو میبینم . من برای اجرای یه دستور جدید از پارامترهای دیتا آداپتور استفاده نکردم . از یه کامند استفاده کردم که اونرو به BDPDataAdaptor/SelectCommand لینک کردم و دستور اس کیو ال رو به این طریق عوض میکنم 
> ولی یه مشکلی وجود داره . وقتی دستور جدید اجرا میشه میبینم که تعداد صفحات دیتاگرید بدرستی تغییر میکنه ولی وقتی روی هر شماره صفحه ای کلیک می کنم دوباره اطلاعات اس کیو ال اولی نشون داده میشه 
> لطفا بنده رو راهنمایی کنید


اکتان راه خیلی راحت تری رو برای استفاده از دیتا گرید با تمام امکانات و بسیار راحت تر و بدون هیچ کدنویسی فراهم کرده. پیشنهاد میکنم از DBWebGrid استفاده کنید. یک مثال رو برای شما نوشتم و اینجا ضمیمه کردم. دانلودش کنید و در فولدر C:\Inetpub\wwwroot\WebTemp بازش کنید و یک Virtual directory در آی آی اس براش بسازید و در اکتان کامپایل و اجراش کنید.

----------


## saeed_82

syntax عزیز از حسن همکاری شما کمال تشکر را دارم
ولی ظاهرا شما صورت مساله را درست متوجه نشدید ، چیزی را که شما به آن اشاره کردید چیز ساده و واضحی است ولی منظور من این است که حال اگر خواستیم در حین اجرا مثلا یک شرط Where  روی بانک اطلاعاتی اجرا کنیم چطور این کار را انجام دهیم . بهترین روش برای این مورد چیست 
این مساله یه مساله عمومیست که در ساده ترین نرم افزارهای بانک اطلاعاتی هم به آن برخورد میکنیم
قبلا از همکاری شما متشکرم
منتظر پاسخ شما هستم
سعید

----------


## SyntaxCheck

سلام
باید توجه کرد که هر تغییری در کوئری باید قبل از لود شدن صفحه انجام بشه بنا به شرایط. اگر شما قصد سلکت کردن رو دارید با شرط خاصی میتونید مثلا SelectCommand رو از BdpDataAdapter مورد نظر بصورت زیر تنظیم کنید. فقط توجه داشته باشید که کد زیر در رویداد OnClik از یک Button نوشته بشه(صرفا برای مثال) و همچنین این رو هم توجه کنید که اگر این کد رو فرضا در برنامه ضمیمه در همین تاپیک که از دیتا گرید استفاده میکنه اجرا کنید, در زمان کلیک کردن روی کلید شرط فیلتر در کد زیر انجام میشه اما به محض اینکه کاربر (برای مثال) شماره صفحه رو در دیتاگرید کلیک کنه، دیگه شرط Where بر قرار نیست و همون شرط اولیه اجرا میشه و این امر طبیعه چون صفحه مجدد لود میشه و دیگه از کوئری ما که در آنکلیک نوشتیم خبری نیست.

procedure TWebForm1.Button1_Click&#40;sender&#58; System.Object; e&#58; System.EventArgs&#41;;
begin
    BdpDataAdapter1.Active &#58;= False;
    BdpDataAdapter1.SelectCommand.CommandText &#58;= 'SELECT name, salary FROM Table1 where salary>10000';
    BdpDataAdapter1.Active &#58;= True;
end;

----------


## saeed_82

بله فرمایش شما متین ، بنده مطالب شما رو تجربه کردم ، شما دقیقا الان رسیدید به همونجایی که من از اول قصد بیان مشکل رو داشتم . حال فرضا ما شرط کوئری رو روی رویداد Onclic یک کلید تنظیم کرده و اونرو حین اجرا استفاده می کنیم و حالا شرط در DBWebGrid نشون داده شده و کاربر باید صفحه بعد این کوئری رو ببینه ، راه حل ایده ال بخاطر اینکه کوئری اولیه Reload نشه چیه
گیر من اینجا بود آقای سینتکس ، اگه توجه می فرومودید من در اولین سوالم به همین نکته اشاره کردم
بازهم از اینکه جوابهای منو مینویسی از شما تشکر میکنم
اگه سایتی سراع داری که راجع دلفی 8 مطالب جالبی داشته باشه ممنون میشم اگه معرفیش بکنید
راهنمای بورلند دلفی 8 واقعا مزخرفه
با تشکر
سعید

----------


## SyntaxCheck

سلام
فکر کنم منظورت همچین چیزی باشه. این مثال رو بجای قبلی نصب و اجرا کنید. راه حل اساسی بطور خلاصه اینه که تمام کارها رو روی BDPCommand مورد نظر در رویداد Page_Load باید انجام بدید.این مثال یک شمایی از همچین چیزی رو نشون میده.

----------


## saeed_82

ممنون از راهنمایی تون آقای حدادیان
یه مقدار از مشکلات حل شد

----------


## saeed_82

فرض کنید ما چند تا table با ساختار یکسان درون یک بانک اطلاعاتی داریم که اینها باید درون یک گراید نمایش داده شوند
من دیتا ممبر روی گراید تغییر میدم و دیتا سورس مربوط به dbwebdataset رو هم میزارم روی bdpdataadaptor1.datatable ولی نتیجه انه که چیزی نشون داده نمی شه
-------------

----------

