PDA

View Full Version : حرفه ای: سال مالي



niknam_mh
شنبه 05 بهمن 1392, 10:17 صبح
سلام دوستان
اگه يه برنامه حسابداري نوشته باشيم و حالا بخواهيم براش سال مالي بسازيم بايد از کجا شروع کنيم هم در مورد اس کيو ال سرور و هم در مورد کدهاي وي بي دات نت
لطفا هرکي در موردش مطلبي داره راهنمايي کنه ممنون ميشم.

nowar1352
شنبه 05 بهمن 1392, 13:20 عصر
روش هاي زيادي براي اين سناريو وجود داره يكي از روش هاي خوب و اصولي اينه كه شما يك بانك اطلاعاتي خام با ساختار مشخص داشته باشي مثلا Acc.mdf كه توش جداول ثابت و متغيير بصورت خالي تعريف شود (تو اسكيوال ) بعدش تو برنامه براي هر سال مالي يك كپي از ساختار اين بانك با نام جديد مثلا Acc91.mdf براي سال 90 كه در آن جداول ثابت كپي شده و جداول متغير آماده هست وبراي هرسال مالي تو برنامه يك كانكشن استرينگ پويا درست كنيد و در ابتداي برنامه براي ورود سال مالي هم لحاظ بشه

niknam_mh
شنبه 05 بهمن 1392, 14:31 عصر
دوستان کسي يه سورس کوچولو برا نمونه داره تا کل مبحث مشخص بشه.

gilsoft
یک شنبه 06 بهمن 1392, 07:21 صبح
سلام دوست عزیز

اگه از بانکهای اطلاعاتی SQL استفاده میکنی ... بهتر است که یک Database داشته باشی (همکاران سیستم از این روش استفاده کرده) و فقط با فیلتر کردن بر اساس سال میتونی به سال مالی دسترسی داشته باشی .. بدین ترتیب که : برای جداول اصلی یک ستون بنام Year ایجاد کنی و فقط عدد سال مالی مورد نظر رو در آن ذخیره کنی و تو Selectها و Viewها و کلا Queryها بر اساس سال مورد نظر اونو فیلتر کنی

FinancialYear : نام فیلد(ستون) سال مالی

مثال 1: از تابع BETWEEN برای Query گرفتن بین چند سال استفاده شده ....
SELECT * FROM AccVoucher WHERE FinancialYear BETWEEN 1390 AND 1392

مثال 2 : Query گرفتن از سند شماره 25 مربوط به سال 1392
SELECT * FROM AccVoucher WHERE FinancialYear=1392 and VoucherNum=25

نگران نباش ! SQLSERVER طاقتش بیشتر از ایناست :چشمک:

gilsoft
یک شنبه 06 بهمن 1392, 07:45 صبح
سلام مجدد

درباره نظر دوست عزیزمون nowar1352 بایدعرض کنم که : این روش رو من نمی‌پسندم ! چرا ؟!

چون برای ایجاد هر سال مالی باید یک Database ایجاد کنیم ... حالا مشکل چیه ؟!

مشکل اینه که از طرف بخواد برای کارگاه (یا دفتر و یا شرکت و یا ...) خودش 2تا دفتر ایجاد کنه چی ؟! .... این 2 دفتره (یکی رسمی <جهت دارائی> و دیگری اصلی) رو امروزه همه تقاضا مي‌کنند .... اگه به روشی که در پست قبل عرض کردم عمل کنی .. اونوقت برای هر دفتر یک Database خام رو کپی و Add ميکنیم .....

امیدوارم که تونسته باشم منظورمو برسونم ....

باز هم اگه سئوالی هست بپرس دوست من .......

niknam_mh
دوشنبه 07 بهمن 1392, 07:22 صبح
سلام دوست عزیز

اگه از بانکهای اطلاعاتی SQL استفاده میکنی ... بهتر است که یک Database داشته باشی (همکاران سیستم از این روش استفاده کرده) و فقط با فیلتر کردن بر اساس سال میتونی به سال مالی دسترسی داشته باشی .. بدین ترتیب که : برای جداول اصلی یک ستون بنام Year ایجاد کنی و فقط عدد سال مالی مورد نظر رو در آن ذخیره کنی و تو Selectها و Viewها و کلا Queryها بر اساس سال مورد نظر اونو فیلتر کنی

