דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. יצירת דוחות

יצירת דוחות

מתוזמן נעוץ נעול הועבר ארכיון code613m
9 פוסטים 4 כותבים 586 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

    אז כמו שידוע לכם אני כותב תוכנית פשוטה לניהול תרומות (לא ח"ו כדי להתחרות באף אחד בפורום, אלא כדי ללמוד..)
    כרגע יש בה 4 מסכים: 1. הזנת תורמים. 2. הצגת רשימת התורמים. 3. שמירת הנתונים. 4. טעינת הנתונים. כל אלה ב"ה עובדים ואני מרגיש ממש ילד גדול :lol:
    אני רוצה להוסיף עוד מסך שיטפל ביצירת דוחות: כמה תורמים פעילים יש, כמה תורמים תרמו סך מסוים במצטבר/חד פעמי, אלו תורמים הפסיקו לתרום וכן על זה הדרך. כלומר במסך הזה אני רוצה שהמשתמש יוכל לבצע שאילתות על הנתונים שהוא הזין לתכנית (כרגע אני בכוונה לא עובד עם דטהבייס, כדי ללמוד איך עושים זאת בצורה רגילה. ==> אם זה נראה לכם מיותר, ועדיף ישר ללמוד להשתמש בSQL אז תגידו לי שלא אבזבז את זמני לריק..).
    אני מבין שבשביל זה אני צריך להשתמש בLINQ to Object.
    השאלה שלי היא: איך מומלץ לעשות זאת:
    נניח שאני רוצה לאפשר לו לבצע את השאילתות הבאות (זה כרגע מה שעולה לי בראש):
    הצג את כל התורמים הפעילים
    הצג את כל התורמים הלא פעילים (והצג כמה תרמו בסה"כ, ובמשך כמה זמן תרמו סכום זה)
    הצג את כל התורמים שהפסיקו לתרום לפני חצי שנה (או כל תקופה אחרת שהמשתמש מגדיר)
    הצג את כל התורמים שתרמו בפעם אחת לפחות 1000 ₪ (או כל סכום אחר שהמשתמש מזין)
    הצג את כל התורמים שהייתה להם הו"ק (בבנק או באשראי) עד לפני זמן מסויים, והפסיקו?
    הצג את כל התורמים שהתרומה שלהם מסתיימת החודש
    הצג את כל מי שתרם בין התאריכים הנ"ל
    הצג את כל מי שתרם בין התאריכים הנ"ל סכום מסוים
    הצג את סכום התרומה המצטבר של פלוני
    הצג את הסכום המצטבר של פלוני עם פירוט במשך כמה חדשים תרם, ומהו הסכום החדשי (אם מדובר בסכום משתנה - פרט)
    הצג את כל התורמים שתרמו בצורה חד פעמית ואת הסכום שתרמו (אם תרמו כמה פעמים חד פעמית - הצג את כל הפעמים שתרמו ואת הסכום המצטבר)

    אני לא שואל איך לממש זאת בקוד - את זה אני אשבור את הראש לבד :lol:
    השאלה שלי איך כדאי להציג זאת למשתמש בטופס. האם לבנות פקדים כמספר הפונקציות הנ"ל והמשתמש צריך ללחוץ על הכפתור הרצוי. (זה נראה לי קצת מגביל אותו ואותי (כיון שנניח ויהיו לי אח"כ עוד שאילתות - אז אצטרך לעצב את הטופס מחדש ולהוסיף לו פקדים.. וגם זה נראה לי לא כ"כ יפה).
    או שיש דרך לתת לו להזין את השאילתה ושאני אדע לפענח אותה ולהתאים את הקוד למה שהוא מזין?

    פורסם במקור בפורום CODE613 ב06/07/2015 15:30 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • ט מנותק
      ט מנותק
      טל למדן
      כתב ב נערך לאחרונה על ידי
      #2

      לשם כך קיימים טפסי חיפוש עם פרמטרים לחיפוש ובדומה לכך ניתן ליצור פרמטרים לדוחות כשהתוצאה זה בעצם שורות עם הפרטי תורמים בגריד (אם הבנתי נכון)
      יש פה טופס כזה לדוגמא זה אומנם מסך חיפוש סטנדרטי אבל אפשר פשוט לשים את השדות המתאימים וליצור את השאילתה ולקבל את התוצאות אם באמת לכל השאילתות אמורה להתקבל אותו סוג רשומה
      ועדיף לעשות עם קישור לדטה בייס חבל על הזמן עם הלינק זה אומנם נחמד לדעת אבל הרבה יותר חשוב דטה בייס

      Capture.PNG

      פורסם במקור בפורום CODE613 ב06/07/2015 15:57 (+03:00)

      תגובה 1 תגובה אחרונה
      1
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

        אם הבנתיך נכון, אתה נותן טופס שבו המשתמש יכול להכניס איזה פרמטר שהוא רוצה (כמובן כל אחד בתא המתאים)
        ואז כשהוא לוחץ על חיפוש, אתה לוקח את הערכים שהוא הזין ועל פי זה בונה את השאילתא
        (לדוגמא, אם הוא הזין רק את הקוד אתה נותן לו את כל הערכים שמופיע בהם הקוד הזה, וכן על זה הדרך).
        אני צריך לחשוב על זה לראות אם זה מספיק לי לכל הצרכים שלי.. אבל זה נשמע פשוט וחכם!!

        פורסם במקור בפורום CODE613 ב06/07/2015 17:00 (+03:00)

        תגובה 1 תגובה אחרונה
        0
        • H מנותק
          H מנותק
          hsf
          כתב ב נערך לאחרונה על ידי
          #4

          בהתאם למה שהוצע לעיל, רציתי להרחיב מעט,
          מעט ארוך, אולי לא מתקדם,
          אבל זה מה שיש לי ממה שהכנתי לפני זמן רב.
          מצורף דוגמא - צילום מסך:

          דוגמא.png

          מצורף דוגמא - קוד לעדכון רשימה - תצוגת רשימה:

          Public Function Rahema1()
          'פותח טקסט
          Text1 = "SELECT  [רשימת הזמנות].[קוד הזמנה], [רשימת הזמנות].[" & [מיין לפי] & "] AS מיין, "
          
          'טקסט רשימה
          Text2 = " [רשימת הזמנות].[קוד הזמנה] AS הזמנה, [רשימת הזמנות].[קוד לקוח] AS לקוח, [רשימת הזמנות].פרטים, [רשימת הזמנות].כתובת, [רשימת הזמנות].קומה, [רשימת הזמנות].[תאריך הזמנה], [רשימת הזמנות].[תאריך הזמנה עברי], [רשימת הזמנות].[הוזמן לתאריך], [רשימת הזמנות].[הוזמן לתאריך עברי], [רשימת הזמנות].[סופק בתאריך], [רשימת הזמנות].[סופק בתאריך עברי], [רשימת הזמנות].לתשלום, [רשימת הזמנות].שולם, [רשימת הזמנות].הקפה, IIF([קוד לקוח], DLookUp('[הקפה]','[רשימת אנשי קשר]','[קוד]=' & [קוד לקוח])) AS [הקפת לקוח], [רשימת הזמנות].מצב, DCount('[שורה]','[פרטי הזמנה - רשימת הזמנה]','[קוד הזמנה]=' & [קוד הזמנה]) AS ש_הזמנה, DCount('[שורה]','[פרטי הזמנה - רשימת הספקה]','[קוד הזמנה]=' & [קוד הזמנה]) AS ש_הספקה FROM [רשימת הזמנות] "
          'סינון בסיס
          Text3 = "WHERE (((IIf([FORMS]![רשימת הזמנות]![הצג הכל]=-1,""הצג"",IIf([מצב]=""בהזמנה"" And [FORMS]![רשימת הזמנות]![בהזמנה]=-1,""הצג"",IIf([מצב]=""בוצע"" And [FORMS]![רשימת הזמנות]![בוצע]=-1,""הצג"",IIf([מצב]=""בוטל"" And [FORMS]![רשימת הזמנות]![בוטל]=-1,""הצג"",IIf([מצב]=""מושהה"" And [FORMS]![רשימת הזמנות]![מושהה]=-1,""הצג"",""""))))))=""הצג"")"
          'סינן תאריכים
          Text4 = IIf([סוג סינון] = "בין תאריכים", " AND ([רשימת הזמנות].[" & [אפשרות סינון] & "]) Between [forms]![רשימת הזמנות]![מתאריך] AND ([forms]![רשימת הזמנות]![עד תאריך])) ", IIf([סוג סינון] = "מתאריך", " AND ([רשימת הזמנות].[" & [אפשרות סינון] & "])>=[מתאריך])", IIf([סוג סינון] = "עד תאריך", " AND ([רשימת הזמנות].[" & [אפשרות סינון] & "]<=[עד תאריך])) ", ")")))
          
          
          'סינון סה לתשלום
              If ([סוג סינון סה לתשלום] = "ללא סינון") Then
                  Text5 = ""
              End If
              If ([סוג סינון סה לתשלום] = "שווה ל...") Then
                  Text5 = " AND (([רשימת הזמנות].[לתשלום]) Like [FORMS]![רשימת הזמנות]![סה לתשלום-1]) "
              End If
              If ([סוג סינון סה לתשלום] = "גדול מ...") Then
                  Text5 = " AND (([רשימת הזמנות].[לתשלום]) > [FORMS]![רשימת הזמנות]![סה לתשלום-1]) "
              End If
              If ([סוג סינון סה לתשלום] = "קטן מ...") Then
                  Text5 = " AND (([רשימת הזמנות].[לתשלום]) < [FORMS]![רשימת הזמנות]![סה לתשלום-1]) "
              End If
              If ([סוג סינון סה לתשלום] = "בין...") Then
                  Text5 = " AND (([רשימת הזמנות].[לתשלום]) Between [FORMS]![רשימת הזמנות]![סה לתשלום-1] And [FORMS]![רשימת הזמנות]![סה לתשלום-2]) "
              End If
          
          'סינון סה שולם
              If ([סוג סינון סה שולם] = "ללא סינון") Then
                  Text6 = ""
              End If
              If ([סוג סינון סה שולם] = "שווה ל...") Then
                  Text6 = " AND (([רשימת הזמנות].[שולם]) Like [FORMS]![רשימת הזמנות]![סה שולם-1]) "
              End If
              If ([סוג סינון סה שולם] = "גדול מ...") Then
                  Text6 = " AND (([רשימת הזמנות].[שולם]) > [FORMS]![רשימת הזמנות]![סה שולם-1]) "
              End If
              If ([סוג סינון סה שולם] = "קטן מ...") Then
                  Text6 = " AND (([רשימת הזמנות].[שולם]) < [FORMS]![רשימת הזמנות]![סה שולם-1]) "
              End If
              If ([סוג סינון סה שולם] = "בין...") Then
                  Text6 = " AND (([רשימת הזמנות].[שולם]) Between [FORMS]![רשימת הזמנות]![סה שולם-1] And [FORMS]![רשימת הזמנות]![סה שולם-2]) "
              End If
          
          'סינון הקפה
              If ([סוג סינון הקפה] = "ללא סינון") Then
                  Text7 = ""
              End If
              If ([סוג סינון הקפה] = "שווה ל...") Then
                  Text7 = " AND (([רשימת הזמנות].[הקפה]) Like [FORMS]![רשימת הזמנות]![הקפה-1]) "
              End If
              If ([סוג סינון הקפה] = "גדול מ...") Then
                  Text7 = " AND (([רשימת הזמנות].[הקפה]) > [FORMS]![רשימת הזמנות]![הקפה-1]) "
              End If
              If ([סוג סינון הקפה] = "קטן מ...") Then
                  Text7 = " AND (([רשימת הזמנות].[הקפה]) < [FORMS]![רשימת הזמנות]![הקפה-1]) "
              End If
              If ([סוג סינון הקפה] = "בין...") Then
                  Text7 = " AND (([רשימת הזמנות].[הקפה]) Between [FORMS]![רשימת הזמנות]![הקפה-1] And [FORMS]![רשימת הזמנות]![הקפה-2]) "
              End If
          
          
          'מיון
          Text8 = "ORDER BY  [רשימת הזמנות].[" & [מיין לפי] & "]" & [מיון עולה יורד] & ";"
          
          'מחברת טקסט רשימה
          Text9 = Text1 & Text2 & Text3 & Text4 & Text5 & Text6 & Text7 & Text8
          
          'מעדכן רשימה
          [רשימת הזמנות].RowSource = Text9
          'מעדכן שדה איתור
          [שדה איתור].RowSource = Text9
                  ' מרענן רשימה
                  DoCmd.RunCommand acCmdRefreshPage
          
          End Function
          

          מצורף דוגמא - קוד ליצירת רשימה - עבור דוח:

          Public Function Rahema2()
          'פותח טקסט
          Text1 = "SELECT [רשימת הזמנות].[" & [מיין לפי] & "] AS מיין, "
          'טקסט רשימה
          Text2 = " [רשימת הזמנות].[קוד הזמנה] AS הזמנה, [רשימת הזמנות].[קוד לקוח] AS לקוח, [רשימת הזמנות].פרטים, [רשימת הזמנות].כתובת, [רשימת הזמנות].קומה, [רשימת הזמנות].[תאריך הזמנה], [רשימת הזמנות].[תאריך הזמנה עברי], [רשימת הזמנות].[הוזמן לתאריך], [רשימת הזמנות].[הוזמן לתאריך עברי], [רשימת הזמנות].[סופק בתאריך], [רשימת הזמנות].[סופק בתאריך עברי], [רשימת הזמנות].לתשלום, [רשימת הזמנות].שולם, [רשימת הזמנות].הקפה, [רשימת הזמנות].מצב  INTO [דוח הזמנות] FROM [רשימת הזמנות]  "
          
          'סינון בסיס
          Text3 = "WHERE (((IIf([FORMS]![רשימת הזמנות]![הצג הכל]=-1,""הצג"",IIf([מצב]=""בהזמנה"" And [FORMS]![רשימת הזמנות]![בהזמנה]=-1,""הצג"",IIf([מצב]=""בוצע"" And [FORMS]![רשימת הזמנות]![בוצע]=-1,""הצג"",IIf([מצב]=""בוטל"" And [FORMS]![רשימת הזמנות]![בוטל]=-1,""הצג"",IIf([מצב]=""מושהה"" And [FORMS]![רשימת הזמנות]![מושהה]=-1,""הצג"",""""))))))=""הצג"")"
          'סינן תאריכים
          Text4 = IIf([סוג סינון] = "בין תאריכים", " AND ([רשימת הזמנות].[" & [אפשרות סינון] & "]) Between [forms]![רשימת הזמנות]![מתאריך] AND ([forms]![רשימת הזמנות]![עד תאריך])) ", IIf([סוג סינון] = "מתאריך", " AND ([רשימת הזמנות].[" & [אפשרות סינון] & "])>=[מתאריך])", IIf([סוג סינון] = "עד תאריך", " AND ([רשימת הזמנות].[" & [אפשרות סינון] & "]<=[עד תאריך])) ", ")")))
          
          
          'סינון סה לתשלום
              If ([סוג סינון סה לתשלום] = "ללא סינון") Then
                  Text5 = ""
              End If
              If ([סוג סינון סה לתשלום] = "שווה ל...") Then
                  Text5 = " AND (([רשימת הזמנות].[לתשלום]) Like [FORMS]![רשימת הזמנות]![סה לתשלום-1]) "
              End If
              If ([סוג סינון סה לתשלום] = "גדול מ...") Then
                  Text5 = " AND (([רשימת הזמנות].[לתשלום]) > [FORMS]![רשימת הזמנות]![סה לתשלום-1]) "
              End If
              If ([סוג סינון סה לתשלום] = "קטן מ...") Then
                  Text5 = " AND (([רשימת הזמנות].[לתשלום]) < [FORMS]![רשימת הזמנות]![סה לתשלום-1]) "
              End If
              If ([סוג סינון סה לתשלום] = "בין...") Then
                  Text5 = " AND (([רשימת הזמנות].[לתשלום]) Between [FORMS]![רשימת הזמנות]![סה לתשלום-1] And [FORMS]![רשימת הזמנות]![סה לתשלום-2]) "
              End If
          
          'סינון סה שולם
              If ([סוג סינון סה שולם] = "ללא סינון") Then
                  Text6 = ""
              End If
              If ([סוג סינון סה שולם] = "שווה ל...") Then
                  Text6 = " AND (([רשימת הזמנות].[שולם]) Like [FORMS]![רשימת הזמנות]![סה שולם-1]) "
              End If
              If ([סוג סינון סה שולם] = "גדול מ...") Then
                  Text6 = " AND (([רשימת הזמנות].[שולם]) > [FORMS]![רשימת הזמנות]![סה שולם-1]) "
              End If
              If ([סוג סינון סה שולם] = "קטן מ...") Then
                  Text6 = " AND (([רשימת הזמנות].[שולם]) < [FORMS]![רשימת הזמנות]![סה שולם-1]) "
              End If
              If ([סוג סינון סה שולם] = "בין...") Then
                  Text6 = " AND (([רשימת הזמנות].[שולם]) Between [FORMS]![רשימת הזמנות]![סה שולם-1] And [FORMS]![רשימת הזמנות]![סה שולם-2]) "
              End If
          
          'סינון הקפה
              If ([סוג סינון הקפה] = "ללא סינון") Then
                  Text7 = ""
              End If
              If ([סוג סינון הקפה] = "שווה ל...") Then
                  Text7 = " AND (([רשימת הזמנות].[הקפה]) Like [FORMS]![רשימת הזמנות]![הקפה-1]) "
              End If
              If ([סוג סינון הקפה] = "גדול מ...") Then
                  Text7 = " AND (([רשימת הזמנות].[הקפה]) > [FORMS]![רשימת הזמנות]![הקפה-1]) "
              End If
              If ([סוג סינון הקפה] = "קטן מ...") Then
                  Text7 = " AND (([רשימת הזמנות].[הקפה]) < [FORMS]![רשימת הזמנות]![הקפה-1]) "
              End If
              If ([סוג סינון הקפה] = "בין...") Then
                  Text7 = " AND (([רשימת הזמנות].[הקפה]) Between [FORMS]![רשימת הזמנות]![הקפה-1] And [FORMS]![רשימת הזמנות]![הקפה-2]) "
              End If
          
          
          
          'מיון
          Text8 = "ORDER BY  [רשימת הזמנות].[" & [מיין לפי] & "]" & [מיון עולה יורד] & ";"
          
          'מחברת טקסט רשימה
          Text9 = Text1 & Text2 & Text3 & Text4 & Text5 & Text6 & Text7 & Text8
              ' יוצר רשימת הזמנות
              DoCmd.RunSQL "" & Text9 & "", -1
          
          End Function
          

          בכל אופן שיהיה לך הרבה הצלחה

          פורסם במקור בפורום CODE613 ב07/07/2015 00:08 (+03:00)

          תגובה 1 תגובה אחרונה
          1
          • H מנותק
            H מנותק
            hsf
            כתב ב נערך לאחרונה על ידי
            #5

            בהמשך לתגובתי הקודמת, א"כ לכאו' כדאי ליצור כפי האפשרות הראשונה שבחרת שיהיה בתצוגת רשימה, ויהיה ניתן להוסיף עוד סוגי דוחות עם פרמטרים, כשיהיה טופס ייעודי ליצירת דוחות חדשים...

            פורסם במקור בפורום CODE613 ב07/07/2015 00:10 (+03:00)

            תגובה 1 תגובה אחרונה
            0
            • A מנותק
              A מנותק
              avr416
              כתב ב נערך לאחרונה על ידי
              #6

              תודה רבה!
              אני לא מבין קוד של visual basic וקצת התבלבלתי מרוב הסוגרים והאותיות... כך שלא בדיוק הבנתי את הקוד שכתבת..
              בכל אופן, אתה כן ממליץ ליצור פקדים יעודיים של דוחות מוכנים, ועם זה לתת פקד שפותח חלון חדש של דוח מותאם אישית?

              פורסם במקור בפורום CODE613 ב07/07/2015 15:07 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • H מנותק
                H מנותק
                hsf
                כתב ב נערך לאחרונה על ידי
                #7

                נכון, וליצור דוח מותאם אישית כמו שטל למדן כתב, ולתת אפשרות לשמור את זה ברשימת הדוחות המוכנים

                פורסם במקור בפורום CODE613 ב07/07/2015 16:56 (+03:00)

                תגובה 1 תגובה אחרונה
                1
                • א מנותק
                  א מנותק
                  ארכיטקט
                  כתב ב נערך לאחרונה על ידי
                  #8

                  ראה כאן כעת אנו בפיתוח וובי של כל הסיפור הזה, ומתיימרים להיות בלי נדר הגוגל של מסדי הנתונים הפרטיים. חיפוש שייאפשר למשתמש לבצע כל שאילתה אפשרית.

                  אז אם אתה מתכוון להתחרות בי אשמח תמיד ללמוד ממתחרים :lol: :lol: :lol: :lol:

                  פורסם במקור בפורום CODE613 ב08/07/2015 01:39 (+03:00)

                  אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

                  תגובה 1 תגובה אחרונה
                  1
                  • A מנותק
                    A מנותק
                    avr416
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @ארכיטקט

                    ראה כאן כעת אנו בפיתוח וובי של כל הסיפור הזה, ומתיימרים להיות בלי נדר הגוגל של מסדי הנתונים הפרטיים. חיפוש שייאפשר למשתמש לבצע כל שאילתה אפשרית.

                    אז אם אתה מתכוון להתחרות בי אשמח תמיד ללמוד ממתחרים :lol: :lol: :lol: :lol:

                    עד שאצליח להיות ברמה של מתחרה - הדרך עוד ארוכה :lol:

                    בכל אופן, אני עכשיו מתחיל ללמוד את הנושא הזה, כך שאשמח לעזור ולהשתתף בפרוייקט המרשים שהצגת שם.
                    אם אתה רוצה שאנסה לעשות משהו ספציפי - אתה מוזמן לומר לי.
                    כך גם אני יוכל לעזור ולתרום - ולא רק לשאול שאלות.
                    (אבל אל תשכח שאני עוד רחוק מהרמה שלכם - אבל אני מקווה להגיע אליה מהר :lol: :lol: )

                    פורסם במקור בפורום CODE613 ב08/07/2015 10:28 (+03:00)

                    תגובה 1 תגובה אחרונה
                    0

                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום