PDA

View Full Version : حرفه ای: پرس و جو پیشرفته



sohil_ww
پنج شنبه 25 اردیبهشت 1393, 21:10 عصر
سلام به همه ی دوستان و اساتید عزیز
خوب اول از همه در مورد سئوالم یه توضیح بدم
همه می دونیم که دستور ویرایش Sql به این صورت هستش
Update Tblname Set Fild=value where comd
خوب همانطور که همگی می دونیم کار اصلا قشنگی نیست که بیایم این دستور تو فرم هر پروژمون بنویسم که هیچی یه روش دیگه هم که دستور آپدیت تو یه کلاس باشه و کل فیلد ها پاس داده بشه که که خوب یکم منطقیه ولی چیزی که من مد نظر بود اینه که بیام فیلد های که تغیر کردن و مقدارشون و بررسی کنم و اگه ویرایش شده بودن آپدیت بشن یعنی اون فیلد های که مقدارشون تغییر کرده بود
من واسه این روش امده بودم تو بعد از خودن مقادیر از بانکم کل کنترل های روی فرم و به یه کلاس پاس می دادم و تو این کلاس کنترل هام بسته به نوع کنترل و خواصشون مقدار تکس باکس و نامش تو یه رشته ریخته می شد و بعد از عمل ویرایش هم می امدم دوباره کنترل ها به کلاسم پاس داده می شدن و مقادیر جدید تو یه رشته ریخته می شد و رشته اولی با دومی مقایسه می شد و کوئریم بر اساس تغیراتی که بود ایجاد می شد این روش داره کار می کنه و من هیچ نیاز به نوشتن اسم فیلد هام تو فرم هام ندارم و یه جورای کد نویسیمو کم کرده من فقط اسم کنترل های رو فرم و به کلاسم پاس می دم
این روش من برای پیاده سازی بود، ولی چون بازم اسم کنترل ها می نویسم (منظورم پاس دادن خود کنترل هست ) یکم به نظرم خوب و بهینه نیست
دنبال یه روش بهتر و کار آمد تر برای این گونه پیاده سازی هستم
اساتید ممنون می شم اگه منو تو این مهم کمک کنید و ایده و روش های که پیاده سازی کردید در اختیار این بنده حقیر قرار بدید با تشکر سهیل

Mahmoud.Afrad
پنج شنبه 25 اردیبهشت 1393, 22:25 عصر
پرس و جو با آپدیت فرق میکنه.

بزرگترین اشتباه شما اینه که خود کنترل(ارجاع کنترل) رو پاس میدید در صورتی که باید مقدار مورد نظر رو از کنترل بدست بیارید و پاس بدید مثلا در مورد یک تکست باکس نباید خود تکست باکس رو پاس بدید بلکه باید خصوصیت text تکست باکس رو منتقل کنید. (در مورد برنامه نویسی چندلایه جستجو کنید)
میتونید کوئری مورد نظر رو در قالب یک استورپروسیجر بنویسید و در برنامه مقادیر پارامتر رو بهش ارسال و اجرا کنید.

در مورد جستجوی پیشرفته (منظور select بر حسب شرایط متفاوت) قبلا آموزش داده شده و میتونید هم در برنامه کوئری رو بسازید و اجرا کنید(داینامیک کوئری) و هم به صورت storedprocedure این کار رو انجام بدید و هم توسط LINQ قابل پیاده سازی هست(در مورد هر سه نوع آموزش دادم)


بهتره یک پروژه چند لایه سبک ایجاد کنید و اینجا قرار بدید. سوالتون رو واضح و مختصر بیان کنید تا اشکالات برطرف و بهینه سازی های لازم رو در حد توان روی کد شما انجام بدیم.

