PDA

View Full Version : شماره سریال منحصر به فرد در یک جدول



Mohammad_Mnt
یک شنبه 18 دی 1384, 17:37 عصر
من یک جدول دارم که یه فیلد شماره سریال داره که بنا به دلایلی نباید AutoInc باشه . این برنامه زیر شبکه کار می کنه و ممکنه 20 تا کاربر با هم بخوان به این جدول رکورد اضافه کنن .
در ضمن من قبل از اضافه شدن رکورد ها باید شماره سریال رو به کاربر نشون بدم
من چه کار کنم که تداخل شماره سریال برای کاربر های مختلف پیش نیاد ؟

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

Bahmany
یک شنبه 18 دی 1384, 20:57 عصر
به نظر شما استفاده از Guid ها چطوره ؟؟!!

Bahmany
یک شنبه 18 دی 1384, 20:58 عصر
البته با چند خط کد میتوانید Guid ها رو کوتاه یا مختصرتر کنید

Mohammad_Mnt
دوشنبه 19 دی 1384, 10:18 صبح
عرض کردم که این فیلد " شماره سریال " است و از نوع Integer . نمی شه که مثلا شماره سریال فاکتور این باشه که : sdcsd-r432f4f-f42f-34f2 !!!

admiral
دوشنبه 19 دی 1384, 20:41 عصر
میتونید دو تا فیلد رو با هم کلید بگیرید یکی
autonumber
و دیگری رو کاربر وارد کنه

mzjahromi
دوشنبه 19 دی 1384, 21:08 عصر
این همون مساله ای هست که تو سیستم عامل مطرح هست و بحث ناحیه بحرانی سمافور و ... مطرح میشه.
من این مشکل رو برای برنامه 3 لایه خودم با سمافور حل کردم (البته یه مشکل دارم) ولی برای حالت دو لایه(حالتی که شما می گید) چه کار باید کرد؟؟؟؟ شاید مجبور باشیم مفاهیم سیستم عامل رو پیاده سازی کنیم؟ کسی از دوستان تو این زمینه کار کرده؟

hr110
سه شنبه 20 دی 1384, 12:48 عصر
از timestamp استفاده کنید.

mzjahromi
سه شنبه 20 دی 1384, 12:51 عصر
از timestamp استفاده کنید.
میشه بیشتر توضیح بدید.

Mohammad_Mnt
سه شنبه 20 دی 1384, 13:49 عصر
از timestamp استفاده کنید.
آقای ربیعی ، این فیلد نباید به صورت خودکار اضافه بشه . چون یکی ممکنه تا فاکتور شماره 120 بیاد و بخواد شماره بعدی فاکتورش 250 باشه . اون موقع باید چه کار کرد ؟

JavanSoft
سه شنبه 20 دی 1384, 13:55 عصر
سلام
اگر ممکن است کامل صورت مساله را توضیح دهید

Mohammad_Mnt
سه شنبه 20 دی 1384, 14:05 عصر
من یه برنامه حسابداری زیر شبکه دارم که سند حسابداری اتوماتیک می زنه . در ضمن سند حسابداری دستی هم می شه وارد کرد .
حالا فرض کنید که آخرین شماره سریال جدول سند حسابداری 100 است . یه کاربر داره سند دستی شماره 101 رو وترد می کنه و یک کاربر دیگه داره یه فاکتور فروش می زنه .
وقتی فاکتورفروش ثبت شد ، سند اتوماتیک شماره 101 زده می شه در حالی که کاربر اول داره سند حسابداری شماره 101 رو با یه اطلاعات دیگه پر میکنه !!!!

Mohammad_Mnt
چهارشنبه 21 دی 1384, 15:02 عصر
شرمنده ! این آف تاپیکه !

MiRHaDi
پنج شنبه 22 دی 1384, 04:36 صبح
سلام
میتونید محدوده کدی که برنامه میده رو تو یک رنجی بذارید که با محدوده ای که کاربر انتخاب میکنه فرق بکنه
میتونید قبل از اینکه یک دیتا رو بفرستید چک کنید که آیا همچین کدی هست یا نه ! واگر هست ...
میتونید تا فیلد کد رو کاربر انتخاب کرد اول یک رکورد با اون کد بسازید بعد اطلاعات رو بگیرید
و ...
اگه بازم مشکلی هست بفرمایید
بای

