نمایش نتایج 1 تا 19 از 19

نام تاپیک: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

  1. #1
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    سلام
    در یک برنامه حسابداری 6 سطحی در دست تهیه که قبلاً تصاویری از محیط و بعضی فرم های آن در تاپیکی جداگانه قرار داده بودم میخواهم گزارشات مقایسه ای از تجمیع حسابها و بر اساس سطوح کدینگ حسابها تهیه نمایم
    قبل از ادامه مطلب لطفاً اولین تصویر ضمیمه رو ملاحظه بفرمائید !
    در برنامه اصلی گزارشات مقایسه ای بر اساس فیلتر های متنوعی که در فرم فوق ملاحظه می فرمائید تهیه میشود .
    و اما این تاپیک رو به چه منظوری ایجاد کرده ام
    واقعیت اینکه چند روزی است برای تهیه چنین گزارشی با یک چالش مواجه شده ام و این تاپیک رو به همین منظور ایجاد کرده ام که از اساتید خودم برای عبور از این چالش کمک بگیرم
    در بانک اطلاعاتی برنامه اصلی یک کوئری ایجاد کرده ام که این کوئری تشکیل شده از جداول حسابها و بعضی دیگر از جداول مرتبط
    بلحاظ یک مقدار پیچیدگی که این کوئری در برنامه اصلی دارد من در فایل نمونه ضمیمه این کوئری رو بصورت یک جدول ساده تبدیل و فیلدهای اضافه که به آنها نیاز نمی باشد و ممکن است باعث تزاحم و سردرگمی شود از آن حذف کرده ام. نام این جدول Tbl_GroupsTables میباشد
    و یک جدول دیگری با عنوان Tbl_Comparative_Reports ایجاد کرده ام که دارای 5 فیلد میباشد که با توجه به اطلاعات جدول Tbl_GroupsTables تحت شرایطی که در ادامه ذکر خواهم کرد رکوردهائی از جدول Tbl_GroupsTables به این جدول اضافه میشود.
    در فایل نمونه فرم تهیه گزارشات مقایسه ای قرار دارد که همانطور که در اولین تصویر مشاهده می کنین این فرم دارای آیتم ها و گزینه های متعددی است اما بنده در فایل نمونه آیتم های اضافه این فرم که تاثیری در حل مشکل ندارند و باعث تزاحم و سردر گمی میشوند حذف کرده ام

    و اما بپردازیم به شیوه تهیه گزارش:
    همانطور که در فرم ملاحظه خواهید کرد 6 کمبوباکس وجود دارد که در هر کدام عناوین کدینک حسابها درج شده است . به استثناء کمبوباکس اول 5 کمبوباکس دیگر دارای گزینه هیچکدام میباشد که وقتی این گزینه از هر کمبو باکس انتخاب میشود گزینه هیچکدام کمبوباکس های بعدی انتخاب میشوند . و این بدان معنی است که نیازی به سطوح کمبوباکس هائی که دارای گزینه هیکدام است نمی باشد.
    بفرض اگر میخواهیم گزارش فقط در دو سطح تهیه شود گزینه هیچکدام کمبوباکس سوم را انتخاب می کنیم که فقط سطوح اول و دوم فعال باشند و یا اگر در نظر است گزارش در سه سطح تهیه شود باید گزینه هیچکدام کمبوباکس چهارم انتخاب شود
    و اما بعد از تعین سطوح و انتخاب عناوین کدینک حسابها در سطح انتخاب شده شیوه تهیه گزارش باید به شرح زیر باشد:
    بطور مثال میخواهیم گزارش ما در دو سطح تهیه شود بطوریکه در سطح اول گروه حسابها بعنوان اولویت اول انتخاب شود و در سطح دوم حسابهای کل . در این حالت رکوردها به جدول Tbl_Comparative_Reports باید بصورت تصویر 2 اضافه و مرتب شوند. تصویر فوق گویای این مطلب است که از
    جدول Tbl_GroupsTables ابتدا کد ، عنوان و مبلغ بدهکار و بستانکار گروه حسابها بصورت تجمیعی در سطح اول انتخاب میشوند و این رکوردهای انتخابی به جدول Tbl_Comparative_Reports اضافه میشوند بعد کد ، عنوان و مبلغ بدهکار و بستانکار حسابهای کل مرتبط با گروه حسابها بصورت تجمیعی از همان جدول اول انتخاب و در سطح دوم قرار می گیرند و و تصویر 3 بر عکس این حالت میباشد یعنی حسابهای کل بعنوان اولویت اول و گروه حسابها در اولویت دوم
    تهیه گزارش در دو سطح تا حدودی بدون مشکل انجام میشود ولی مشکل در تهیه گزارش بر اساس سه سطح و بیشتر مبباشد که اولویت سطوح بدرستی انجام نمیشود.
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله eb_1345 : دوشنبه 16 بهمن 1402 در 17:06 عصر

  2. #2
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    برای بدست آوردن رشته شماره اندیس های عناوین حسابها در سطوح انتخاب شده میتوان از کد زیر استفاده کرده:

    Dim I As Byte
    Dim StrIndexNo As String
    For I = 1 To 6
    If Me.Controls("CbPriority" & I).ListIndex <> 6 Then
    StrIndexNo = StrIndexNo & Me.Controls("CbPriority" & I).ListIndex
    End If
    Next
    End Sub


    پست شماره 9 این تاپیک که توسط خودم پاسخ داده شده خوشبختانه در اینجا به درد خودم خورد و توانستم با توجه به رشته شماره اندیس های سطوح انتخاب شده با استفاده از کدهای زیر رشته کد و عنوان حسابها را بدست بیاورم

    Dim StCodFld As String
    Dim StNamFld As String

    Function GetChoice1(Ind As Integer)
    GetChoice1 = Choose(Ind + 1, "GroupCode", "TotalCode", "MoeinCode", "FormalCode", "CostCenterCode", "TaskCode")
    End Function
    Function GetChoice2(Ind As Integer)
    GetChoice2 = Choose(Ind + 1, "GroupName", "TotalName", "MoeinName", "FormalName", "CostCenterName", "TaskName")
    End Function

    Private Sub GetCodingWithIndexNo()
    On Error Resume Next
    For I = 0 To Len(StrIndexNo)
    StCodFld = StCodFld & "," & GetChoice1(Mid(StrIndexNo, I, 1))
    StNamFld = StNamFld & "," & GetChoice2(Mid(StrIndexNo, I, 1))
    Next
    StCodFld = Right(StCodFld, Len(StCodFld) - 1)
    StNamFld = Right(StNamFld, Len(StNamFld) - 1)
    End Sub



  3. #3
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    و با استفاده از کدهای زیر اگر سطوح انتخاب شده تکراری باشد پیغام تکراری بودن سطوح صادر میشود :

    Dim StrPriorityNo As String
    For I = 1 To 6
    If Me.Controls("CbPriority" & I).ListIndex < 6 Then
    StrPriorityNo = StrPriorityNo & Right(Me.Controls("CbPriority" & I).Name, 1)
    End If
    Next
    If Len(Delduplicateletters(StrIndexNo)) <> Len(StrIndexNo) Then
    MsgBox "! سطوح انتخاب شده تکراري ميباشد ", vbOKOnly + vbExclamation + vbMsgBoxRight, "خطا!"
    Exit Sub
    End If

    در کدهای فوق از تابع Delduplicateletters که در قسمت ماژول ها ایجاد نموده ام استفاده کرده ام . با استفاده از این تابع کارکترهای تکراری در یک رشته مشخص میشود .

  4. #4
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    حالا تا همین مرحله کدهای دو پست بالا رو در فایل نمونه جدیدتر قرار میدهیم
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله eb_1345 : دوشنبه 16 بهمن 1402 در 19:33 عصر

  5. #5
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    در همین جا از دوستان عزیز خواهش می کنم در این تاپیک از ایجاد پستهای با مطالب حاشیه ای و غیر مرتبط خودداری فرمایند
    با تشکر

  6. #6
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    حالا با کدهای زیر میتوانیم رکوردهای 6 سطح کدینگ جدول Tbl_GroupsTables رو در یک سطح در جدول Tbl_Comparative_Reports اضافه کنیم


    On Error Resume Next
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Call GetCodingWithIndexNo
    'SetCriteria
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT * FROM Tbl_GroupsTables", dbOpenDynaset)
    rs.MoveLast
    rs.MoveFirst
    For I = 1 To rs.RecordCount
    DoCmd.RunSQL "INSERT INTO Tbl_Comparative_Reports (codlevel,Code, Title, Debit, Credit ) VALUES (1," & rs.Fields(Split(StCodFld, ",")(0)) & ", '" & rs.Fields(Split(StNamFld, ",")(0)) & "'," & rs.Fields("Debit") & ", " & rs.Fields("Credit") & " )"
    DoCmd.RunSQL "INSERT INTO Tbl_Comparative_Reports (codlevel,Code, Title, Debit, Credit ) VALUES (2," & rs.Fields(Split(StCodFld, ",")(1)) & ", '" & rs.Fields(Split(StNamFld, ",")(1)) & "'," & rs.Fields("Debit") & ", " & rs.Fields("Credit") & " )"
    DoCmd.RunSQL "INSERT INTO Tbl_Comparative_Reports (codlevel,Code, Title, Debit, Credit ) VALUES (3," & rs.Fields(Split(StCodFld, ",")(2)) & ", '" & rs.Fields(Split(StNamFld, ",")(2)) & "'," & rs.Fields("Debit") & ", " & rs.Fields("Credit") & " )"
    DoCmd.RunSQL "INSERT INTO Tbl_Comparative_Reports (codlevel,Code, Title, Debit, Credit ) VALUES (4," & rs.Fields(Split(StCodFld, ",")(3)) & ", '" & rs.Fields(Split(StNamFld, ",")(3)) & "'," & rs.Fields("Debit") & ", " & rs.Fields("Credit") & " )"
    DoCmd.RunSQL "INSERT INTO Tbl_Comparative_Reports (codlevel,Code, Title, Debit, Credit ) VALUES (5," & rs.Fields(Split(StCodFld, ",")(4)) & ", '" & rs.Fields(Split(StNamFld, ",")(4)) & "'," & rs.Fields("Debit") & ", " & rs.Fields("Credit") & " )"
    DoCmd.RunSQL "INSERT INTO Tbl_Comparative_Reports (codlevel,Code, Title, Debit, Credit ) VALUES (6," & rs.Fields(Split(StCodFld, ",")(5)) & ", '" & rs.Fields(Split(StNamFld, ",")(5)) & "'," & rs.Fields("Debit") & ", " & rs.Fields("Credit") & " )"
    rs.MoveNext
    Next
    rs.Close
    Set rs = Nothing

    قبل از اجرای کدهای بالا یک فیلد با نام codlevel در جدول Tbl_Comparative_Reports ایجاد می کنیم که در هنگام اضافه شدن رکورد به آن شماره سطح کدینگ در آن درج شود.
    و بالاخره در مرحله نهائی با توجه به تجمیعی شدن رکوردها در کوئری qryGroup_Comparative_Reports لازم است شماره ردیف ها را طوری مرتب کنیم که رکوردها بر اساس سطوح انتخاب شده در زیر هم قرار بگیرند .
    البته با توجه به قابل ویرایش نبودن کوئری qryGroup_Comparative_Reports میتوان این کوئری رو به یک جدول تبدیل کرد و در آن ستون ردیف رو ویرایش کرد
    در واقع چالش و مشکل کار همینجاست که با توجه به ستون شماره سطح شماره های ستون ردیف رو به چه صورتی باید تغییر داد که رکوردها بر اساس سطوح انتخاب شده زیر هم قرار بگیرند
    آخرین ویرایش به وسیله eb_1345 : چهارشنبه 18 بهمن 1402 در 12:57 عصر

  7. #7
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها


  8. #8
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806
    آخرین ویرایش به وسیله eb_1345 : پنج شنبه 19 بهمن 1402 در 05:24 صبح

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آذر 1387
    محل زندگی
    خراسان
    پست
    435

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    با سلام و احترام خدمت استاد عزیز این گزارش قرار است در نمای فرم قابل مشاهده باشد؟ چون این گزارش در نمای گزارش راحت تر قابل کنترل است. در تصاویر زیر بر اساس نوع دفتری که کاربر انتخاب می کند (کل-معین-تفضیلی) گزارش محدود می شود و گروه مورد نظر در گزارش قابل مشاهده می شود.




    Screenshot 2024-02-09 032503.png

    Screenshot 2024-02-09 032911.png

    Screenshot 2024-02-09 032850.png

    Screenshot 2024-02-09 032827.png

  10. #10
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    نقل قول نوشته شده توسط mehdi_fiz مشاهده تاپیک
    این گزارش قرار است در نمای فرم قابل مشاهده باشد؟ چون این گزارش در نمای گزارش راحت تر قابل کنترل است. در تصاویر زیر بر اساس نوع دفتری که کاربر انتخاب می کند (کل-معین-تفضیلی) گزارش محدود می شود و گروه مورد نظر در گزارش قابل مشاهده می شود.
    سلام
    اطلاعات این نوع گزارش از جدول یا کوئری مربوطه به اکسل ارسال و در فایل اکسل نمایش داده میشه .به همین خاطر دیگر لزومی به نمایش آن در فرم وجود نداره
    تهیه گزارشات مقایسه ای تا حدودی بصورت ماتریسی انجام میشه
    به تصویر ضمیمه توجه بفرما!
    مثلاً در حالت دو سطحی در مقابل هر گزینه(عنصر) ستون اول پنج گزینه از ستون دوم قابل انتخاب میباشد(گزینه هم نام تکراریست و قابل انتخاب نمیباشد) . و بر عکس در مقابل هر گزینه ستون دوم پنج گزینه از ستون اول قابل انتخاب میباشد. در واقع در دو سطحی 30 حالت وجود دارد
    و همینطور در سه سطحی در مقابل هر گزینه از ستون اول 5 گزینه از ستون سطح دوم و 4 گزینه از ستون سطح سوم قابل انتخاب میباشد
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: png 1.png‏ (26.0 کیلوبایت, 32 دیدار)

  11. #11
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,061

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    در همین جا از دوستان عزیز خواهش می کنم در این تاپیک از ایجاد پستهای با مطالب حاشیه ای و غیر مرتبط خودداری فرمایند
    با تشکر
    سلام و روز خوش
    امیدوارم این پست آف تاپیک محسوب نشه.

    دیشب این تاپیک رو دیدم - و اینجور به نظر اومد که دو مورد مد نظر شما بوده:
    1- ساخت یک لیست یا array یا ... از سطوح انتخابی که a: تکراری هم نباشه و b: انتهای اون با "هیچکدام" مشخص بشه
    2- ساخت یک جدول/کوئری بر اساس مورد بالا

    مورد اول رو که گویا حل شده-
    ولی اگر اجازه بدین بابت تکمیل بحث دو روش دیگه رو هم من اضافه کنم.

    ولی مورد دوم رو درست متوجه نشدم:
    توجه به ستون شماره سطح شماره های ستون ردیف رو به چه صورتی باید تغییر داد که رکوردها بر اساس سطوح انتخاب شده زیر هم قرار بگیرند
    در کد پست شماره 6 درون حلقه ای که روی همه رکوردها میچرخه برای همه سطوح (6 تا) یک insert دارین،
    یعنی جدول جدید شما باید بدون توجه به انتخاب سطوح، دیتا هر 6 سطح رو بیاره یا من اشتباه میکنم.

    این رو اگر یک مثال تصویری روی دیتا نمونه با یک انتخاب نمونه مشخص کنین ممنون میشم.
    شاید اصلا راه دیگه ای براش باشه.

  12. #12
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,061

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    برای ساخت یک سری انتخاب با تعداد نامعین و غیرتکراری با حفظ ترتیب، یک راه استفاده از collection هست.
    در collection میتونیم از key برای هر item استفاده کنیم و به طور خودکار خودش اجازه کلید تکراری نمیده (error صادر میشه که اونو تشخیص میدیم).

    بر همین اساس، یک طراحی ممکن فرم Frm_Comparative_Reports میتونه به صورت زیر باشه:
    1- اول یک جدول برای اولویت ها میسازیم
    1.png

    از این جدول به عنوان row source کمبوها استفاده میکنیم، این کار به ما اجازه میده نگهداری برنامه و کدنویسی ساده تر باشه.
    فقط در اولویت اول (کمبو CbPriority1) مقدار "هیچکدام" نباید باشه پس :
    SELECT PriorityID, Priority
    FROM Priorities
    WHERE PriorityID<99


    برای رفرنس دادن به هر کمبو، یک تابع مینویسیم که که با گرفتن اندیس کمبو، اون رو برگردونه:
    Private Function Priority(i As Integer) As ComboBox
    Set Priority = Me.Controls("CbPriority" + Trim(i))
    End Function

    این کار به ما اجازه میده علاوه بر کدنویسی ساده تر، برنامه رو هم قابل انعطاف کنیم جوری که با تغییر تعداد اولویت ها (کمبوها) کد برنامه تغییر نمیکنه.

    برای هر کمبو نیاز هست که اگر "هیچکدام" انتخاب شد، کمبوهای بعدی هم به "هیچکدام" تغییر پیدا کنن،
    این رو هم براش یک کد عمومی مینویسیم به afterupdate کمبو نسبت میدیم:
    Public Function Check_None(N As Integer)
    Dim j As Integer
    If Priority(N) < 99 Then Exit Function
    For j = N + 1 To CombosCount
    Priority(j) = 99
    Next
    End Function


    حالا در form_load همزمان با مقداردهی خودکار به کمبوها،
    این تابع رو به afterupdate اونها نسبت میدیم:
    Private Sub Form_Load()
    For i = 1 To CombosCount
    Priority(i).value = i
    Priority(i).AfterUpdate = "=Check_None(" & i & ")"
    Next
    End Sub


    حالا 2 تا collection تعریف میکنیم، یکی برای IDها و یکی هم اسم اولویت ها (هر کدوم که نیاز نیست میشه حذف کرد)،
    و در یک حلقه یکی یکی از کمبوها مقدار رو میخونیم و به این کالکشن ها اضافه میکنیم تا زمانی که به تکراری برسیم (خطا)
    یا به "هیچکدام" برسیم یعنی پایان لیست:
    Sub GetPriorities()
    Set IDs = New Collection
    Set Texts = New Collection
    On Error GoTo Duplicate
    For i = 1 To CombosCount
    P_ID = Priority(i).value
    P_Text = Priority(i).Column(1)
    If P_ID = 99 Then Exit For
    IDs.Add P_ID, CStr(P_ID)
    Texts.Add P_Text, P_Text
    Next
    Exit Sub
    Duplicate:
    MsgBox P_Text, vbExclamation, "اولویت تکراری"
    End Sub


    نمونه این فرم رو در برنامه پیوست پست های بعدی که روش دوم رو هم در برمیگیره میتونین ببینین.

  13. #13
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,061

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    یک روش دیگه استفاده از لیست باکس برای نمایش اولویت ها هست که به صورت خودکار نیاز به چک برای تکراری بودن رو برطرف میکنه.
    فقط کافی هست مقدار "هیچکدام" هیچوقت به بالای لیست نرسه:
    2.png

    Option Compare Database
    Option Explicit


    Private i As Integer
    Private P_ID As Integer
    Private P_Text As String
    Private IDs As Collection
    Private Texts As Collection
    Private None As String


    Private Sub Form_Load()
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT Priority FROM Priorities ORDER By PriorityID")
    Do Until rs.EOF
    Me.LB_Priorities.AddItem rs("Priority")
    rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    Me.LB_Priorities = Me.LB_Priorities.ItemData(0)
    None = Me.LB_Priorities.ItemData(Me.LB_Priorities.ListCou nt - 1)
    End Sub


    Private Sub BTN_Down_Click()
    Dim index As Integer
    With Me.LB_Priorities
    index = .ListIndex
    If index = .ListCount - 1 Then Exit Sub
    Dim vlu As String
    vlu = .value
    .RemoveItem (index)
    .AddItem vlu, index + 1
    .value = vlu
    End With
    End Sub


    Private Sub BTN_Up_Click()
    Dim index As Integer
    Dim vlu As String
    With Me.LB_Priorities
    index = .ListIndex
    If index = 0 Then Exit Sub
    vlu = .value
    If (index = 1 And vlu = None) Then Exit Sub
    .RemoveItem (index)
    .AddItem vlu, index - 1
    .value = vlu
    End With
    End Sub


    Private Sub CmdRunCode_Click()
    GetPriorities
    For i = 1 To Texts.Count
    Debug.Print Texts(i), IDs(i)
    Next
    End Sub


    Sub GetPriorities()
    Set IDs = New Collection
    Set Texts = New Collection
    For i = 1 To Me.LB_Priorities.ListCount
    P_Text = Me.LB_Priorities.ItemData(i - 1)
    If P_Text = None Then Exit Sub
    P_ID = DLookup("PriorityID", "Priorities", "Priority='" & P_Text & "'")
    Texts.Add P_Text, P_Text
    IDs.Add P_ID, CStr(P_ID)
    Next
    End Sub


    این فرم در برنامه پیوست به اسم Frm_Comparative_Reports_2 آمده.
    فایل های ضمیمه فایل های ضمیمه

  14. #14
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    دیشب این تاپیک رو دیدم - و اینجور به نظر اومد که دو مورد مد نظر شما بوده:
    1- ساخت یک لیست یا array یا ... از سطوح انتخابی که a: تکراری هم نباشه و b: انتهای اون با "هیچکدام" مشخص بشه
    2- ساخت یک جدول/کوئری بر اساس مورد بالا

    مورد اول رو که گویا حل شده-
    ولی مورد دوم رو درست متوجه نشدم:
    سلام و درود فراوان خدمت دوست عزیز و استاد بزرگ خودم!
    بسیار ممنون و سپاسگزارم از عنایت و پیگیری ای که در خصوص این تاپیک داشته این
    همونطور که جنابعالی هم اشاره نمودی برای بدست آوردن لیست سطوح انتخابی که قابل تکرار هم نباشد با استفاده از کدهای پست 2 و 3 مشکل برطرف شده و مشکل اصلی اینجا بود که حالا که سطوح انتخابی مشخص شده بر اساس ترتیب این سطوح به چه صورتی رکوردهای تجمیعی ثبت شده حسابها رو در زیر هم مرتب نمایم
    خوشبختانه طی یکی دو روز گذشته تا حدود زیادی موفق شدم این مشکل ترتیب رکوردهای تجمیعی بر اساس ترتیب سطوح انتخابی هم رفع نمایم(البته در فایل اصلی برنامه)
    اما از آنجائیکه که ممکن است هنوز بعضی از دوستان در خصوص این نوع گزارش و هدف از تهیه آن ابهام داشته باشند مایلم یک توضیح مختصری بشرح زیر ارائه نمایم :
    در حسابداری برای اینکه رویدادهای فراوان و متنوع مالی رو با نظم و ترتیب خاصی دسته بندی کنیم از کدینک حسابها استفاده می کنیم . کدینگ در لفظ به معنای شماره گذاری است و مفهوم آن در حسابداری اینست که حسابها رو کد گذاری کنیم. ساختار استاندارد کدینگ در حسابداری در 4 سطح شامل گروه حسابها ، حسابهای کل ، حسابهای معین و حسابهای تفصیلی میباشد .با این شرح مختصر از کدینگ حسابها حالا سوال اینست که با استفاده از کدینگ حسابها چه نوع گزارشی رو میخواهیم تهیه کنیم .
    فرض کنید یک شرکت در طی سال مالی یا سال های مالی خود رویدادهای مالی زیاد و متنوعی رو ثبت کرده . حالا بنده نوعی بعنوان مدیر مالی میخواهم خلاصه این رویدادهای مالی که ممکن است شامل هزاران رکورد باشد بصورت تجمیعی و در سطوح کدینگ حسابها مشاهده و ارقام آن را برای ماهها و سال های انتخابی مقایسه کنم .
    بعنوان نمونه بنده 3 تصویر از مراحل تهیه این گزارش در ضمیمه قرار داده ام .
    ابتدا در فرم بر اساس فیلترهای مورد نظر مشخص کرده ام که میخواهم گزارش تجمیعی حسابهای ثبت شده رو در سه سطح به ترتیب گروه » کل » معین برای من تهیه کند . یعنی چی ؟ یعنی اینکه من بر اساس کدهایی که برای این گزارش بکار برده ام میخواهم در وحله اول تمام رکوردهای ثبت شده در گروه های مربوطه جمع زده شود و بعنوان اولین سطح در جدول قرار بگیرد ، در مرحله بعد میخواهم تمام حساب های کل زیر مجموعه گروههای مربوطه که در سطح یک قرار گرفته اند جستجو بشه باهم تجمع شوند و بعنوان سطح دوم در زیر گروه مربوط به خودش قرار بگیرد و بالاخره در مرحله سوم میخواهم تمام حسابهای معین زیر مجموعه هر حساب کل رو جستجو ، تجمیع و بعنوان سطح سوم در زیر حسابهای کل مربوطه قرار بگیرد .
    در تصویر سوم که خروجی گزارش در فایل اکسل میباشد گروه حسابها که دو رقمی میباشد در سطح اول ، حسابهای کل هر گروه که 4 رقمی میاشد در سطح 2 و حسابهای معین زیر مجموعه هر حساب کل که 7 رقمی میباشد در سطح 3 مرتب شده اند.
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله eb_1345 : جمعه 27 بهمن 1402 در 06:34 صبح

  15. #15
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    فرمت عددی نمونه گزارش خروجی پست بالا بصورت تصویر ضمیمه اصلاح کردم
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله eb_1345 : پنج شنبه 26 بهمن 1402 در 21:27 عصر

  16. #16
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    ویک نمونه گزارش چهار سطحی معین» کل » گروه » مرکز هزینه
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: png 1.png‏ (38.5 کیلوبایت, 25 دیدار)

  17. #17
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    و یک نمونه سه سطحی گروه » کل » معین در حالت انباشته
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: png 2.png‏ (43.3 کیلوبایت, 25 دیدار)

  18. #18
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,061

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    سلام و درود فراوان خدمت دوست عزیز خودم!
    بسیار ممنون و سپاسگزارم از عنایت و پیگیری ای که در خصوص این تاپیک داشته این
    سلام دوباره

    به نوبه خودم تشکر میکنم از این که با وجود گرفتاری و مشغله ای که دارین اینجور دقیق و مفصل مطلب رو توضیح دادین،
    بسیار سودمند بود و الان کاملا متوجه شدم موضوع رو.
    برای من این شکل گزارش کمی مبهم بود چون تا بحال ندیده بودم که گزارش عملکرد فرمتی غیر از top-down داشته باشه (پست 15).
    یعنی این که فرضا در گزارش عملکرد سطح پایینتر پیش از سطح بالاتر بیاد (پست 16) دست کم برای من یکی جالب و نو بود.

    البته باید اذعان کنم من فقط یک بار برنامه حسابداری نوشتم (اون هم سال 69-70) و تحت dos و نه با foxpro !

    و این که از روی تصاویر پیوست مشخص هست که خواسته هم برآورده شده.

    براتون آرزوی موفقیت بیشتر دارم و امیدوارم از مطالب و نکات مفید و آموزنده ای که میگذارین بازهم استفاده کنم (مثل همیشه).

  19. #19
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    806

    نقل قول: تهیه گزارشات مقایسه ای بر اساس سطوح کدینگ حسابها

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    براتون آرزوی موفقیت بیشتر دارم و امیدوارم از مطالب و نکات مفید و آموزنده ای که میگذارین بازهم استفاده کنم (مثل همیشه).
    وقت عالی متعالی استاد گرامی!
    سپاسگزارم!
    بنده هم متقابلاً برای جنابعالی سلامتی و سعادت و عاقبت بخیری رو از خداوند بزرگ خواستارم