FinancialYear : نام فیلد(ستون) سال مالی

مثال 1: از تابع BETWEEN برای Query گرفتن بین چند سال استفاده شده ....
SELECT * FROM AccVoucher WHERE FinancialYear BETWEEN 1390 AND 1392

مثال 2 : Query گرفتن از سند شماره 25 مربوط به سال 1392
SELECT * FROM AccVoucher WHERE FinancialYear=1392 and VoucherNum=25

نگران نباش ! SQLSERVER طاقتش بیشتر از ایناست :چشمک:

سلام
يعني اينکه هيچ وقت هيچ کدوم از تيبل ها بسته نشه و فقط با فيلتر کردن به سالها دسترسي داشته باشيم؟
من همين کارو ميکنم ولي بعد از يه مدتي حجم تيبل ها بالا ميره و سرعت نرم افزار کم مشه مثلا ما ميخوايم حساب شخصي رو محاسبه کنيم بايد از اولين رکوردي که براي اين شخص ثبت شده فيلتر کنيم تا امروز و اين کار زمان ميبره و باعث کندي نرم افزار ميشه.
لطفا بيشتر راهنمايي کنيد ممنونم

gilsoft
دوشنبه 07 بهمن 1392, 08:38 صبح
سلام
يعني اينکه هيچ وقت هيچ کدوم از تيبل ها بسته نشه و فقط با فيلتر کردن به سالها دسترسي داشته باشيم؟
من همين کارو ميکنم ولي بعد از يه مدتي حجم تيبل ها بالا ميره و سرعت نرم افزار کم مشه مثلا ما ميخوايم حساب شخصي رو محاسبه کنيم بايد از اولين رکوردي که براي اين شخص ثبت شده فيلتر کنيم تا امروز و اين کار زمان ميبره و باعث کندي نرم افزار ميشه.
لطفا بيشتر راهنمايي کنيد ممنونم

سلام دوست عزیز

پیشنهاد من به شما اینه که : از Viewها و خصوصا Indexها استفاده کنی

niknam_mh
دوشنبه 07 بهمن 1392, 10:00 صبح
سلام دوست عزیز

پیشنهاد من به شما اینه که : از Viewها و خصوصا Indexها استفاده کنی

دوست خوبم ممنون از جوابهاي خوبتون
من با view ها کار کردم البته براي گرفتن اطلاعات گروهي ولي در مورد گرفتن اطلاعات تکي(فيلتر کردن براي حساب يک شخص) تا حالا کار نکرده ام
و در مورد index ها هم هيچ سر رشته اي ندارم اگه امکانش هست در اين موردها راهنماييم کنيد .ممنونم

niknam_mh
دوشنبه 14 بهمن 1392, 08:58 صبح
سلام دوستان
کسي نيست کمک کنه ؟

behrooz69
پنج شنبه 24 بهمن 1392, 02:03 صبح
سلام داداش پیروو پ خ هات جوابتو میدم داداشی .

ببین دوست من ، من با این روش و سال مالی کار نکردم چون برنامه حسابداری کار نکردم .

ولی جواب دوستم اقای gilsoft تو پست 4 خیلی منطقیه به نظر من .

سال مالی واسه 2 جا استفاده میشه : 1کیش این که بخوای اطلاعاتتو بر حسب سالت مشخص کنی . 1کیشم واسه طبقه بندی داده هاته .

ولی اگه هم رکورد هات همشون یجا باشن با یه دستور سلکت ساده میتونی اینکارو انجام بدی که چه سالی ، چه ماهی ، چه شماره فاکتوری ، چه روزی رو واسه گزارش بگیره یا نشون بده همش با 1 تکس باکس و یه کمبو باکسه .

