ورود

View Full Version : مشکل این کد چیست



khoshblagh
سه شنبه 01 اردیبهشت 1388, 12:21 عصر
با سلام خدمت دوستان
من دو جدول دارم که در یکی اسامی حسابها و در جدول دیگر گردش حسابها میباشد.
در جدول گردش حسابها دو فیلد Bes وBed باید بر اساس فیلد Level جدول اول جمع زده شود
لازم به ذکر است در جدول اول فیلد Level دارای اعداد یک تا چهار میباشد . اگر عدد 4 باشد
به راحتی و درست اجرا میشود. زیرا بر اساس کد مشترک در هر جدول اجرا میشود. ولی اگر بر اساس عدد 3 باشد معنی آن این است که تمام کدهای مشترک که3 رقم سمت چپ آن
یکی باشد بدون توجه باقیمانده ارقام کد با هم جمع و نشان داده شود. برای آنهایی که به
حسابداری آشنا میباشند معنی آن این است که حسابها را در سطح معین کل نمایش دهند.
متشکرم

SELECT left(tblCodHesab.Cod,3) as CodMoinKol1 , Name , tblCodHesab.Cod
FROM tblCodHesab
WHERE (((tblCodHesab.Level="3")) AND (( left(tblCodHesab.Cod,3)) =(SELECT Left(tblAcnt87.Cod,3) as CodMoinKol2
,Sum(Bes) as SumBes , Sum(Bed) as SumBed
FROM tblAcnt87
GROUP BY Left(tblAcnt87.Cod,3)))
ORDER BY left(tblCodHesab.Cod,3);

Hsimple11
جمعه 04 اردیبهشت 1388, 16:13 عصر
وقتی می بینید کسی جواب نداده یعنی متوجه سوالتون نشدن. کمی واضح تر بگین.

ghabil
جمعه 04 اردیبهشت 1388, 22:30 عصر
از اونم بالاتر! من هرچی خوندم سوال خاصی پیدا نکردم بیشتر توضیح بود تا سوال!

khoshblagh
شنبه 05 اردیبهشت 1388, 07:59 صبح
با عرض پوزش از گنگ بودن مطلب
در جدول اول که همان کد حسابها میباشد دارای فیلدی به نام CodHesab که یک کد 8 رقمی یکتا در آن ثبت میشود و برای هریک از کدها فیلدی به نام Shar که عنوان آن کد است و شرح همان کد میباشد ثبت میشود. در حسابداری معمولا کدها بر اساس حساب کل / حساب معین کل و معین جز طبقه بندی میشود. که در این جدول فیلدی به نام Level قرار دارد که کدهایی که مربوط به حساب کل است را با شماره یک و معین کل را با شماره 2 و معین جز را با شماره 3 نمایش طبقه بندی میکند . حال برای مثال میتوان به صورت زیر گروه حسابی را تعریف کرد:

حساب عنوان سطح
----------- ------------- ---------
12000000 موجودی نقد و بانک 1
12100000 بانکها 2
12100001 جاری 125 ملی 3
12100002 جاری 5555 تجارت 3

به همین ترتیب برای بقیه حسابها همین روال را رعایت میکنیم
در جدول دوم که گردش حسابها میباشد تمام ثبتهای حسابداری انجام میگیرد. ساختار این جدول به این صورت است:
فیلد تاریخ مثلا 8 کارکتر
فیلد سند 4 کارکتر
فیلد کد حساب 8 کارکتر =====> این فیلد با جدول اول تشکیل کلید میدهد.
فیلد شرح 35 کارکتر
فیلد بدهکار که مبلغ بدهکار در آن ثبت میشود
فیلد بستانکار که مبلغ بستانکار در آن ثبت میشود
حال برای مانده گیری از حسابها باید بتوان به طور جداگانه در هر 3 سطح مانده گیری برای حسابها انجام داد. اگر به کدها توجه شود هر کد از سه بخش تشکیل شده است :
دو رقم اول سمت چپ نمایانگر حسابهای کل میباشد.
دو رقم بعدی نمایانگر حسابهای معین کل میباشد.
چهار رقم بعدی نمایانگر معین جز است.

حال ما باید بتوانیم جمع مبلغ بدهکار و بستانکار جدول دوم را بر اساس هر سطح نمایش دهیم. که میتوان آنرا به شکل زیر نمایش داد:

برای حسابهای کل:
کد حساب عنوان حساب جمع بدهکار جمع بستانکار
===== ======== == ======= =========
12000000 موجودی نقد و بانک 10000000000 1020000000

برای حسابهای معین کل :
کد حساب عنوان حساب جمع بدهکار جمع بستانکار
===== ======== ========= =========
12100000 بانکها 3300000 2000000

و برای معین جز :
کد حساب عنوان حساب جمع بدهکار جمع بستانکار
===== ======== ========= =========
12100001 جاری 125 ملی 1100000 1000000
12100002 جاری 5555 تجارت 2200000 1000000

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

mehdimdp
سه شنبه 08 اردیبهشت 1388, 19:12 عصر
خب حالا مشكلت كجاست ؟:لبخند:
يعني اين كدي كه نوشتي ، چه خطايي ميده ؟

khoshblagh
چهارشنبه 09 اردیبهشت 1388, 07:09 صبح
هیچ خروجی را نشان نمیدهد .

daffy_duck376
شنبه 12 اردیبهشت 1388, 08:51 صبح
ببین دوست عزیز من برنامه حسابداری قبل نوشتم . مشکل شما اینه که برایحسابهای معین کل تفصیل جداول جداگانه در نظر نگرفتی . چون هر کدام از این حسابها خصوصیات جداگانه دارن که اونها رو خودت میدونی. اگر این کار رو کرده بودی با یه join ساده نتیجه میگرفتی. ضمنا این استاندارد کد دادن به حساب که شما استفاده کردی درسته ولی کاربر اجازه داره کد حساب رو عوض کنه و اگر هنگام عوض کردن این استاندارد رو رعایت نکنه با این روش حساب کتاب شما همه تنظیمات شما به هم میریزه و کسی که نرم افزار را خریده به خاک سیاه میشینه . این نظر شخصی منه . ممکن هست غلط باشه .هیچ اصراری روی درست بودن اون ندارم . اگه شما نظری دارید بگید تا من هم استفاده کنم

khoshblagh
شنبه 12 اردیبهشت 1388, 09:26 صبح
با سلام خدمت دوست عزیز
در حقیقت برای حسابها یک جدول جداگانه ایجاد کرده ام که حسابها در آن معرفی
میشوند . این جدول دارای فیلد کد حساب که 8 رقمی است و فیلد شرح حساب که همان عنوان حساب و فیلد سطح که نمایانگر حساب کل / معین کل / و یا معین جز میباشد. البته
این سطح حسابها با عدد یک / دو / و سه که هر یک نمایانگر سطح حساب مربوطه است
تعریف شده است. از طرفی در جدول دوم که در حقیقت اسناد در آن ثبت میشود کد حساب
به 8 رقمی ثبت میشود که میتواند با جدول اول از طریق همین کد به هم وصل میشود. بنابر این اگر بتوان کوئریی نوشت که اول جمع فیلدهای بدهکار و بستانکار را انجام داده و با توجه
به جدول اولیه و با نظر گرفتن سطح حسابها گروه بندی های لازم را انجام دهد مشکل حل
میشود. البته من توانستم در اکسس با کوئری و Group by جدول گردش را جمع و سپس
با یک کوئری دیگر و فیلتر گذاری جدول حساب را تنظیم و سپس نتیجه هر دو کوئری اول و دوم را در کوئری سوم بکار بسته و مشکل را حل نمایم. ولی از آنجایی که این کار را SQL با یک
کد هم قابل انجام است در حقیقت من به دنبال آن کد هستم.متشکرم
است

ببین دوست عزیز من برنامه حسابداری قبل نوشتم . مشکل شما اینه که برایحسابهای معین کل تفصیل جداول جداگانه در نظر نگرفتی . چون هر کدام از این حسابها خصوصیات جداگانه دارن که اونها رو خودت میدونی. اگر این کار رو کرده بودی با یه join ساده نتیجه میگرفتی. ضمنا این استاندارد کد دادن به حساب که شما استفاده کردی درسته ولی کاربر اجازه داره کد حساب رو عوض کنه و اگر هنگام عوض کردن این استاندارد رو رعایت نکنه با این روش حساب کتاب شما همه تنظیمات شما به هم میریزه و کسی که نرم افزار را خریده به خاک سیاه میشینه . این نظر شخصی منه . ممکن هست غلط باشه .هیچ اصراری روی درست بودن اون ندارم . اگه شما نظری دارید بگید تا من هم استفاده کنم

daffy_duck376
شنبه 12 اردیبهشت 1388, 09:43 صبح
با سلام خدمت دوست عزیز
در حقیقت برای حسابها یک جدول جداگانه ایجاد کرده ام که حسابها در آن معرفی
میشوند . این جدول دارای فیلد کد حساب که 8 رقمی است و فیلد شرح حساب که همان عنوان حساب و فیلد سطح که نمایانگر حساب کل / معین کل / و یا معین جز میباشد....... ولی از آنجایی که این کار را SQL با یک کد هم قابل انجام است در حقیقت من به دنبال آن کد هستم.متشکرم
است
یه سوال اگه کاربر کد حساب رو عوض کرد و از استاندارد شما پیروی نکرد آن وقت شما تو گزارش گیری ها به شدت به مشکل بر نمی خوری ؟ اگر جلوی کاربر رو برای عوض کردن کد حساب بگیری سطح برنامه شما پایین میاد اگه نگیری چطور میخوای کاربر رو مجبور کنی از استاندارد پیروی کنه ؟ ضمنا مثلا حساب معین دارای خصوصیتی مانند تعدادی / پیگیری بودن حساب و حساب کل دارای خصوصیاتی مانند بدهکار / بستانکار / بدون ماهیت می باشد . اگر شما برای تمام انواع حسابها یک جدول واحد در نظر گرفته باشی و نتونی این خصوصیات رو توش جدا گانه ثبت کنی ، گزارش های پایان سال و بستن حسابها برای شما غیر ممکن خواهد بود

khoshblagh
یک شنبه 13 اردیبهشت 1388, 07:29 صبح
با سلام
شغل اصلی بنده حسابدار و جهت اطلاع عرض کنم:
سطوح مختلف حساب در موقع طراحی سیستم حسابداری تصمیم گبری میشود.از طرفی
با توجه بزرگی و یا کوچکی شرکت میتوان تعداد و طبقات حسابهای کل و معین کل تعریف
کرد ولی برای معین جز با توجه به تکرار میتوان تا محدوده مورد نظر کد ایجاد کرد . این محدوده
در سیستمی که مورد نظر است 4 رقم و در نتیجه از صفر الی 9999 مورد برای هر طبقه معین
کل میباشد. اگر کاربر بخواهد معین جز را تغییر دهد موردی ندارد ولی اگر بخواهد
طبقه حساب را تغییر دهد که در آن صورت ماهیت طبقه تغییر مینماید که این مورد بعید میباشد زیرا باید کل حسابهای آن طبقه را باز تعریف کرد . به هر حال بنده همین برنامه را در محیط فاکس طراحی و تا سال قبل استفاده نموده ام .
در کد حساب 8 رقمی مورد نظر 2 رقم اول سمت چپ نمایانگر حساب کل و 2 رقم بعدی نمایاگر معین کل و 4 رقم آخر معین جز میباشد. که این صورت با توجه به تجربه بنده کاربر
برای شرکتهای تا متوسط هیچوقت دچار محدودیت کد نخواهد شد.


یه سوال اگه کاربر کد حساب رو عوض کرد و از استاندارد شما پیروی نکرد آن وقت شما تو گزارش گیری ها به شدت به مشکل بر نمی خوری ؟ اگر جلوی کاربر رو برای عوض کردن کد حساب بگیری سطح برنامه شما پایین میاد اگه نگیری چطور میخوای کاربر رو مجبور کنی از استاندارد پیروی کنه ؟ ضمنا مثلا حساب معین دارای خصوصیتی مانند تعدادی / پیگیری بودن حساب و حساب کل دارای خصوصیاتی مانند بدهکار / بستانکار / بدون ماهیت می باشد . اگر شما برای تمام انواع حسابها یک جدول واحد در نظر گرفته باشی و نتونی این خصوصیات رو توش جدا گانه ثبت کنی ، گزارش های پایان سال و بستن حسابها برای شما غیر ممکن خواهد بود

راستی منظور شما از جمله رنگ شده بالا نشدم؟
با تشکر

daffy_duck376
یک شنبه 13 اردیبهشت 1388, 08:03 صبح
بببین دوست عزیز شما تمام حرفهایی که زدی درست . من نمی دونستم که شما برنامه ای رو که مینویسید فقط خودتون استفاده می کنید! اما از نظر یک برنامه نویس که هیچ وقت END USER نیست و برنامه را برای استفاده دیگران طراحی میکند این قضیه خیلی مهم است که کاربر هر طور که دلش خواست با برنامه رفتار کنید حتی اگر کدی که کاربر می دهد از لحاظ حسابداری درست نباشد ! این مهم نیست . مهم این است که تحت هر شرایطی برنامه من درست کار کنه و نتیجه رو درست نشون بده. حال شما می فرمائید سطوح حساب عوض میشود این به ناشی گری حسابدار برمیگردد و اثراتش مربوط به حسابدار است ولی برنامه من باید درست کار کند. حتی اگر کاربر برای حساب کل با کد 10 یک معین با کد 1125 تعریف کند !این یک اشتباه بزرگ است البته در حسابداری. دربرنامه نویسی با وجود نا درست بودن کد باید این حساب معین را مربوط به آن حساب کل بداند. منظور من این است که سیستم تشخیص نباید از روی کد حساب باشد و از روی یک پارامتر دیگر تعیین شود . مثلا فیلد دیگری برای ثبت کد حساب کل . درمورد جمله مورد نظر شما عرض کنم همون طور که خودتون میدونید بعضی از خصوصیات حسابها در بعضی قسمتهای برنامه تغییراتی را ایجاد میکند . مثلا حسابی معینی که تفصیل دارد باید در سند کد تفصیل آن ثبت شود و اگر ثبت نشود برنامه اجازه ثبت سند را به کاربر ندهد. باتوجه به سیستم ثبت حسابهای شما این کار ممکن نیست ! کاربر کافی است کد معین را بزند و شرح ومبلغ را بزند و در نهایت یک اختلاف حساب بین جمع تراکنش های حساب معین و حسابهای تفصیل زیر مجموعه آن است . این یعنی بسته نشده حساب در پایان سال:افسرده: و میتونه این قضیه حسابدار را به یه دردسر واقعی بندازه. یا مثلا شما می دانید که حساب بستانکار با بدهکار چه فرقی دارد . خوب فرق اینها در محاسبات عملیات پایان سال مشخص میشود :لبخند: حال اگر معلوم نباشد کدام حساب بدهکار است و کدام حساب بستانکار ....... به صورت کلی عرض می کنم اگر شما قصد نرم افزار نویسی دارید بهتره این کارو درست انجام بدید و فکر نکنید همیشه کاربر نرم افزار خودتون هستید ! درس اول مهندسی نرم افزار اینه که کاربر بزرگترین دشمن برنامه نویسه. پس برنامه نویس نباید هیچ جا رو برنامه سوتی بده . البته من قصد توهین به کسی رو ندارم و شما هم مثل بقیه دوستان دوست من هستید . اما حالا که این کار رو شروع کردید از هر جهت برنامه را بدون نقص و مشکل بنویسید . این یعنی یه برنامه موفق

khoshblagh
یک شنبه 13 اردیبهشت 1388, 09:46 صبح
با تشکر از توضیحات خوب شما
پیشنهاد شما برای چیدن اطلاعات در جدول کد حساب چیست. اگر ممکن است نمونه ارائه دهید.

متشکرم

daffy_duck376
یک شنبه 13 اردیبهشت 1388, 14:26 عصر
شما باید جداول گروه حسابها - حسابهای کل - حساب معین - حساب تفصیل را جدا از هم قرار دهید . گروه حساب که شامل گروهای 9 گانه حسابداری می باشد که شامل فیلدهای کد گروه - نام گروه - نوع گروه میباشد.
هر کدام از این فیلدها رو خودتان خوب میشناسید. حساب کل شامل کد حساب - نام حساب - ماهیت حساب - کد گروه حساب می باشد.( هر حساب کل زیر مجموعه یکی از گروههای 9 گانه حسابداری است ). حساب معین دارای فیلدهای کد حساب - نام حساب - نوع حساب (پیگیری یا تعدادی بودن ) - فیلد بعئی از نوع بولین که داشتن یا نداشتن تفصیل را مشخص می کند و در نهایت کد حساب کل- به همین ترتیب تفصیل را مینویسید . نومونه کار رو نمی تونم ارائه بدم .شرمنده هستم - ولی کلا به این شکل باید نوشته شود