PDA

View Full Version : سوال: اطلاعات را در کجا ذخیره کنم؟



ostovarit
سه شنبه 11 خرداد 1389, 17:10 عصر
با سلام و خسته نباشید

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

این کار رو من با یک تیبل در دیتابیس انجام دادم اما باید 100 تا query بنویسیم که مطلوب نیست ...

سوال من این هست که اطلاعات را در کجا ذخیره کنم که فقط تا زمان باز بودن صفحه در دسترس باشند و نیازی به نوشتن چند query برای ورود و حذف اطلاعات نداشته باشد ؟

Datatable , dataset , hashtable , ArrayList و...

نمونه کد ، نظرات پیشنهادات و ... خود را بفرمایید


توضیحات بیشتر:
من در قسمت فاکتورهام لیستی از کالا و تعدادشون رو میگیرم حالا در زمان ویرایش فاکتور کاربر در گرید تعداد کالا رو تغییر میده و ممکنه چند تا ردیف رو ویرایش کنه در نهایت با فشار دادن کلید ثبت تمامی اطلاعات سفارش ویرایش میشه تا اینجا مشکلی نیست اما حالا باید تعداد کالا رو در جدول کالا ها ویرایش کنم پس باید ببینم کاربر در زمان ویرایش تعداد کدوم کالا رو کم کرده یا زیاد و به چه میزان پس یک جدولی میخوام که نام کالا و تعداد کم شدن یا زیاد شدن کالا رو درش ذخیره کنه بعد از فشار دادن کلید ویرایش اون کالاها رو در جدول کالا پیدا و مقادیر کم شده یا زیاد شده رو اعمال کنه ...

sds1920
سه شنبه 11 خرداد 1389, 18:20 عصر
اگه مي خواي اطلاعاتت ذخيره بشه از فايل.در غير اينصورت stream بايد گزينه مناسبي باشه.

ostovarit
سه شنبه 11 خرداد 1389, 18:47 عصر
اگه مي خواي اطلاعاتت ذخيره بشه از فايل.در غير اينصورت stream بايد گزينه مناسبي باشه.

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

ولی چیزی مثل هش تیبل مناسب تره اما یک مشکل داره اونم این که اگر کلیدها برابر باشن ارور میده تست کردم به کارم نیومد

الان دارم رو آرایه دو بعدی کار میکنم فک کنم جواب بده ولی همچنان نظرات و پیشنهادات و راهنمایی های شما رو لازم دارم

sds1920
سه شنبه 11 خرداد 1389, 19:05 عصر
اگه دقيقا مي گفتي چه اطلاعاتي هست شايد بهتر مي شد كمكت كنيم.

s.khoshfekran
سه شنبه 11 خرداد 1389, 19:59 عصر
اول برنامه اطلاعات رو بریز تو DataTable و هر تغییری می خوای بده (ویرایش و حذف و ...) تا زمانی از متد Update() واسه DataAdapter استفاده نکنی اطلاعات به دیتابیس منعکس نمیشه!!

ostovarit
سه شنبه 11 خرداد 1389, 20:01 عصر
اگه دقيقا مي گفتي چه اطلاعاتي هست شايد بهتر مي شد كمكت كنيم.

نام کالا و تعداد کالایی که در زمان ویرایش کم یا زیاد میشه ...
من در قسمت فاکتورهام لیستی از کالا و تعدادشون رو میگیرم حالا در زمان ویرایش فاکتور کاربر در گرید تعداد کالا رو تغییر میده و ممکنه چند تا ردیف رو ویرایش کنه در نهایت با فشار دادن کلید ثبت تمامی اطلاعات سفارش ویرایش میشه تا اینجا مشکلی نیست اما حالا باید تعداد کالا رو در جدول کالا ها ویرایش کنم پس باید ببینم کاربر در زمان ویرایش تعداد کدوم کالا رو کم کرده یا زیاد و به چه میزان پس یک جدولی میخوام که نام کالا و تعداد کم شدن یا زیاد شدن کالا رو درش ذخیره کنه بعد از فشار دادن کلید ویرایش اون کالاها رو در جدول کالا پیدا و مقادیر کم شده یا زیاد شده رو اعمال کنه ...

هش تیبل جواب نداد چون باید نام کالا یکتا باشه در صورتی که ممکنه دوتا کالا هم نام در گرید باشه و جفتش ویرایش بشه ...

در دیتابیس هم نمیخوام ذخیره کنم چون باید 6-7 تا کوئری برای ریختن و خوندن و مقایسه و ... بزنم

دارم رو ارایه کار میکنم ولی اگر روشی به نظرت میرسه بگی ممنونت میشم

ostovarit
سه شنبه 11 خرداد 1389, 20:06 عصر
اول برنامه اطلاعات رو بریز تو DataTable و هر تغییری می خوای بده (ویرایش و حذف و ...) تا زمانی از متد Update() واسه DataAdapter استفاده نکنی اطلاعات به دیتابیس منعکس نمیشه!!


چون اطلاعات دو تا تیبل در زمان ویرایش باید تغییر کنه با تیبل اصلی مشکلی ندارم و با روش شما ذخیره میشه میخوام حالا تغییرات رو به تیبل دیگه ای هم اعمال کنم

من سوال رو ویرایش کردم توضیحات بیشتری دادم لطفا یک بار دیگه مطالعه بفرمایید نظرتون رو بگید

با تشکر

s.khoshfekran
سه شنبه 11 خرداد 1389, 20:22 عصر
میخوای تغییراتی که تو Table1 ایجاد میشه تو Table2 ذخیره کنی؟؟

ostovarit
سه شنبه 11 خرداد 1389, 20:34 عصر
میخوای تغییراتی که تو Table1 ایجاد میشه تو Table2 ذخیره کنی؟؟

تغییرات میشه نام کالا تعداد قیمت و ... اینا تو خود همون table1 ذخیره میشه با همون روشی که شما گفتی da.update ... حالا تنها چیزی اینجا مسئله ساز هست واسم تعداد کالا هست یک بار فاکتور صادر شده مثلا ده تا از یک نوع کالا از انبار کسر شده حالا کاربر اومده ویرایش کرده 10 رو کرده 7 به جز اینکه در تیبل اول که همون تیبل فاکتور هست باید ذخیره بشه (که تا اینجاش مشکلی نیست) باید تعداد سه تا به موجودی اون کالا هم اضافه بشه برای این منظور من یک جایی میخوام نام کالا و مقداری که از تعداد سفارش داده شده کسر یا اضافه شده رو ذخیره کنم و در نهایت با فشار دادن کلیک ویرایش اون کالا رو از جدول کالاها پیدا کنم و تعداد رو بهش کسر یا اضافه کنم ...

اگر در هر بار ویرایش فقط یک کالا ویرایش میشد این کار رو همون لحظه انجام میدادم و مشکلی نبود اما ممکنه کاربر دو سه ردیف رو ویرایش کنه پس باید اول مقادیر ویرایش رو جایی داشته باشم که به جز تیبل اول تیبل دوم رو هم بتونم تغییر بدم

خودم به این نتیجه رسیدم که با دو تا ArrayList این کار رو بکنم اگر روش بهتری نباشه

s.khoshfekran
سه شنبه 11 خرداد 1389, 20:41 عصر
dv.RowStateFilter = DataViewRowState.ModifiedOriginal;

این دستور اطلاعاتی که تغییر نکرده اند رو فیلتر میکنه بعد هرم کاری که خواستی میتونی انجام بدی!

ostovarit
سه شنبه 11 خرداد 1389, 21:18 عصر
dv.RowStateFilter = DataViewRowState.ModifiedOriginal;
این دستور اطلاعاتی که تغییر نکرده اند رو فیلتر میکنه بعد هرم کاری که خواستی میتونی انجام بدی!

بازم یک مشکلی هست تا اینجا تمام رکوردهایی که ویرایش شده نمایش داده شد این خیلی خوبه ...

اما وقتی تعداد کالا رو زیاد یا کم میکنه این میزان تفاوت رو چه جوری من به تعداد موجودی کالا در جدول کالاها اعمال کنم

یعنی وقتی در ابتدای ده تا کالا در زمان صدور فاکتور کسر شده و بعد فاکتور ویرایش شد و 7تا شد من چه جوری عدد 3 رو بدست بیارم که به تعداد موجودی کالام اضافه کنم !

s.khoshfekran
سه شنبه 11 خرداد 1389, 21:53 عصر
int x = (int)dt.Rows[1][1, DataRowVersion.Original] - (int)dt.Rows[1][1, DataRowVersion.Current];

ostovarit
چهارشنبه 12 خرداد 1389, 01:02 صبح
int x = (int)dt.Rows[1][1, DataRowVersion.Original] - (int)dt.Rows[1][1, DataRowVersion.Current];


خدا خیرت بده دقیقا به همون چیزی که میخواستم رسیدم.