تاپیک های مشابه

  1. لایسنس سیسکو Cisco - لایسنس ASA Fire Power ISE - لایسنس CUCM - لایسنس WebEx
    نوشته شده توسط morezlic2000 در بخش تالار های مرتبط با شبکه و امنیت
    پاسخ: 0
    آخرین پست: پنج شنبه 05 مرداد 1402, 19:12 عصر
  2. تست سرعت اس اس دی در مقایسه با هارد دیسک
    نوشته شده توسط elahe4321n در بخش بک لینک (Back Links)
    پاسخ: 0
    آخرین پست: شنبه 26 آذر 1401, 17:00 عصر
  3. لایسنس سیسکو Cisco - لایسنس CUCM - لایسنس FirePower – لایسنس WebEx
    نوشته شده توسط root255 در بخش تالار های مرتبط با شبکه و امنیت
    پاسخ: 0
    آخرین پست: شنبه 22 آبان 1400, 17:13 عصر
  4. پاسخ: 0
    آخرین پست: سه شنبه 18 خرداد 1400, 14:15 عصر
  5. سوال: نحوه مقایسه یک رشته هش شده با الگوریتم md5و مقایسه صحت آن
    نوشته شده توسط esafb52 در بخش C#‎‎
    پاسخ: 7
    آخرین پست: شنبه 03 فروردین 1392, 13:44 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •