من دریک برنامه اطلاعات مربوط به سال 1384راواردکردم حال می خوام درهمان برنامه بصورت جداگانه مانند برنامه های دیگردسترسی به ایجادسال جدیدمثلا"سال 85و وروددیتای جدیدراداشته باشم ؟
Printable View
من دریک برنامه اطلاعات مربوط به سال 1384راواردکردم حال می خوام درهمان برنامه بصورت جداگانه مانند برنامه های دیگردسترسی به ایجادسال جدیدمثلا"سال 85و وروددیتای جدیدراداشته باشم ؟
در جداول اصلی تون فیلد سال رو اضافه کنید و برای اطلاعات موجود مقدار 1384 بدید و از کاربر موقع ورود سال مورد نظرشو بپرسید و اونو در مقدار پیش فرض فیلد قرار بدید تا با افزودن هر رکورد سالش هم درج بشه حالا می تونید گزارش هر سالو جداگانه بگیرید .
البته یادتون باشه که مبحث ساده نیست و رابطه بندی ها ، ایندکس ها ، حجم اطلاعات و سرعت کار موجب پیچیدگی فرآیند می شه .
شما یه جدول دیگه باید ایجاد کنید و اطلاعات تمام سالها را دراون بریزی
اگه بخواهی در یه جدول عمل کنی در سرعت ،ویرایش ،انتقال اطلاعات به جدوال دیگه با مشکل مواجه میشی
اگه شماره سند و فیلد تاریخ داشته باشی هر دوی انها باید کلید باشه (در جدول کل اطلاعات سالهای مختلف ) وبه هنگام گزارش یا جستجو با یه دستور اون جدلو دیتا سورس فرم یاگزارش قراربدی
شما می تونید از داخل فرم یک کپی از تیبل مربوط با نام جدید بگیرید و با هر بار باز شدن فرم از کاربر شوال بشه که چه سالی رو باز بکنه و رکورد سورس فرم رو با جواب کاربر مساوی قرار می دهید . با فرمان docmd.copyobject (و غیره) از تیبل کپی بگیرید.
ببین دوست عزیز روشهای شما کاملا صحیح فقط یک اشکال نه چندان کوچک..که عبارتند از ..
1- افزونگی
2- حجیم شدن بانک
3-کند شدن بانک
4-و ...
روشی که من استفاده کردم و خوب جواب گرفتم استفاده از لینک می باشد با استفاده از این روش بانک شما یک دیتابیس دیگست و اپلیکیشن نیز یه بر نامه دیگست با خراب شدن اپلیکیشن بانک شما نیز از بین نمی رود و همچنین خیلی ابزارها نیز به آن استفاده می شود...
ممکنه بیشتر توضیح دهید یا نمونهش بزاری ممنون میشم
به نظر من باید حتی الامکان از تکه تکه کردن جداول بدلیل افزودن سال جدید خودداری کرد چون در گزارش گیری های جامع مواجه با کاهش توانایی های برنامه می شیم .
به این معنی که وقتی n تا جدول معادل n سال کار برنامه داشته باشیم تهیه گزارشهای مقایسه ای بین سالها یا سرجمع های چند ساله پیچیده می شه و باید مکانیزمهای خاصی رو برای یکپارچه کردن اطلاعات مد نظر داشته باشیم .
مثل اینجا : https://barnamenevis.org/showthread.php?t=53076
کاملا موافقم ومنم از این روش استفاده می کنم تمام اطلاعات سنوات قبل در یه تیبل از دیتابیس دیگه کپی وجمع اوری ولینک داده میشه به برنامه اصلینقل قول:
نوشته شده توسط alireza1514
اساتید چه راه کاری رو برای برنامه هایی که باید به صورت ماهانه و سالانه ذخیره بشن پیشنهاد می کنند . جستجو در سایت برای این مطلب انجام شد ولی هدف این بود که حرفه ای ها چه جوری این مشکل رو حل می کنند و همه بتونم در این تاپیک ازش استفاده کنن . من شخصا از داخل فرم از جدول کپی می گیرم و می دونم که این راه اصولیی نیست و مشکلات زیادی اعم از بالا رفتن حجم فایل به دنبال داره.
من پیشنهادم اینه که از دو تا دیتا بیس استفاده شه یکی اطلاعات حال رو داشته باشه و یکی اطلاعات آرشیو رو نگهداره مثلا فکر کنیم که آرشیو سالیانه است
کافیه توی تیبل یک فیلد به نام سال ایجاد کنیم و با یک کوئری ساده اطلاعات تیبل رو کا با اون سال (آرشیو) هماهنگ هست رو به یک دیتا بیس دیگه انتقال بدیم. نمیدونم آیا راه سادهتری هم هست..
اینم نمونه که خواسته بودین.ولی امیدوارم راه های منطقی تری هم پیشنهاد بشه
نمونه رو توی درایو C سیستم Extract کن.بعد اول DByear رو باز کن .بد نیست یه نگاهی به تیبلش بندازی.دوتا کوئری هست که یکی کار انتقال اطلاعات به db archive رو انجام میده و دیگری اطلاعات انتقال داده شده رو از دیتا بیس جاری حذف میکنه.سال رو از روی فرم انتخاب کن و دکمه آرشیو رو بزن
من با نظر بعضی دوستان موافقم. بدلیل اهمیت جداگانه اطلاعات سال مالی هر سال مالی باید در یک فایل جدید و جداگانه ذخیره، و اطلاعات مقطعی با باز کردن فایل سال مربوطه، و جمع اطلاعات و سایر اطلاعات مقایسه ای سالهای متفاوت، با ایجاد یک کوئری UNION در آخرین فایل سال مالی، کلیه اطلاعات سالهای قبل را در دسترس قرار داد.
هیچ زمان نمی توان اطلاعات چند سال را در یک فایل قرار داد، چون بسرعت فایل مربوطه پر حجم شده، و از مدیریت حافظه اکسس نیز خارج می شود. همچنین از لحاظ حسابداری درست نمی باشد، اطلاعات سالهای متفاوت مالی در یک جا جمع گردد.
اصولا برنامه هایی م که سالیانه آرشیو میشن همینطوریه
یعنی مثلا وقتی تو یک حسابداری شما در انتهای سال مالی دفاترت رو میبندی عملا میاد یک فایل جدید بازمیکنه و فقط مانده حسابارو از تو جدول قبلی میریزه توش.
اینجوری امنیتشم بیشتره
من هم فکر میکنم بهترین روش و کامل ترین روش اینه که اطلاعات بر حسب سال یا ماه (بستگی به نیاز) در همان DataBase ولی در جداول جداگانه ذخیره بشه. من یه مثال میزنم واستون جایی که ما کار میکنیم اطلاعات 8 سال گذشته حدود 900 هزار رکورد شده که در SQL نگهداری میشوند. مشکل بزرگ ما این بوده که در طراحیمون یک جدول به عنوان History در نظر گرفتیم و یک جدول هم براس سال جاری. اینجوری از نظر گزارشات مقایسه ای هیچ مشکلی نداریم اما در هنگامی جستجو و یا اجرای فرمولی خاص بر روی دسته ای از رکورد ها، حتی اگر این پروسیجر توسط Stored Procedure نوشته شده باشه از 15 ثانیه تا 3 دقیقه طول میکشه بسته به بار شبکه و پروسیجر ما. که اگر اطلاعات در جداول سالانه ذخیره شده بود هم سرعتمون بالا میرفت و هم برای گزارشات مقایسه ای مشد با یه اینپوت گرفتن جداول رو به هم Union کرد