Mohammad_Mnt
پنج شنبه 22 دی 1384, 09:38 صبح
میتونید محدوده کدی که برنامه میده رو تو یک رنجی بذارید که با محدوده ای که کاربر انتخاب میکنه فرق بکنه

منظورتون رو متوجه نشدم !!!



میتونید قبل از اینکه یک دیتا رو بفرستید چک کنید که آیا همچین کدی هست یا نه ! واگر هست ...

مشکل همین جاست ! اگه دو کاربر به صورت همزمان چک کنن که همچین کدی هست یا نه ، کد هر دوشون یکی می شه !


میتونید تا فیلد کد رو کاربر انتخاب کرد اول یک رکورد با اون کد بسازید بعد اطلاعات رو بگیرید

این هم یه مشکل دیگه ! اگه توی این فاصله یه کاربر دیگه گزارش بگیره ، این رکورد ( که اطلاعات درستی هم نداره ) نمایش داده می شه

mzjahromi
پنج شنبه 22 دی 1384, 10:09 صبح
میتونید قبل از اینکه یک دیتا رو بفرستید چک کنید که آیا همچین کدی هست یا نه ! واگر هست ...
میتونید تا فیلد کد رو کاربر انتخاب کرد اول یک رکورد با اون کد بسازید بعد اطلاعات رو بگیرید

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


میتونید تا فیلد کد رو کاربر انتخاب کرد اول یک رکورد با اون کد بسازید بعد اطلاعات رو بگیرید

باز هم ممکنه دو تا رکورد با یک کد ایجاد بشن(همزمانی)

MiRHaDi
شنبه 24 دی 1384, 02:37 صبح
سلام
آقای جهرمی شما این ترم سیستم عامل ندارید ؟ :)
همزمانی تو کامپیوتر اصلا وجود نداره ! تو هیچ جا وجود نداره ! همیشه یکی از یکی جلوتره !
فقط مساله اینه که اگه تا جواب اون نیومده یکی دیگه درخواست کنه و تا قفل نشده جواب بعدی بیاد !!!!!
این چیزی که بالا نوشتم کار میکنه 100% اگه کدش رو دست بنویسید.
اگر خواستید این قسمت پروژه رو بدید شرکت ما انجام بده براتون
بای

mzjahromi
شنبه 24 دی 1384, 08:26 صبح
آقای جهرمی شما این ترم سیستم عامل ندارید ؟ :)

دوست عزیز من سیستم عامل رو سال 78 پاس کردم


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

می تونید پیشنهادتون رو به "محمد م" بدید.


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

همونی که شما می گید

Mohammad_Mnt
شنبه 24 دی 1384, 09:22 صبح
آقای میرهادی ، من که دلیل شکست روش تون رو گفتم . این روش جواب نمی ده عزیزم

Mohammad_Mnt
شنبه 24 دی 1384, 21:43 عصر
آقای وکیلی یه ترفندی گفتن که مشکلم حل شد . مرسی از همه

MiRHaDi
یک شنبه 25 دی 1384, 02:16 صبح
سلام

همونی که شما می گید

چشم ! مرسی .
بای

mzjahromi
یک شنبه 25 دی 1384, 10:04 صبح
آقای وکیلی یه ترفندی گفتن که مشکلم حل شد . مرسی از همه خصوصیه؟
نمیشه اونو اینجا بنویسید؟

Mohammad_Mnt
یک شنبه 25 دی 1384, 21:06 عصر
شاید این روش فقط برای من کاربرد داشته باشه
من سندهای دستی را توی محدوده ی 1 تا 10000 گذاشتم و سند هایی که توسط فاکتور فروش زده می شه رو توی محدوده ی 10000 تا 20000 و .....
این طوری مشکل تداخل پیش نمی آد

MiRHaDi
دوشنبه 26 دی 1384, 06:37 صبح
میتونید محدوده کدی که برنامه میده رو تو یک رنجی بذارید که با محدوده ای که کاربر انتخاب میکنه فرق بکنه


سلام
این رو که من گفته بودم
- این فرق فوکوله !؟ :)
بای