# Native Code > برنامه نویسی در Delphi > بانک های اطلاعاتی در Delphi >  RECORD LOCK

## ealvandi

با سلام خدمت دوستان برنامه نویس

چند مدتی هست که من و تنی چند از دوستان به دنبال جلوگیری از ویرایش یک رکورد همزان توسط 2 کاربر به دنبال راه حل مناسب ویا غیر مناسب برای قفل کردن رکورد توسط ADOهستیم. باید بگم که تمامی سایت رو چند بار جستجو کردیم دوستان یک سری راهنمایی هایی کردن ولی با وجود تلاشمان به جواب درستی نرسیدیم . این قطعه کد برای من و دوستانم ارزش زیادی داره از دوستان و بزرگواران اگه کسی راهنمایی و یا قطعه کد آماده ای داره لطفا کمکمون کنه . باشد که بتونم روزی جبران کنم. 

با تشکر از همه دوستان.

----------


## Batman

با سلام
دوست عزیز ممکنه بیشتر توضیح بدید و در ضمن فکر نمیکنم دیتابیسها امکان اجازه ویرایش یک رکورد رو حداقل در یک لحظه به دو کاربر که همزمان درخواست داده باشند بده مطمئنا یکی از درخواستها اولویت دار خواهدبود
موفق باشید

----------


## babak869

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

----------


## حمیدرضاصادقیان

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

----------


## Batman

خوب پس مشکل کجاست دیگه؟

----------


## ealvandi

> دیتابیسها امکان اجازه ویرایش یک رکورد رو حداقل در یک لحظه به دو کاربر که همزمان درخواست داده باشند


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

تو تاپیک های گذشته بچه ها پیشنهاد استفاده از خاصیت locktype در adotable رو  دادن ولی من نتونستم جواب بگیرم . آیا کسی تونسته باهاش کار کنه ؟

----------


## vcldeveloper

> اجازه متد edit روبه user دوم میده ولی اجازه ذخیره رو نمیده . من میخوام اجازه اجرای متد edit رو به کاربر دوم که میخواد همزمان رکورد رو ویرایش کنه ندم.


چه نیازی هست که حتما در زمان Edit جلوی کاربر را بگیره؟! شاید قبل از پایان یافتن Edit توسط کاربر دوم، کاربر اول کارش را با رکورد مربوطه تمام کرده باشد.
در هر حال، LockType به شما کمک میکنه که در صورتی که رکورد در حال ویرایش توسط کاربر است، کاربر دوم نتواند تغییرات خود را در آن ثبت کند، LockType در لحظه شروع به ویرایش کردن کاربر دوم، موجب عکس العمل نمی شود، چون باید داده ها به بانک ارسال بشه، که بانک بفهمه ویرایشی صورت گرفته، تا قبل از آن که بانک اطلاعی از ویرایش رکورد توسط کاربر دوم ندارد تا مانع از آن شود.

----------


## ealvandi

> چه نیازی هست که حتما در زمان Edit جلوی کاربر را بگیره؟!


چون کاربر دوم بدونه که این رکورد در حال ویرایشه و ممکنه اطلاعاتش تغییر کنه در اینصورت نه وقتش رو تلف میکنه و احتمال تلاقی اطلاعات از بین میره.




> شاید قبل از پایان یافتن Edit توسط کاربر دوم، کاربر اول کارش را با رکورد مربوطه تمام کرده باشد.


در این صورت کاربر دوم نباید اطلاعاتش ذخیره بشه و خود sql server هم اجازه ثبت نمیده 

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



کسی راه حلی برای این موضوع داره ؟  لطفا نظر بدید.

----------


## ealvandi

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


ممنون از راهنماییتون ، من فکر میکنم کار پر هزینه ای باشه .

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

نظر بقیه در این باره چیه ؟

----------


## ealvandi

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


ممنون از راهنماییتون ، من فکر میکنم کار پر هزینه ای باشه .

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

نظر بقیه در این باره چیه ؟

----------


## SYNDROME

با سلام



> فکر میکنم اگه جلوی ورود کاربر دوم به حالت edit رو بگیریم بهتر باشه.


اشاره نکردید با چه روشی می خواهید بفهمید که رکورد در حال ویرایش است.
موفق باشید

----------


## ms_mohaghegh

