PDA

View Full Version : اجرای دستورات SQL در ASP.NET



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

saeed_82
چهارشنبه 20 اسفند 1382, 23:55 عصر
آی هوار
یعنی اینجا هیچکی نیست یه خورده بیشتر از دوخط دلفی بلد باشه

SyntaxCheck
شنبه 23 اسفند 1382, 00:56 صبح
سلام

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


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

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

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

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


procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
BdpDataAdapter1.Active := False;
BdpDataAdapter1.SelectCommand.CommandText := 'SELECT name, salary FROM Table1 where salary>10000';
BdpDataAdapter1.Active := True;
end;

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

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

saeed_82
سه شنبه 26 اسفند 1382, 19:39 عصر
ممنون از راهنمایی تون آقای حدادیان
یه مقدار از مشکلات حل شد

saeed_82
سه شنبه 26 اسفند 1382, 19:43 عصر
فرض کنید ما چند تا table با ساختار یکسان درون یک بانک اطلاعاتی داریم که اینها باید درون یک گراید نمایش داده شوند
من دیتا ممبر روی گراید تغییر میدم و دیتا سورس مربوط به dbwebdataset رو هم میزارم روی bdpdataadaptor1.datatable ولی نتیجه انه که چیزی نشون داده نمی شه
-------------