PDA

View Full Version : سوال در مورد برنامه تحت شبکه



Saeid59_m
سه شنبه 07 اسفند 1386, 06:59 صبح
سلام من می خواهم یه برنامه تحت شبکه با بانک اس کیو ال بنویسم

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

SYNDROME
سه شنبه 07 اسفند 1386, 07:45 صبح
سلام من می خواهم یه برنامه تحت شبکه با بانک اس کیو ال بنویسم
سوالم اینه که فرض کنید کاربر یه سند جدید ایجاد می کنه با یه شماره . حالا می خواهم تو بانکم سرچ کنم که اگه این شماره وجود نداشت ، سند ایجاد بشه . اگه در زمان جستجو یه کاربر دیگه این سند را ایجاد کند چگونه باید آنرا کنترل کنم . ؟
ممنون
شماره را بعد از اینکه کاربر دکمه ذخیره را زد چک کنید تا تکراری نباشد.
سپس در بانک ذخیره کن.حالا ممکن است دو کاربر به شکل همزمان کمه ذخیره را انجام دهند که شما به کلید کردن شماره سند هر کاربر که زودتر عمل ذخیره را انجام داد که ذخیره می شود ولی کاربر بعدی با خطایی که از طرف SQL بر می گردد متوقف شده و شما با یک پیغام مناسب می گویید که کد مورد نظر در بانک موجود است و کد دیگری را انتخاب کنید.
یک نکته : بهتر است شماره سند توسط سیستم و به صورت اتومایک زده شود(Max).
موفق باشید

ashpasha
سه شنبه 07 اسفند 1386, 08:34 صبح
با سلام.
بهترین کار این است که شما از تریگر After Insert استفاده نمائید.
در ابتدا باید نامه را با کد مشخص (بطور مثال، صفر) ذخیره کنید. سپس تریگر شما این رکورد را پیدا نموده و مقدار جدید را محاسبه و Update میکند.

ارادت.
درود و بدرود.

Saeid59_m
سه شنبه 07 اسفند 1386, 09:02 صبح
از روش جناب SYNDROM نمی توانم استفاده کنم چون ممکن است شماره سند را کاربر تغییر دهد .
روش جناب ashpasha نیز فکر می کنم مشکل ساز باشد . شاید دو کاربر همزمان رکورد شماره 0 را ایجاد کنند .

ICEMAN
سه شنبه 07 اسفند 1386, 09:22 صبح
از روش جناب SYNDROM نمی توانم استفاده کنم چون ممکن است شماره سند را کاربر تغییر دهد .
روش جناب ashpasha نیز فکر می کنم مشکل ساز باشد . شاید دو کاربر همزمان رکورد شماره 0 را ایجاد کنند .
البته به نوع برنامه هم بستگی داره
و به نظر من تغییر شماره سند کار درستی نیست عوض شدن شماره سند یعنی تغییر خیلی چیزها...
باید سند دوباره زده بشه

SYNDROME
سه شنبه 07 اسفند 1386, 16:23 عصر
از روش جناب SYNDROM نمی توانم استفاده کنم چون ممکن است شماره سند را کاربر تغییر دهد .

شماره سند فیلدی کاملا حیاتی است.نباید فیلد فوق را در اختیار کاربر قرار داد تا با توجه به سلیقه خود شماره گذاری کند ولی حتی اگر این کار را هم بکنی باز در شماره گذاری اسناد ترتیب را سیستم مشخص می کند.
به این نکته هم دقت کنید باید فیلد سند ، سال مالی را با هم کلیسد بگیرید تا حتمال ثبت شماره سند تکراری در یک سال یا دوره مالی صفر شود.
فکر کنم براحتی می توانید با Try .. . Except مدیریت کنید.
موفق باشید

Saeid59_m
چهارشنبه 08 اسفند 1386, 10:56 صبح
فکر کنم براحتی می توانید با Try .. . Except مدیریت کنید.
موفق باشید
فکر می کنم این راه مناسبی برای این قضیه باشه
ممنون

ashpasha
چهارشنبه 15 اسفند 1386, 07:42 صبح
از روش جناب SYNDROM نمی توانم استفاده کنم چون ممکن است شماره سند را کاربر تغییر دهد .
روش جناب ashpasha نیز فکر می کنم مشکل ساز باشد . شاید دو کاربر همزمان رکورد شماره 0 را ایجاد کنند .

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

ارادت.
درود و بدرود.