PDA

View Full Version : سوال: جلوگیری از تکرار کد اصلی بانک اکسس تحت شبکه و سایر نکات



0armin0
شنبه 18 تیر 1390, 13:14 عصر
چند تا سوال دارم. تو چندتا تاپیک خوندم مثل تاپیک زیر ولی به نتیجه نرسیدم. شاید برای شما خیلی مبتدی باشه.یه برنامه حسابداریه که دو کاربر از دو تا کامپیوتر شبکه شده باهاش باید کار کنن.
1- سیستم یه جوریه که برای فاکتور جدید زدن آخرین شماره فاکتور رو میخونه و یکی بهش اضافه میکنه بعد از ورود اطلاعات ذخیره میشه. حالا اگه کاربر اول جدید بزنه و هنوز ذخیره نکره کاربر دوم هم جدید بزنه توی ذخیره مشکلی پیش نمیاد؟ البته میدونم که refresh جواب نمیده چون اگه بانک بزرگ باشه هنگ میکنه و در ضمن کد فاکتور اول باید ثبت بشه تا دومی بتونه بفهمه. برای این مشکل چیکار باید کرد؟
2- چه دستوراتی نباید تو برنامه نویسی تحت شبکه استفاده بشه یا اگه نکاتی باید رعایت بشه بگین تا به مشکل بر نخورم بعدا
http://barnamenevis.org/showthread.php?38202-%D8%B3%D9%88%D8%A7%D9%84-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Access-%D8%A8%D8%B9%D9%86%D9%88%D8%A7%D9%86-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%B4%D8%A8%DA%A9%D9%87&

یوسف زالی
شنبه 18 تیر 1390, 15:45 عصر
در خصوص تکراری نشدن شماره فاکتور چون خودم درگیر این داستان بودم می فهمم یعنی چی!
بعد از کلی دردسر به روشی رسیدم که براتون تشریح می کنم اما این به معنی این نیست که فقط همین یک روش وجود داره.
شما برای فاکتور باید یک فیلد از نوع Identity که در اکسس میشه AutoNumber (فکر کنم) داشته باشی.
در هنگام زدن فاکتور باید قبل از هر کاری یک ردیف خالی insert کنی و مقدار کد فاکتور رو از روش زیر محاسبه کنی:
کد فاکتور جاری : بزرگترین شماره فاکتوری که معتبر هست (ممکنه که Status 1 برای فاکتور های حذف شده در نظر گرفته شده باشه) + تعداد ردیفهایی که Insert شده اند ولی هنوز خالی هستند هر دو به شرطی که سربال (AutoNumber) آنها کوچکتر از سریال ردیف جاری باشد.
این روش تضمین می کنه که هیچ دو فاکتوری کد مشابه نخواهند داشت و هیچ فاصله ای بین فاکتور ها از نظر شماره وجود نخواهد داشت.
حالا پس از Insert برای ورود اطلاعات باید ردیف جاری رو با مقادیر خودتون Update کنید.
مشکل این روش جایی هست که Relation داشته باشی به یکی از اعضای جدول جاری که این مشکل هم با افزودن یک ردیف با مقدار صفر به آن جدول حل می شه.

جای AutoNumber می تونی از TimeStamp هم استفاده کنی.

در خصوص سوال دوم هم نظری ندارم!

یوسف زالی
شنبه 18 تیر 1390, 15:50 عصر
روش دیگه ای که به نظرم می رسه و ساده تر هست:
شما کد رو پیشنهاد می دی اما در هنگام Insert دوباره کد رو از Max پیدا می کنی.
اگر کد جاری با اون فرق داشت کد بدست اومده رو ذخبره کن و با پیغامی این مطلب رو به اطلاع حسابدار برسون.
مثلا بگو به دلیل اجرای همزمان کد ذخیره شده به فلان تغییر یافت.
این روش ساده هست و برای کارهای کوچک ممکنه به درد بخور تر باشه.
اما من روش اول رو بیشتر قبول دارم.