روشی که آقای صادقیان (پست #4) معرفی کرده به نظر بهترین روش میاد. فقط یه موضوع می مونه اونم اینه که اگه یه برنامه به صورت ناقص خارج بشه (مثلاً End Process بشه) رکورد درج شده توی جدول پاک نشده باقی می مونه.
من پیشنهاد می کنم رکورد ایجاد شده توی این جدول، حالت session داشته باشه و بعد از گذشت مدت معینی expire بشه. یعنی مثلاً بعد از گذشت 10 دقیقه از ورود به حالت Edit یا Insert ، رکورد درج شده توی اون جدول به طور خودکار حذف بشه. برای این کار می شه یه فیلد از نوع DateTime به جدول اضافه کرد تا زمان آغاز Edit (زمان درج رکورد) در اون ذخیره بشه، بعد با یه Timer توی برنامه دنبال رکوردهایی توی جدولمون بگردیم که فاصله ی زمان جاری از زمان درجشون بزرگتر از 10 دقیقه باشه و پس از خارج کردن جدول های مربوطه از حال edit، اونا رو Delete کنیم؛ البته قبلش یه پیغام هشدار برای کاربر نمایش بدیم تا اگه خواست session رو تمدید کنه.

----------


## SYNDROME

با سلام
ولی به این هم دقت کن اگر من در دقیقه 1 به صورت ناقص خار ج شوم تا 9 دقیقه هیچ کس نمی تواند رکورد مورد نظر را ویرایش کند.
موفق باشید

----------


## ms_mohaghegh

اگه همچین کاری انجام نشه، خارج کردن رکورد از وضعیت edit وظیفه ی کیه؟ می تونی به من بگی اونوقت تا چند دقیقه هیچ کس نمی تونه رکورد مورد نظر رو ویرایش کنه؟ من جوابشو می گم: "_تا وقتی که یه مدیر با فکر پیدا بشه و دستی این کارو انجام بده!_" . خوش بینانه ش میشه 10 دقیقه بعد. تازه ممکنه وقتی دستی این کارو انجام میده یه بنده خدایی با یه user دیگه در حال edit همون رکورد باشه. و بدین ترتیب احتمال حال گیری بالا می رود :اشتباه: .

----------


## SYNDROME

با سلام



> اگه همچین کاری انجام نشه، خارج کردن رکورد از وضعیت edit وظیفه ی کیه؟ می تونی به من بگی اونوقت تا چند دقیقه هیچ کس نمی تونه رکورد مورد نظر رو ویرایش کنه؟


من نمی گویم 10 دقیقه کم یا زیاد است می گویم روش چندان جالب نیست.
شما باید به صورت یکنواخت روی بانک Queryبزنید تا وضعیت مشخص شود.
موفق باشید.

----------


## mehdi_mohamadi

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


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

----------


## حمیدرضاصادقیان

سلام.شما میتونید مثل من یک جدول قرار بدید تمام رکوردهای قفل شده رو در برنامه نشون بدید و با یک دکمه اون رکورد رو ازاد کنید.حتی من یک کار دیگه هم کردم.که اگر کاربر دوباره با user خودش وارد برنامه بشه و دوباره خارج بشه تمام رکوردهای قفل شده توسط اون کاربر آزاد خواهد شد.من تاحالا به مشکلی برنخوردم که بگن ما در شبکه مشکل داریم.به راحتی هم دارن کار میکنن.

----------


## حمیدرضاصادقیان

> سلام دوست عزیز
> حالا اگه چندین کاربر همزمان یک رکورد را انتخاب کردن اون وقت راه حل چیه !!!...
> یا اگه وقفه ای در هنگام این عملیات رخ بده و دستوراتت به طور کامل اجرا نشه چی اتفاقی می افته؟؟؟!!!
> با عرض معذرت ولی فکر می کنم این راه منطقی نباشه


ببخشید حتی اگر 10 کاربر باهم همزمان بخوان یک رکورد رو اصلاح کنند.خلاصه در یک دهم ثانیه اختلاف وجود داره.در همین یک دهم رکورد توسط یک کاربر فقط قفل خواهد شد.  در مورد قفل شدن رکورد  توضیح دادم .در ضمن من تا وقتی کاربر دکمه تائید رو نزند در دیتابیس تغییری نمیدم.

----------


## mehdi_mohamadi

ما نیاز به یک تابع داریم که وقتی می خواهیم عملیات ویرایش را انجام بدیم به ما بگه که رکورد مورد نظر در حال ویرایش است و وارد یه حلقه بشه و تا زمانی که عملیات ویرایش (که حداکثر چند ثانیه بیشتر طول نمی کشه) تمام نشده سیستم منتظر بمونه و بلافاصله بعد از اتمام حلقه, عملیات ویرایش را انجام بده
------------------------------------
موفق باشید

----------


## حمیدرضاصادقیان

> ما نیاز به یک تابع داریم که وقتی می خواهیم عملیات ویرایش را انجام بدیم به ما بگه که رکورد مورد نظر در حال ویرایش است و وارد یه حلقه بشه و تا زمانی که عملیات ویرایش (که حداکثر چند ثانیه بیشتر طول نمی کشه) تمام نشده سیستم منتظر بمونه و بلافاصله بعد از اتمام حلقه, عملیات ویرایش را انجام بده
> ------------------------------------
> موفق باشید


ببخشید ولی دائم باید یک حلقه باشه و یک سربار الکی روی سیستم میاد.به نظر روش جالبی نیست.

----------


## mehdi_mohamadi

> ببخشید ولی دائم باید یک حلقه باشه و یک سربار الکی روی سیستم میاد.به نظر روش جالبی نیست.


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

----------


## ms_mohaghegh

فکر می کنم کافیه درست قبل از Edit ، توی جدولمون بگردیم و اگه اون رکورد در حال Edit بود به کاربر بگیم که چند لحظه بعد دوباره تلاش کنه.

----------


## SYNDROME

با سلام
این لینک را نگاه کنید.یکی از دوستانمان روش خوبی بیان کرده است.(Mzjahromi)
https://barnamenevis.org/showth...light=LockType
موفق باشید

----------


## ealvandi

یک راه به ذهن خودم رسید البته یک ممکنه مشکلاتی هم داشته باشه در هر حال مطرح میکنم شما هم  مشکلاتش رو بررسی کنید و نظر بدید

ساختار رکوردمون رو به 3 قسمت تقسیم میکنیم .  1 - داده ها  2 - فیلدی به نام lock که نشاندهنده قفل بودن رکورده 3- آدرس ip کاربری که در حال کار با رکورده

تو این روش کاربری که  میخواد با رکورد کار کنه هنگام ورود lock رو مقدار دهی میکنه (قفل میکنه)   بعد آدرس ip خودش رو توفیلد ip ثبت میکنه .

حالا هر کاربری که و بخواد رکورد رو ویرایش کنه با دیدن lock بودن رکورد پیغام مورد نظر رو میبینه و ...

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


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

----------


## SYNDROME

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


شما در این حالت کامپیوتر را Pingمی کنید.
شاید برنامه را به وسیله TaskManager یا هر روش غیر معمول دیگر بسته باشد.
آن وقط چه کار می کنید.(کامپیوتر Ping می شود ولی برنامه بسته شده است)؟
موفق باشید

----------


## mehdi_mohamadi

> یک راه به ذهن خودم رسید البته یک ممکنه مشکلاتی هم داشته باشه در هر حال مطرح میکنم شما هم مشکلاتش رو بررسی کنید و نظر بدید
> 
> ساختار رکوردمون رو به 3 قسمت تقسیم میکنیم . 1 - داده ها 2 - فیلدی به نام lock که نشاندهنده قفل بودن رکورده 3- آدرس ip کاربری که در حال کار با رکورده
> 
> تو این روش کاربری که میخواد با رکورد کار کنه هنگام ورود lock رو مقدار دهی میکنه (قفل میکنه) بعد آدرس ip خودش رو توفیلد ip ثبت میکنه .
> 
> حالا هر کاربری که و بخواد رکورد رو ویرایش کنه با دیدن lock بودن رکورد پیغام مورد نظر رو میبینه و ...
> 
> حالا اگه احتمال ریست شدن کاربر اول باشه یا قطع شدن شبکه و یا هر دلیل دیگه برای اینکه رکورد با مشکلی برخورد نکنه برای بررسی صحت حضور کاربر اول بر اساس آدرس Ip کاربر اول که در رکورد ذخیره شده عمل پینگ رو انجام میده حالا اگه کاربر اول حاضر بود که باز باید فعلا بی خیال رکورد شه و در غیر اینصورت خودش وارد رکورد مشه و آدرس ip خودش رو ثبت میکنه و با رکورد کار میکنه و بقیه ماجرا ....
> ...


حتما" این کار را انجام بدید

----------


## ealvandi

> شاید برنامه را به وسیله TaskManager یا هر روش غیر معمول دیگر بسته باشد.


بله این مشکل وجود داره ، باید کاری شبیه به پینک مختص برنامه نوشت ؛ آیا کسی راهی  سراغ داره ؟ البته احتمالا با  indy بشه این کار رو کرد ولی  شاید راه درستی نباشه . 
لطفا نظر بدید .

----------


## SYNDROME

با سلام



> حتما" این کار را انجام بدید


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

----------


## ealvandi

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


پس لطفا شما یه راه پیش روی ما بزارید

----------


## SYNDROME

با سلام



> پس لطفا شما یه راه پیش روی ما بزارید


راه حلهای گفته شده در بالا همگی قابل استفاده هستند ولی هر کدام مشکلاتی را دارند.
شما می توانید از LockTypeاستفاده کنید .
یا از لینکی که در بالا قرار داده ام استفاده کنید.(البته روش فوق را من به صورت کامل تست نکرده ام)
موفق باشید

----------


## ealvandi

> شما می توانید از LockTypeاستفاده کنید .


والا به خدا این locktype جد و آباد ما رو در آورده ، تو هر تاپیکی هر کسی چیزی ازش گفته ولی نه تکمیل و نه تست شده جواب دادن . 

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

به امید کمکتون.

----------


## vcldeveloper

> والا به خدا این locktype جد و آباد ما رو در آورده ، تو هر تاپیکی هر کسی چیزی ازش گفته ولی نه تکمیل و نه تست شده جواب دادن .


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

----------


## SYNDROME

با سلام



> والا به خدا این locktype جد و آباد ما رو در آورده ، تو هر تاپیکی هر کسی چیزی ازش گفته ولی نه تکمیل و نه تست شده جواب دادن . 
> شما را به خدا اگه کد آماده دارید و یا منبع جامعی در اختیار دارید بدید ( یا فی سبیل الله و یا پولی) و این بحث رو که هیچ موقع تکمیل نشده رو تمومش کنید. با تشکر از لطفتون . 
> به امید کمکتون.


در رابطه با LockTyprکه علی آقا گفت.
ولی شاید با دستور SQL یک یا چند رکورد را قفل می کند کارتان راه بیفتد.(در لینک مورد نظر آقا جهرمی توضیح داده اند.)ولی باز هم می گویم بنده تست نکردم تا ببینم چجوری است.خودتان یک نگاه بیندازید
موفق باشید

----------


## ealvandi

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





> در رابطه با LockTyprکه علی آقا گفت.
> ولی شاید با دستور SQL یک یا چند رکورد را قفل می کند کارتان راه بیفتد.(در لینک مورد نظر آقا جهرمی توضیح داده اند.)ولی باز هم می گویم بنده تست نکردم تا ببینم چجوری است.خودتان یک نگاه بیندازید
> موفق باشید


آیا شما تا به حال با این مشکل برخوردید ؟ اگه برخوردید چه جوری حلش کردید ؟

----------


## SYNDROME

با سلام



> آیا شما تا به حال با این مشکل برخوردید ؟ اگه برخوردید چه جوری حلش کردید ؟


خود من هم همین الان درگیر این موضوع هستم و به دنبال یک روش کارامد برای حل مشکل هستم که احتمال خطا کمتر باشد.
همین جوری که در بالا دیدیم می خواهم از یکی از روشهای فوق استفاده کنم(همچنان در حال تست در حالتهای مختلف هستم که کدام حالت برای من مناسبتر است)
موفق باشید

----------


## ealvandi

> خود من هم همین الان درگیر این موضوع هستم و به دنبال یک روش کارامد برای حل مشکل هستم که احتمال خطا کمتر باشد.
> همین جوری که در بالا دیدیم می خواهم از یکی از روشهای فوق استفاده کنم(همچنان در حال تست در حالتهای مختلف هستم که کدام حالت برای من مناسبتر است)


انشا الله موفق باشید. لطفا اگه به جواب رسیدید به ما هم راه حل رو بگید.

----------


## ealvandi

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

----------