حالا من از طرف خودم طبق تجربه خودم میگم کاری به بقیه ندارم . جون بیشتر نرم افزارهای حسابداری رو دیدم میگم .

هر برنامه ای وقتی واردش میشی مثل مهک بالا سمت راست 1 کمبو باکس داره که توش سال مالی هست . از مثلا 1390 تا 1400 . مثلا میگم .

با انتخابش سال برنامت به اون سال میره . این روشش چیه ؟؟ هیچی به خدا فقط یه Create Table سادست .

تو اجرای برنامه میاد چک میکنه که تو چه سالی هستیم حالا با proc شخصی یا موجود تو بازار ( تقویم فارسی ) . بعد میاد واست بر حسب سال جدیدت 1 Table میسازه تو دیتابیسش . و اطلاعات جدید رو میریزه تو تیبل جدید .

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

شما هم بیا واسه هر سال مالیت 1 تیبل بساز که هم تفکیک کنی . هم کارت تو سرچ و حذف و بکاپ و ریستور و ... راحت باشه . هم کنترل کنی .هم همه مدیریت های کار آمد چون تفکیک شدس .

هربارم که کاربر خواست برگرده به سال قبل یا جدید فقط با چند تا شرط و 1 کمبو باکس اینکارو انجام میدی .

به نظر من بهترین سناریو هستش . بازم نظر با اساتید برنامه نویسیه .

Ali_Fallah
پنج شنبه 24 بهمن 1392, 18:21 عصر
با سلام
نظر اساتید محترم در مورد برنامه ثبت ورود و خروج (در صورتیکه کارکنان یک شرکت زیاد باشند) که هر روز تعداد زیادی رکورد ثبت میشه
چی میتونه باشه ؟ ایا روشهای گفته شده بالا قابل اجراست؟
اگر شرکتی به عنوان مثال 1000 نفر کارمند داشته باشه هر سال حدود یک میلیون رکورد ثبت میشه و...

gilsoft
یک شنبه 27 بهمن 1392, 08:13 صبح
با سلام
نظر اساتید محترم در مورد برنامه ثبت ورود و خروج (در صورتیکه کارکنان یک شرکت زیاد باشند) که هر روز تعداد زیادی رکورد ثبت میشه
چی میتونه باشه ؟ ایا روشهای گفته شده بالا قابل اجراست؟
اگر شرکتی به عنوان مثال 1000 نفر کارمند داشته باشه هر سال حدود یک میلیون رکورد ثبت میشه و...

سلام دوست عزیز

هیچ مشکلی نیست

فقط یه نکته که : برای همچین حجمی ( از لحاظ تعداد رکوردها ) دیگه نباید از SqlExpress استفاده کرد ! حداقل باید از Sql Enterprise استفاده کنی ...

مهدی د
یک شنبه 27 بهمن 1392, 12:21 عصر
سلام
این روش که بازای هر سال مالی یک جدول ایجاد گردد کار اشتباهی است چون کار غیر اصولی است و باعث ایجاد مشکلاتی می شود از جمله مشکل در جستجو و بررسی وجود رکودهای مرتبط و نیز مشکل در تهیه گزارشات : مثلا اگر بخواهید یک گزارش از گردش یک حساب یک شخص ، از تاریخ 89/01/01 تا 92/11/27 (که در چند تا سال مالی جداگانه است) تهیه کنید این امکان فراهم نمی شود!

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

sm_1366
شنبه 13 اردیبهشت 1393, 08:22 صبح
سلام
این روش که بازای هر سال مالی یک جدول ایجاد گردد کار اشتباهی است چون کار غیر اصولی است و باعث ایجاد مشکلاتی می شود از جمله مشکل در جستجو و بررسی وجود رکودهای مرتبط و نیز مشکل در تهیه گزارشات : مثلا اگر بخواهید یک گزارش از گردش یک حساب یک شخص ، از تاریخ 89/01/01 تا 92/11/27 (که در چند تا سال مالی جداگانه است) تهیه کنید این امکان فراهم نمی شود!

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

منم میخواستم همینو بگم یه فیلد سال مالی مشکل رو حتما حل میکنه