PDA

View Full Version : شمارنده ی همزمان!



likemoon
شنبه 24 فروردین 1392, 20:50 عصر
سلام
یک برنامه دارم که به شبکه وصله و همزمان چندین کامپیوتر ازش استفاده میکنن، یک فیلدی وجود داره که با ثبت هر درخواست یک کد منحصر به فرد بهش تعلق میگیره (بنا به دلایلی اتونامبر نیست و هر بار شماره قبلی رو میگیره و یکی بهش اضافه میکنه) حالا مشکلی که بوجود اومده اینه که اگر دو نفر از دو قسمت همزمان درخواستی رو ثبت کنند، شماره ی یکسان بشون اختصاص داده میشه و کلا به همین دلیل همه چیز به هم ریخته و منم فرصت زیادی برای رفع این مشکل ندارم :( لطفا یک راهکار ارائه بدید.

likemoon
شنبه 24 فروردین 1392, 20:50 عصر
راستی بانکم sql هست

h_a_m_i_d
شنبه 24 فروردین 1392, 21:15 عصر
دوست عزیز راستش اونقدر زیاد منظورتونو متوجه نشدم
ولی بهترین راه استفاده از یک صف ساده هست
یعنی هر کامپیوتر که درخواست میفرسته اول وارد صف میشه مثلا 20 تا کامپیوتر همزمان درخواست میفرسته
به ترتیب وارد صف میشن مثلا یک لیست باکس هست و فقط اسم کامپیوترها رو ذخیره میکنه حالا به ترتیب شماره میده به هرکدوم

likemoon
شنبه 24 فروردین 1392, 22:58 عصر
شما فکر کنید به ازای هر کلیک روی دکمه ثبت، شمارنده ی من یکی میره جلو، حالا حساب کنید دو تا کاربر از دو کامپیوتر دقیقا در یک لحظه روی ثبت کلیک میکنند، اینجا شمارنده به هر دو یک عدد رو اختصاص میده، که این باعث میشه اختلال بوجود بیاد و کل آمار رو به هم میریزه، می خوام این مشکل رفع بشه، نمی خوام هیچ دو ثبتی یک شماره داشته باشن

linux
شنبه 24 فروردین 1392, 23:17 عصر
سلام
یک برنامه دارم که به شبکه وصله و همزمان چندین کامپیوتر ازش استفاده میکنن، یک فیلدی وجود داره که با ثبت هر درخواست یک کد منحصر به فرد بهش تعلق میگیره (بنا به دلایلی اتونامبر نیست و هر بار شماره قبلی رو میگیره و یکی بهش اضافه میکنه) حالا مشکلی که بوجود اومده اینه که اگر دو نفر از دو قسمت همزمان درخواستی رو ثبت کنند، شماره ی یکسان بشون اختصاص داده میشه و کلا به همین دلیل همه چیز به هم ریخته و منم فرصت زیادی برای رفع این مشکل ندارم :( لطفا یک راهکار ارائه بدید.
بخاطر همین مشکلات احتمالی همیشه توصیه میشود که این وظیفه بر عهده sql قرار بگیرد.
به هر حال با تراکنشها می‌توانید تا حدودی این مشکل را حل کنید. باز آنهم مشکلات خودش را خواهد داشت.

likemoon
شنبه 24 فروردین 1392, 23:40 عصر
منظورتون همون اتونامبر کردن؟ امکانش نیست، برنامه ی پیچیده اییه، من در واقع یک اتونامبر دارم تو جدول که ID هست، و این فیلد در واقع یکجور کد اسمیه و سال به سال باید ریست بشه، به خاطر همین خودم براش شمارنده گذاشتم

nokhodsiah2001
شنبه 24 فروردین 1392, 23:45 عصر
درود بر شما

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

پیروز باشید

davood-ahmadi
یک شنبه 25 فروردین 1392, 09:13 صبح
سلام
من تا حالا به این مشکل برنخورده بودم.
من هم از اتونامبر استفاده نمی کنم.
با اینکه 6 تا 7 کاربر هم اطلاعات وارد کردند ولی همچین مشکلی نخوردم.
من فکر کنم یکی از طراحی شما مشکل داره یا:
1- طراحی بانک اطلاعتی
2- طراحی اینترفیس ( فرم ورود اطلاعات )
3- هر دو گزینه بانک اطلاعاتی و اینترفیس

من خودم اینگونه عمل می کنم که زمانی که کاربر دکمه ثبت رو زد ، یک sp نوشتم که آخرین شماره رو بدست میاره و بعد اطلاعات رو ثبت می کنه و بعد از ثبت اطلاعات لاگ هم می اندازه.

likemoon
سه شنبه 27 فروردین 1392, 09:58 صبح
یک sp نوشتم که شماره ماکزیمم رو میگیره و یکی اضافه میکنه، مشکلم فعلا حل شده و گزارش خرابی نداشتم

gilsoft
چهارشنبه 28 فروردین 1392, 08:23 صبح
سلام دوست عزيز

به نظر من شما عدد (كد منحصر به فرد) مورد نظر تون رو بايد هنگام كليك كردن روي باتن ثبت (آخرين مرحله) ايجاد كنيد نه اول كار ...

يعني وقتي كاربر اطلاعات مورد نظر رو وارد كرد و در آخر با زدن كليد (ثبت) ميخواد اونو ثبت كنه ..... اون موقع بايد اين عدد مورد نظر توليد بشه ..

(من هم تو تمام برنامه هاي تحت شبكه از اين روش استفاده مي‌كنم و تاكنون خدا را شكر .. خوب جواب داد)

اميدوارم كه تونسته باشم منظورم رو به شما برسونم ...