sohil_ww
جمعه 26 اردیبهشت 1393, 10:26 صبح
مرسی ممنون محمد جان حقیقتش نمی دونستم اسم تایپیک چی بزارم و این گونه نوشتم
در مورد سئوالم بیشتر توضیح بدم که من می خوام مقادبری که فقط تغییر می کنن آپدیت بشن و خوب می دونم مقدار قدیم و جدید باید با هم بررسی بشه خوب بزارید کاری که خودم کردم و یکم توضیح بدم
من رو فرمم چند تا کنترل از قبیل دو تکس باکس و. یک چکس باکس دارم و این کنترل ها مقادیرشون رو از بانک می گیرن وقتی کاربر برای مثال میاد تکس باکس اول منو ویرایش می کنه و به دو کنترل دیگه رویه فرم کار نداره تو حالت عادی ما میام هر سه مقدار و با دستور آپدیتمون پاس می دیم به sql که خوب عمل آپدیت انجام میشه ولی یه کار قشنگ تر و بهینه تر اینه که فقط مقدار اون تکس باکسی که تغییر کرده به بانکمون پاس داده بشه و دو فیلد دیگه تغیر داده نشه من برای بدست آوردن این مقادیر کنترل ها رو پاس می دادم و این مقادیرو بدست می آوردم به همین دلیل که کنترل پاس می دم برام جالب نبود دنبال روش بهتری بودم برای مثال اگه یه اشاره گر می شد به یه کنترل نسبت داد و با اون کار کرد قشنگ تر باشه ولی من نتونستم پیاده سازیش کنم و شایدم اصلا اشتباه باشه به همین دلیل از دوستان کمک می خوام تا ایده های خودشان رو با من در میان بگذارن
با تشکر سهیل

khokhan
جمعه 26 اردیبهشت 1393, 12:36 عصر
مرسی ممنون محمد جان حقیقتش نمی دونستم اسم تایپیک چی بزارم و این گونه نوشتم
در مورد سئوالم بیشتر توضیح بدم که من می خوام مقادبری که فقط تغییر می کنن آپدیت بشن و خوب می دونم مقدار قدیم و جدید باید با هم بررسی بشه خوب بزارید کاری که خودم کردم و یکم توضیح بدم
من رو فرمم چند تا کنترل از قبیل دو تکس باکس و. یک چکس باکس دارم و این کنترل ها مقادیرشون رو از بانک می گیرن وقتی کاربر برای مثال میاد تکس باکس اول منو ویرایش می کنه و به دو کنترل دیگه رویه فرم کار نداره تو حالت عادی ما میام هر سه مقدار و با دستور آپدیتمون پاس می دیم به sql که خوب عمل آپدیت انجام میشه ولی یه کار قشنگ تر و بهینه تر اینه که فقط مقدار اون تکس باکسی که تغییر کرده به بانکمون پاس داده بشه و دو فیلد دیگه تغیر داده نشه من برای بدست آوردن این مقادیر کنترل ها رو پاس می دادم و این مقادیرو بدست می آوردم به همین دلیل که کنترل پاس می دم برام جالب نبود دنبال روش بهتری بودم برای مثال اگه یه اشاره گر می شد به یه کنترل نسبت داد و با اون کار کرد قشنگ تر باشه ولی من نتونستم پیاده سازیش کنم و شایدم اصلا اشتباه باشه به همین دلیل از دوستان کمک می خوام تا ایده های خودشان رو با من در میان بگذارن
با تشکر سهیل
با سلام
هرکنترلی که مقدارش تغییر کرد رنگ پس زمینه اش هم تغییر کنه ویااینکه رنگ متنش تغییر کنه و به رنگ قرمز در بیاد وبعدشرط بگذارین که عمل بروز آوری تنها برای کنترلهایی که به فرض رنگ پس زمینه اونها قرمز شده انجام پذیرد :لبخند::متفکر:

sohil_ww
جمعه 26 اردیبهشت 1393, 14:47 عصر
اینم ایده ای خوبیه
البته فکر کنم دیتا بایند بشه به تکس باکس رنگ کنترل تغییر می کنه البته بعد بایند شدن میشه چک کرد
استاد می شه یه اشاره گر به یه کنترل نسبت داد ؟