ניווט

    תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    • מקצועות
    1. דף הבית
    2. OdedDvir
    3. הגבוה ביותר
    חוקי הפורום
    • פרופיל
    • עוקב אחרי 0
    • עוקבים 4
    • נושאים 37
    • פוסטים 1029
    • הגבוה ביותר 696
    • קבוצות 1

    הפוסטים הטובים ביותר שנוצרו על ידי OdedDvir

    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ד - נקודות למחשבה

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

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

      ב. קיים שדה מזהה לרשומה בשם ID.
      ככלל, לכל טבלה ב-db תמיד יהיה שדה כזה, והוא נקרא מפתח ראשי. סוג הנתונים בו הוא מספר שלם (ארוך), ובדרך כלל הוא יהיה מסוג מספור אוטומטי, זהו שדה לקריאה בלבד וה-db אחראי לטפל בערכים שלו, והוא קובע באופן אוטומטי את הערך שלו בכל יצירת רשומה חדשה (בקפיצות של 1).
      ערך השדה הוא ייחודי ונקבע באופן חד-פעמי, כלומר, אם למשל ברשומה האחרונה ID=4, גם אם נמחק אותה וניצור רשומה חדשה, ה-db יקצה לרשומה החדשה ID=5, למרות שכבר אין רשומה עם ID=4.

      המנגנון הזה מבטיח שתמיד ניגש לרשומה הנכונה.

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

      ג. סוג הנתונים בשאר השדות
      כברירת מחדל, גודל השדה "טקסט קצר" הוא עד 255 תוים.
      אם ודאי לנו שלא נשתמש בכזה אורך, נוכל להקטין את גדול השדה המקסימלי, על מנת לחסוך מקום ולשפר יעילות.
      בואו נגדיר מחדש את אורך השדות שלנו: LastName, FirstName, MobilePhone להיות כל אחד 30 תוים:

      נבחר את השורה LastName, ולמטה במאפיינים, נגדיר גודל שדה 30:
      c75467de-69e5-494f-bc65-0d46ec3eaab8-תמונה.png
      נחזור על הפעולה גם עבור השדות FirstName ו-MobilePhone. נסגור ונשמור את הטבלה, ואז נקבל את תיבת ההתראה הבאה:
      5dda42d5-dc9f-46c9-95b6-0aa51a004af7-תמונה.png
      שדואגת שלא נעשה דבר טיפשי בטעות. במקרה שלנו מסתמא לא הכנסנו שם גדול מ-30 תוים. פשוט נאשר וזהו.
      הערה: אם כבר היה בשדה ערך גדול מ-30 תוים, המחרוזת תיחתך אחרי התו השלושים.

      נעבור לטבלה השניה:

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

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

      זה מעלה שתי נקודות חשובות למחשבה:
      איך נוודא שלא שכחנו בטעות למלא את השדה?
      ומה אם ננסה לרשום מספר שלא נמצאת עבורו רשומה בתורמים (=התורם לא קיים)....?

      אל תדאגו.

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

      א. אם ננסה להכניס בשדה DonorID ערך שלא קיים בטבלת התורמים, למשל 1000, ה-db יסרב לשמור את רשומת התרומה, כי הוא מוודא עבורינו שלא יהיו רשומות "יתומות" (תרומות ללא תורם משוייך)
      ב. אם ננסה למחוק מטבלת התורמים תורם שקיימת עבורו תרומה - שוב ה-db לא יאפשר זאת.

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

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

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

      בפוסט הבא ב"ה נמשיך לעבור על הטפסים שעשינו.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ג: קישור בין הנתונים של התורמים והתרומות

      הכח של בסיס נתונים רלציונאלי (כגון אקסס, SQL) נובע מהגדרת קשרי הגומלין (relationships) בין הנתונים.
      הקשר בין רשומה של תורם לרשומה של תרומה הוא קשר של אחד-להרבה (one-to-many)
      כי לכל תורם יכולות להיות מספר תרומות (לפחות אם אנחנו אופטימיים 🙂 )
      כדי להגדיר את הקשר בין הטבלאות, נבחר בתפריט למעלה: כלי מסד נתונים > קשרי גומלין
      ונוסיף את שתי הטבלאות שיצרנו:
      b9314d60-4527-435c-87f6-31e2769c0e1d-תמונה.png

      עכשיו נבחר את השדה DonorID בטבלת התרומות, ונגרור אותו אל השדה ID בטבלת התורמים.
      אם לא טעינו, נפתח חלון כזה:
      5edb4f2a-ae6c-42f4-90fd-77eab01012f3-תמונה.png

      נסמן את התיבה: "אכוף שלמות הקשרים בין הטבלאות". זה מבטיח שלא יהיו לנו רשומות יתומות, דהיינו רשומות של תרומות שאין להן רשומת תורם תואמת.

      נקליק על "צור". שים לב שעכשיו הטבלאות מחוברות על ידי קו. הסימון 1 - ∞ מציין שהקשר הוא "אחד-להרבה" כנ"ל.
      be8defca-0038-4799-9488-ae02388883a8-תמונה.png
      סגור את חלון קשרי הגומלין ושמור את השינויים.

      עכשיו מתחיל הכיף:
      נפתח את הטופס של התורמים בתצוגת עיצוב, ונרחיב את החלון קצת למטה כדי לעשות חלל פנוי לרשימת התרומות:
      2fe4aaaf-3419-4be1-8a64-7941c59867eb-תמונה.png

      נגרור לתוך החלל שיצרנו את הטופס של התרומות frmDonation, כדי ליצור טופס משנה:
      b3aea687-7ff9-4d53-ba0b-bcf015e0af3d-תמונה.png

      נסגור ונשמור את הטופס של התורם.
      עכשיו נפתח את הטופס של התרומות בתצוגת עריכה, ובגליון המאפיינים של הטופס, נשנה את תצוגת ברירת המחדל ל- גליון נתונים (זה יהפוך את התצוגה לגליון נתונים כמו באקסל)
      bae18698-b57e-4264-9314-39f3f71f37c1-תמונה.png
      כמו כן, נמחק מהטופס את שני השדות הראשונים: ID ו- DonorID:
      e42b9635-2974-4331-aa09-1a1674febe8c-תמונה.png

      נסגור ונשמור.

      שים לב: עכשיו כשנפתח את הטופס הראשי (של התורם) יוצגו עבור כל תורם כל התרומות שלו, ורק שלו:
      75338ea5-6ed2-4a63-a48a-d131183804db-תמונה.png

      f3e7b202-fb75-4f73-be8d-1e104768dc2e-תמונה.png
      הפלא ופלא!
      איך זה קורה?
      הסבר בפוסט הבא!

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • פרימייר פרו - הדרכה - כיצד לטשטש או לפקסל דמות נעה

      כתגובה לפוסט של @שעטנ-ז-ג-ץ : https://tchumim.com/topic/9451/האם-יש-הדרכה-איך-לפקסל-פנים-או-דמות-בהסרטה/13

      מדריך בסיסי לטשטוש דמות נעה בסרטון

      נפתח את פרימייר, ונייבא את הסרטון. בחרתי בסרטון הנדיר של אגודת ישראל משנת 1923 (בו גם נראה החפץ חיים זצ"ל). אני רוצה לטשטש את פני האיש עם החולצה הלבנה שנראה בדקה 2:19 משמאל:
      151ca087-5170-4ff8-b503-8f51b4b4909f-תמונה.png

      שלב א: יצירת אפקט טשטוש \ פיקסול:
      נבחר למטה משמאל את הלשונית Effects, ואת המסנן Mosaic (פיקסול):
      (אם רוצים טשטוש - צריך לבחור במקומו אחד מאפקטי ה-Blur)
      ונגרור את האפקט לתוך קו-הזמן (מסומן בחץ):
      a8cc4b93-7cff-4f41-ae02-a158c6c50a36-תמונה.png

      שלב ב: הגדרת מסכה לאפקט
      נבחר למעלה משמאל את לשונית Effect Control (מספר 1 בתמונה), נבחר צורת אליפסה (2), נשנה את הגודל כך שיתאים רק לפנים של האיש (3) ואחר כך נגדיר את מספר הריבועים ל100 על 100 כדי שהאפקט ישתלב יותר בסרטון ולא יראה כמו ריבוע אחד גדול (4):
      14a1794f-a18b-4024-bf9e-19aa5d139022-תמונה.png

      שלב ג: הגדרת המסכה לעקוב אחרי האזור הנבחר באופן אוטומטי
      כעת באותה לשונית ניתן להגדיר את אופן המעקב אחר התנועה על ידי לחיצה על המפתח השוודי, בדרך כלל הרצוי הוא האופציה האחרונה, שבה המסכה משנה מיקום, גודל וסיבוב אוטומטית (ברירת מחדל)
      נלחץ על הפליי ▶ וניתן לפלאי התוכנה לעשות את שלה. התוכנה תנסה לעקוב עם תנועת המסכה אחרי האזור שבחרנו, ותתחיל ליצור KeyFrames שמציינים את מאפייני המסיכה (גודל, מיקום, סיבוב). כשהדמות יצאה מהמסך - יש ללחוץ על Stop (אחרת המסיכה תישאר גלוייה גם כשהדמות נעלמה)
      f0c0a1ad-ab31-40c4-b961-637f8aff1c32-תמונה.png

      הערות:

      1. ניתן לכוונן אחר כך את הKeyFrames בנפרד, על ידי לחיצה על האזור המסומן:
        1f390641-945e-4702-9e0e-9e25a297962c-תמונה.png
      2. ניתן לקבל שליטה על תהליך התזוזה וליצור כל KeyFrame בנפרד על ידי הלחצנים מימין או משמאל ללחצן ▶ או לצעוד אחורה במקום קדימה.
      3. יש עוד הרבה אפשרויות כאן, ואידך זיל גמור (או שתשאל כאן...)
      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • אקסס למתחילים: יצירת מערכת לניהול תורמים

      כהמשך לפוסט: https://tchumim.com/topic/10485/מערכת-לניהול-תורמים/11

      @בערל השלב הראשון הוא התכנון כמובן. והתכנון הראשון הוא מבנה הנתונים.
      בבסיס הנתונים (להלן db) הנתונים נשמרים כאוסף של טבלאות. כל עמודה בטבלה מציינת "שדה", וכל שורה מציינת "רשומה".

      אבל קודם כל, היכרות פשוטה:

      חלק א: יצירת טבלת התורמים והטופס שלה:

      לשם פשיטות, נתחיל עם טבלה פשוטה ביותר של התורמים:
      עבור כל תורם אני אשמור את השדות הבאים:
      ID (שדה מפתח, המזהה של הרשומה) - מספר רץ
      שם פרטי - מחרוזת טקסט
      משפחה - מחרוזת טקסט
      טלפון נייד - מחרוזת טקסט

      לשם כך תפתח את אקסס, ובתפריט תבחר יצירה > עיצוב טבלה, ותקליד את השורות הבאות:

      4cb60cd7-6e2d-4864-8fed-579d747f7c20-תמונה.png

      אחר כך תעמוד על השורה של ה-ID ותלחץ בתפריט למעלה על הסמל של "מפתח ראשי".
      שים לב שנוסף ליד השורה סמל של מפתח:
      e1ff2cef-a3dd-4f75-90df-ce904523db3d-תמונה.png

      סגור את הטבלה ותקרא לה: Donor (תורם)

      היה קל, נכון?
      בוא ניצור עכשיו טופס פשוט שבו נוכל להקליד נתוני תורמים:
      תסמן את הטבלה Donor בפאנל שבצד ימין, ובתפריט למעלה תבחר: יצירה > טופס.
      אקסס תיצור מיד טופס בשבילך:
      af774ad1-e827-4c1e-b53a-8100c7a845cc-תמונה.png
      סגור ושמור בשם frmDonor

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

      בפוסט הבא ניצור טבלה וטופס של תרומות, ונקשר אותו לטופס הזה.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ב: יצירת טבלת התרומות והטופס

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

      504ac6b0-ac53-4f65-a42f-a99f6381a6dd-תמונה.png

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

      =Now()
      

      זה יכניס אוטומטית את הזמן הנוכחי ביצירת רשומת תרומה חדשה.

      שמור את הטבלה בשם Donation.

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

      שמור את הטופס בשם frmDonation
      קח הפסקה לכוס קפה, ונמשיך בפוסט הבא.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ד - תוספת: בקשר למדריך הזה

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

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

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ז: שאילתות חלק ב: שאילתת קיבוץ

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

      שאילתא שנייה: סכום התרומות לתורם
      נבחר בתפריט למעלה: יצירה > עיצוב שאילתא, נבחר את טבלת התרומות Donation, ונוסיף אותה למשטח העבודה:
      dfc68a90-aa49-49ea-aff2-6245d8b8b731-תמונה.png
      עכשיו נקליק פעמיים על השדה DonorID, הוא יתווסף לרשימה למטה:
      9d013d99-fafe-4f2b-b335-64ce21cb8f7f-תמונה.png
      נוסיף גם את השדה Amount:
      98dfb532-0f3d-4300-8656-17c64b5aca38-תמונה.png
      עכשיו, נבחר מהתפריט למעלה את הסמל של הסיגמא, שכתוב מתחתיו "סכומים":
      8e072ca2-bffe-421c-b33f-07621efe248a-תמונה.png
      שימו לב שנוספה למטה עוד שורה, עם הכותרת "סך הכל", ולכל שדה כתוב "קיבוץ לפי":
      8b6f5462-46b6-4909-9414-98dfa5b4bee9-תמונה.png
      זה אומר שהפכנו את סוג השאילתא משאילתת בחירה פשוטה לשאילתת קיבוץ.

      נשנה בעמודה של Amount את האפשרות "קיבוץ לפי" לאפשרות Sum (=סכום)
      ccd80d28-e004-44d9-a2bd-47c77759c1e4-תמונה.png
      זהו, השאילתא מוכנה!
      כדי לראות את התוצאות, נעבור לתצוגת גליון נתונים, והנה התוצאות:
      60fac243-5916-4735-9c7e-ea895fd07b4b-תמונה.png

      רגע, מה קרה לכותרת של העמודה השניה? אקסס נתנה לה שם אחר כדי לציין שזוהי עמודה של סכום. אבל זוכרים כמה אנו צריכים להזהר במתן שמות לעמודות? חובה עלינו לשנות את שם העמודה לשם תקני. נחזור לתצוגת עיצוב:
      557f7826-4b52-48a1-900a-30b72a5e3e52-תמונה.png
      נבחר את העמודה השניה, ובתפריט למעלה נפתח את בונה הביטויים:
      6bc69e83-7201-47a8-9439-5ba9ccc01fb1-תמונה.png
      בחלון שנפתח נרשום:

      TotalAmount: Amount
      

      f935402a-b9d3-45bc-8aff-f717281892af-תמונה.png
      ונלחץ על אישור. נעבור שוב לתצוגת גליון נתונים, ונראה שעכשיו הכותרת של העמודה השניה השתנתה ל: TotalAmount:
      70fc0227-f20a-48a5-a69e-6f78562ede3a-תמונה.png
      נשמור את השאילתא בשם qryDonation_TotalAmount.

      יפה, נכון?

      כן, אבל לא כל כך שימושי... מי זוכר מיהו התורם מספר 2 ומיהו התורם מספר 732?
      אני רוצה להציג גם את שם התורם ליד הסכום שתרם!
      בסדר, בסדר, בפוסט הבא נלמד איך לשלב את שתי השאילתות שיצרנו יחד, וליצור את התוצאה המבוקשת.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • סגירת מחלוקת בעליאקספרס: מידע שימושי

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

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

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

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

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

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

      מה לעשות אם המוכר סגר את המחלוקת ולא החזיר כסף?
      במקרה זה צרו קשר עם הנהלת עליאקספרס (צרו קשר עם שירות תמיכת הלקוחות שלהם). יהיה עליכם לצרף את הראיות:

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

      ההנהלה תחקור את המקרה ותברר מי האשם. ברוב המקרים לקוחות זוכים ומוכרים לא ישרים מקבלים קנסות.

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

      האם ניתן לפתוח את המחלוקת שוב?
      למרבה הצער, אין הזדמנות כזו. ניתן לפתוח את המחלוקת פעם אחת בלבד ואתה יכול לערוך אותה 4 פעמים.

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

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

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

      פורסם בצרכנות
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: תגובות

      @yossiz אמר באקסס למתחילים: תגובות:

      נראה לי שה-S מייצג structured - לא simple.

      אופס, צודק. מעניין למה חשבתי שזה Simple... תודה, תיקנתי במקור.

      מאיפה יש לך את הזמן והכוחות להשקיע בזה?!

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

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ו: שאילתות חלק א: שאילתת בחירה עם שדה מחושב

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

      שאילתות במסד הנתונים מבוססות על שפה שנקראת SQL שזה בתרגום חופשי "שפת שאילתות מובנית". (תודה ל @yossiz על ההארה)

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

      שאילתא ראשונה: שם מלא
      נניח שאני רוצה להציג את השם המלא של כל תורם.
      נבחר בתפריט למעלה: יצירה > עיצוב שאילתא, נבחר את טבלת התורמים Donor, ונוסיף אותה למשטח העבודה:
      3435e023-1a96-4f8e-b504-d1450c2d53f0-תמונה.png
      נעמוד על השדה הראשון, ונפתח מהתפריט למעלה את בונה הביטויים:
      d36d5950-01a8-480f-a7ea-54b23c4c5dc5-תמונה.png
      בחלון שנפתח נרשום:

      FullName: LastName & " " & FirstName
      

      ונלחץ על אישור:
      dce0f636-8169-4c89-b3df-73e4925a393e-תמונה.png
      נעבור לתצוגת גליון נתונים (בתפריט בצד ימין):
      746d9949-0c26-45c8-ae8b-dcb672723ecd-תמונה.png
      ונראה את התוצאות:
      0ed64a31-12c4-4d2e-b258-cc138fa0a166-תמונה.png
      השאילתא יצרה שדה מחושב בשם FullName, שמכיל את הנוסחא:

      LastName & " " & FirstName
      

      אנו משתמשים באופרטור & כדי לחבר מחרוזות, בדומה לאקסל.

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

      אתם זוכרים שאמרתי לכם שאקסס דואגת ליצור את פקודת ה-SQL בשבילנו? אז תנשמו עמוק, ובואו נראה כיצד כתובה השאילתא בשפת SQL. בתפריט נעבור לתצוגת SQL:
      8f16486f-2e65-44c9-9f24-d780f1346e71-תמונה.png
      והנה לפנינו פקודת הSQL שמרכיבה את השאילתא:
      00446027-17a1-44b8-9367-1714885544fb-תמונה.png
      תתבוננו ותראו שבאמת שפת SQL לא כל כך נוראית. הפקודה SELECT אומרת שהשאילתא תבחר את השדות LastName ו-FirstName, ותוסיף ביניהם רווח, והמילה AS יוצרת שדה חדש בשם FullName. המילה FROM מציינת כי השדות ייבחרו מתוך הטבלה Donor.

      נשמור את השאילתא בשם qryDonor_FullName.

      בפוסט הבא נכיר את שאילתת הקיבוץ.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ה: טפסים מקושרים

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

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

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

      אקסס גם מספקת לנו סרגל ניווט כברירת מחדל בתחתית כל טופס, תראו בתחתית טופס התורמים:
      ac3d3956-373a-4b22-abd8-6f4c56e8c108-תמונה.png
      ויש בו אפילו מנגנון חיפוש פשוט!
      תנסו להקליד שם של תורם למטה, אקסס מיד תעבור לרשומה הרלוונטית.
      9b9fddbe-830f-4a61-ab0a-db020bd2c031-תמונה.png

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

      תשאלו: מה זה טפסים מקושרים?

      אז זוכרים שיצרנו קשרי גומלין בין התורמים והתרומות? בואו תראו מה קרה:

      תפתחו את טבלת התורמים, הפעם בתצוגת גליון נתונים (פשוט תקליקו עליה פעמיים)
      שימו לב שיש סימן + לפני כל שורה:
      2d0b31a9-100f-4c81-a2f3-6321a40e2b94-תמונה.png
      אם נלחץ עליו, נקבל את רשימת התרומות של אברהם כהן:
      b2a0e933-65c9-4778-bf5d-4f56b4156e88-תמונה.png

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

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

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

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

      מחיאות כפיים לאקסס!

      אם אתם רוצים להציץ מתחת למכסה המנוע ולראות היכן מופיע הקישור בטופס, תפתחו את הטופס של התורמים בתצוגת עיצוב, תבחרו את טופס המשנה, ובמאפיינים שלו יש לשונית שנקראת נתונים, והנה השדות המקשרים לפניכם:
      94216113-919b-4606-a6cc-d5d22f89b816-תמונה.png

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

      בפוסט הבא נעסוק אי"ה בשאילתות.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ט: שאילתות חלק ד: שאילתות צירוף חיצוני

      אז מה קרה לישראל יעקב?
      כל הכבוד ל @בערל שענה תשובה נכונה לשאלה:

      כי השאילתא שלנו מצרפת בין qryDonor_FullName ל-qryDonation_TotalAmount
      מכיוון שישראל יעקב אינו תרם (עדיין), הוא לא מופיע ב- qryDonation_TotalAmount
      ולכן גם לא נמצא בתוצאה הסופית שממזגת בין שניהם
      ולמה הוא לא מופיע ב-qryDonation_TotalAmount שהוא תרם 0.00?
      כי qryDonation_TotalAmount מבוסס על טבלת Donation ושם הרי לא מופיע תרומות של אפסים, אז אין לשאילתא שלנו (כרגע) שום מקור לשלוף את המידע
      הבנתי נכון?

      כן, מצוין! (שאר התלמידים ישארו בסוף השיעור לנקות את הכיתה 😊 )

      הבעיה נוצרה כי השאילתא שלנו משתמשת בצירוף פנימי.

      צירוף פנימי יציג נתונים רק כאשר יש מזהה תואם בשתי מקורות הנתונים, דהיינו בשתי השאילתות שלנו.

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

      בואו נפתח שוב את השאילתא, ונעבור לתצוגת SQL. שימו לב למילים INNER JOIN שהדגשתי בצהוב, שפירושן צירוף פנימי:
      c62f7528-cdcf-440a-bf76-ba5fc788f469-תמונה.png

      כדי שהשאילתא תציג את כל התורמים, אנו צריכים ליצור צירוף חיצוני.

      צירוף חיצוני מציג את כל הנתונים ממקור נתונים אחד, ורק את הרשומות התואמות מהמקור השני. למקור הנתונים שאנו רוצים להציג את כולו, קוראים טבלת הבסיס. ולשני קוראים טבלת המשנה.

      זה בעצם מה שאנחנו מבקשים: להציג את כל הרשומות משאילתת השמות (בסיס), ורק את הרשומות התואמות משאילתת הסיכום (משנה).

      נחזור לתצוגת עיצוב. נקליק פעמיים על הקו המקשר בין השאילתות, והחלון הבא יצוץ:
      afee00bc-3489-415d-9c1d-e21cb8f2bd89-תמונה.png
      שימו לב שאקסס קראה לשאילתת השמות: הטבלה השמאלית, ולשאילתת הסכומים: הטבלה הימנית, למרות שבחלון שנפתח המיקום שלהן הפוך. זה בגלל שאקסס מתורגמת מימין לשמאל, ואילו שפת SQL משתמשת בתחביר של אנגלית, שבה הטבלה הראשונה נכתבת משמאל לטבלה השניה... בגרסא האנגלית של אקסס המיקום שלהן נכון.

      יש כאן שלוש אפשרויות:

      1. אפשרות ברירת המחדל: רק השורות בהן המזהה שווה. זהו צירוף פנימי.
      2. כל הרשומות מטבלת השמות (=השמאלית) ורק הרשומות הרלוונטיות מטבלת הסכומים (הימנית)
        זה נקרא צירוף חיצוני שמאלי.
      3. כל הרשומות מטבלת הסכומים (הימנית) ורק הרשומות הרלוונטיות מטבלת השמות (=השמאלית)
        זה נקרא כמובן צירוף חיצוני ימני.

      אז מה האפשרות שאנו מבקשים?
      נכון, אפשרות מספר שתיים.
      נבחר ונאשר.
      תראו מה קרה לקו המחבר:
      f3698292-64e3-492d-bc3e-a848ba967e4d-תמונה.png
      הוא הפך לחץ! אקסס מודיעה לנו שיש כאן צירוף חיצוני. טבלת הבסיס היא הטבלה שממנה יוצא החץ, וטבלת המשנה היא הטבלה שאליה החץ מגיע.

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

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

      נעבור לתצוגת גליון נתונים, ,ונראה שהפעם השאילתה קיבצה נדחי ישראל:
      fcf4f3b0-30e5-4912-a9a3-7d0d9564b055-תמונה.png

      אבל עדיין יש עבודה.

      שימו לב שהסכום של ישראל הוא ריק ולא מכיל 0.

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

      אם ברצוננו להציג שם אפס, צריך ליצור שדה מחושב:

      נחזור לתצוגת עיצוב, נבחר את השדה TotalAmount, וניכנס לבונה הביטויים:
      e3b75927-ba3b-4115-a7fd-38cc68f4b4f4-תמונה.png
      נרשום שם את הנוסחה הבאה:
      f43c1fd0-0e44-480a-9d2b-21cd6bfabb41-תמונה.png
      נלחץ על אישור, ונעבור לתצוגת גליון נתונים כדי לראות את התוצאות:
      6bd28c05-70e7-4b86-8f82-4764afea9570-תמונה.png
      עכשיו לישראל מופיע אחר כבוד סכום תרומות כולל של 0.

      מי שם לב למשהו לא בסדר?

      מישהו?

      נכון מאוד. העמודה של הסכום קיבלה שם מוזר Expr1...

      אני לא זוכר שנתתי לה שם כזה...

      נחזור לתצוגת העיצוב, ונרחיב את העמודה השלישית כדי לראות את הנוסחא:
      341edb9c-f566-49fc-b8de-7f062631af65-תמונה.png
      ונראה שאקסס נתנה את השם Expr1 לעמודה:
      c50fad45-45e2-4688-8527-73c48e629d6e-תמונה.png
      מה הפשט?
      זה קרה בגלל שכתבנו נוסחא אך לא סיפקנו שם לשדה. לכל שדה חייב להיות שם, ולכן אקסס נתנה לו את השם הכללי Expr1, דהיינו "ביטוי מספר 1".

      בואו נשנה את השם ל: DonorTotaDonation:
      2d15132d-0092-44ee-92b6-a4f57d78f221-תמונה.png
      נפתח בתצוגת גליון נתונים, ונראה שהכל בסדר:
      ed37c16f-aacb-44f9-80c8-142524c50081-תמונה.png

      הערה: נתנו לעמודה את השם DonorTotalDonation, ולא TotalAmount מפני שאם כן, הנוסחא היתה

      TotalAmount: IIf(TotalAmount Is Null, 0, TotalAmount)
      

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

      מה שמביא אותי להערה הבאה:

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

      יופי!
      נשמור את השאילתא בשם: qryDonor_TotalDonation
      ונצא להפסקה.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: חידה | לבעלי חוש תיכנות

      @nigun אוקי אני מתנדב להסביר:

      א. כיוון שבייצוג בינארי אפשר ע"י 10 סיביות לייצג 1024 אפשרויות (אם כל ספרה היא 0 או 1, מספר האפשרויות הוא 2 בחזקת 10 = 1024) יוצא שעל ידי 10 סיביות אפשר לקבל כל מספר בין 0 ל-1023 (שזה בעצם 1024 אפשרויות)
      ב. נחלק את המטבעות כך שבכל מעטפה תהיה חזקה של 2 (כל מעטפה מייצגת סיבית אחת במספר)

      מעטפה א = 1 מטבעות (2 בחזקת 0)
      מעטפה ב = 2 מטבעות (2 בחזקת 1)
      מעטפה ג = 4 מטבעות (2 בחזקת 2)
      מעטפה ד = 8 מטבעות (2 בחזקת 3)

      אם נתבונן רגע, נראה שבארבע מעטפות כבר ניתן לקבל 16 אפשרויות
      0000 = 0
      0001 = 1 (מעטפה א)
      0010 = 2 (מעטפה ב)
      0011 = 3 (מעטפות א+ב)
      ....
      1111 = 15 (מעטפות א+ב+ג+ד)

      אם נמשיך באותה הדרך, במעטפות הבאות יהיו הסכומים 16, 32, 64, 128, 256
      המעטפה האחרונה תכיל רק 488 במקום 512 כי לא היו מהתחלה 1024 מטבעות, רק 1000.

      פורסם בגומלין
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק ח: שאילתות חלק ג: שאילתות צירוף

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

      אנחנו רוצים לחבר את שתי השאילתות ביחד, כדי לקבל את התוצאה הבאה:
      2e2122d4-87be-4428-a337-446755350932-תמונה.png

      איך עושים את זה?

      לשם כך נכיר סוג נוסף של שאילתא, והוא (תופים בבקשה...)
      שאילתת צירוף

      שאילתא זו מצרפת שתי טבלאות או שאילתות, או יותר.

      פתחו את מעצב השאילתות (יצירה > עיצוב שאילתא), ונעבור ללשונית של שאילתות כדי להציג את רשימת השאילתות שלנו:
      0251fbdd-11df-4f1e-bb5d-9358cae169d9-תמונה.png

      נוסיף את שתי השאילתות למשטח העבודה:
      4e056719-20e4-4a49-822a-0e84f9de1433-תמונה.png

      אבל...
      איך נחבר את שתי השאילתות? מה השדה שמקשר ביניהן?
      התשובה היא: אין שדה כזה...

      השדה שאמור להיות המקשר הוא שדה המפתח של התורם, אבל אם נתבונן, נראה כי בשאילתת-הסכומים, לכל רשומה יש שדה מפתח, הלא הוא מיודענו DonorID, אבל בשאילת-השמות אין שדה מפתח.

      בואו נתקן את הבעיה. נסגור את עורך השאילתות. תופיע ההודעה הבאה:
      3a60bca8-46f6-4402-8712-6bb5607dc640-תמונה.png
      נבחר לא. אחרי שנתקן את שאילתות הבסיס, ניצור מחדש את השאילתא.

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

      נפתח את שאילתת השמות בתצוגת עיצוב, ונוסיף את השדה ID לרשימת השדות (על ידי הקלקה כפולה על שם השדה):
      3202f66e-1a5d-4198-b1c7-b072fd73df06-תמונה.png
      נעבור לתצוגת גליון נתונים ונראה שעכשיו השדה מוצג בשאילתא:
      d1bd949d-66c0-456d-9dcc-310dc6b0afc6-תמונה.png
      הממ... השדה המזהה מוצג בעמודה השנייה ולא בראשונה... בואו נתקן גם את זה.

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

      לשם כך נחזור לתצוגת עיצוב, ונלחץ על המלבן האפור בראש העמודה של ID:
      66fb764d-95b8-4314-88b5-a4f98a6d9928-תמונה.png
      העמודה נצבעה בשחור:
      ff7fca0a-5898-46b6-9608-a36c1e8a0b3e-תמונה.png
      נלחץ שוב פעם שנייה, ונגרור את העמודה לתחילת הרשימה, לפני עמודת השמות:
      e541504e-bec5-40dd-93e8-69cde8b0cbec-תמונה.png
      נשים לב שסדר העמודות השתנה:
      d2db898b-9f8a-436d-a23c-7f2753bdd537-תמונה.png
      נסגור ונשמור את השאילתא.

      עכשיו הכל מוכן ליצירת השאילתה שלנו:

      מי זוכר איך בונים את שאילתת הצירוף? צריך לפתוח את מעצב השאילתות ולהוסיף את שתי השאילתות, אבל בואו נראה עוד דרך לעשות זאת:

      בתפריט נבחר יצירה > עיצוב שאילתא, אבל הפעם, נסגור את החלון של הבחירה בלי להוסיף כלום למשטח העבודה, נקבל משטח ריק.
      הפעם, נגרור את שתי השאילתות מהפאנל הימני לתוך המשטח:
      20780ce2-175a-4dd0-bd8f-a5b72022c22d-תמונה.png

      נשים לב שהפעם מופיע בשאילתת השמות שדה המפתח בשם ID.
      כדי לקשר את השאילתות, נגרור את השדה ID משאילתת השמות אל השדה DonorID בשאילתת הסכומים, ונראה שנוצר קו מחבר בין השאילתות (מזכיר לכם משהו?):

      נוסיף את השדות הבאים לפי הסדר:
      מטבלת השמות: ID, FullName
      ומטבלת הסכומים: TotalAmount
      c98bc0f3-92d9-4349-b405-54c8253be992-תמונה.png
      נעבור לתצוגת עיצוב כדי לבדוק את התוצאות:
      992b78d4-aed7-41e8-8d62-3f2df085333f-תמונה.png
      נראה שזה עובד!

      אבל רגע,
      לאן נעלם ישראל יעקב?
      תעלומה.

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

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • אקסס למתחילים: תגובות

      שלום לכולם!
      לשאלות או תגובות, אשמח אם תגיבו כאן.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק יב: רשימת הנתמכים

      בואו נראה מה עשינו עד עכשיו.

      יש לנו מערכת שיכולה לנהל מאגר תורמים.
      לכל תורם יש רשימת תרומות וכן יומן התקשרויות.
      אני יודע לסכם את כל התרומות שהתקבלו לפי תורם.

      כעת אני רוצה לעבור לצד השני של הנתמכים.

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

      אבל יש לי כמה כללים:

      1. לכל משפחה במערכת, אני רוצה לנהל רשימה של תורמים פוטנציאליים, שנראה לי שהם יתחברו למקרה שלה, ויהיו מעוניינים לתרום לה, כך שעבודת השנור שלי תהיה יותר ממוקדת.

      2. התורם הנדיב, בבואו לקיים מצווות צדקה, יוכל לבחור מתוך שתי אפשרויות של תרומה:

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

      נשמע מורכב? בואו נתחיל עם מה שכבר אנו יודעים.

      ניצור טבלה חדשה עבור המשפחות, עם השדות הבאים:
      2c376a49-6651-4b37-804a-299b23784a0c-תמונה.png

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

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

      למה?

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

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

      נשמור את הטבלה בשם Family.

      עכשיו יש לנו בעיה.

      איך מגדירים את קשרי הגומלין בין המשפחות לתורמים? 🤔

      אחרי ההתבוננות, נשים לב כי לכל תורם יכולות להיות כמה משפחות קשורות, אז לכאורה זה קשר של יחיד-רבים... אבל גם לכל משפחה יכולים להיות כמה תורמים קשורים!

      אחרי עוד קצת עיון 🤔🤔, נראה שהדרך לשמור את הנתונים על הקשרים בין התורמים למשפחות, היא על ידי רשימה של זוגות:

      משפחה-תורם.
      משפחה-תורם.
      משפחה-תורם.

      לקשר הזה קוראים קשר של רבים לרבים. והדרך ליישם אותו בבסיס הנתונים היא על ידי טבלת עזר, או טבלת זוגות.

      צרו טבלה חדשה עם השדות הבאים:
      f998dc7d-95c6-4904-b1de-a5bdb292966d-תמונה.png
      נסו לשמור את הטבלה בשם: Family_Donor... אקסס תקפיץ לכם את החלון הבא:
      92d690f7-b14f-4e7f-9761-c80394cd306e-תמונה.png
      מה קרה?
      אקסס דואגת לנו שנעבוד נכון!

      לא הגדרנו שדה מזהה בטבלה, ואקסס מתריעה על כך.

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

      הנכון הוא לקבוע כי שתי השדות גם יחד הם שדה המפתח של הטבלה. הגדרה כזו נקראת מפתח מרוכב (Composite Key)

      לשם כך נבחר את שתי השורות יחד, על ידי גרירה של הריבוע האפור מימין לשם השדה:
      69d418e4-20a6-4fdc-b289-e69e92b4714f-תמונה.png
      עכשיו נלחץ בתפריט על הסמל של המפתח הראשי, ונבחין כי נוסף סימון של מפתח לפני שתי השורות:
      a3ef9e1a-a831-42dd-8ad7-0f0a94120432-תמונה.png

      מעולה. עכשיו נוכל לשמור את הטבלה בשלווה, בלי שום התראות מאקסס.

      נעבור כעת להגדרת קשרי הגומלין, ונוסיף את הטבלאות החדשות Family, Family_Donor למשטח העבודה.
      נגדיר את קשרי הגומלין לפי התמונה הבאה:
      0aaebc2c-f472-48ff-b16e-93df892e4b8c-תמונה.png

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

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

      בפוסט הבא ניצור את הטפסים המתאימים לניהול הטבלאות שהוספנו.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: מדריך לאקסס

      @לחיל-אומר אמר במדריך לאקסס:

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

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

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

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

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

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

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

      תשתמש באקסס בהנאה ובלי רגשות אשמה - מתי שזה עוזר לך, מתי שזה הכי קל ופשוט.

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

      פורסם בתכנות
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

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

      חלק יג: נפלאות התיבה המשולבת

      כל טופס מכיל בתוכו פקדים. הפקדים הם הרכיבים החזותיים המרכיבים את ממשק המשתמש.
      אם נתבונן בטפסים שאקסס הכינה עבורנו, נראה שיש שם שני סוגי פקדים: תווית, ותיבת טקסט:
      4c0093b9-a3c2-4024-a8fa-fd9eb0437c59-תמונה.png

      נבחין בין שתי מחלקות של פקדים:

      1. פקד סטטי - פקד שהערך שהוא מציג הוא קבוע. כלומר המשתמש לא יכול לשנות ישירות את הערך שלו. התווית, למשל, היא פקד סטטי.
      2. פקד דינמי - פקד שהערך שהוא מציג אינו קבוע. כלומר המשתמש יכול לשנות ישירות את הערך שלו. תיבת הטקסט, למשל, היא פקד דינמי.

      את הפקדים הדינמיים גם נחלק לשני סוגים:

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

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

      1. פקד לא מאוגד - לא מאוגד לשדה כלשהו בטבלה.

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

      התוית ותיבת הטקסט הם מן הסתם הפקדים הנפוצים ביותר.

      במקום השלישי והמכובד, נמצאת התיבה המשולבת (ComboBox)

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

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

      היתרונות האלו משדרגים את חווית המשתמש באופן מהותי.
      בואו נראה.

      פתחו את טבלת התרומות Donation בתצוגת עיצוב. עברו לשדה DonorID, ולמטה במפייני השדה שלו, בחרו בלשונית "בדיקת מידע":
      a0ac2fb8-bf33-4c25-8aa0-908f171229f6-תמונה.png

      נבחין כי כרגע השדה מוגדר כתיבת טקסט. אם נקליק עם הסמן על השורה, נראה בצד שמאל שלה חץ קטן למטה, נלחץ עליו ונבחר מהרשימה את התיבה המשולבת:
      f70a0548-88cc-44f2-8e7d-c6c74e532240-תמונה.png
      נקבל שלל של אפשרויות חדשות!
      הכניסו את הערכים הבאים, כפי שהם מופיעים בתמונה:
      2efa0424-32ca-488a-be71-6ec57a6085f4-תמונה.png
      שימרו את הטבלה ועיברו לתצוגת גליון נתונים. בשורה הראשונה, כנסו לשדה של DonorID ותבחינו כי יש חץ קטן למטה בסוף השדה. זה מציין כי השדה מוצג כתיבה משולבת. לחצו על החץ:
      2cac4496-c105-4c50-8b02-dfcf2e370a48-תמונה.png
      אקסס תציג לנו את שם התורם המלא ליד המזהה שלו!

      איך זה קרה?
      בואו נחזור על מה שעשינו:

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

      כעת שימו לב שבהגדרות התיבה המשולבת, מוגדרת העמודה המאוגדת להיות מספר 1:
      abc1fa93-9cfd-404d-b018-4adc15b84fdb-תמונה.png
      העמודה המאוגדת היא הערך האמיתי שנשמר בשדה שבטבלה. במקרה שלנו, העמודה הראשונה של השאילתא qryDonor_FullName היא המספר המזהה-ID של התורם (ולא השם המלא-FullName)

      מה שמביא אותנו לשלב הבא:
      בואו נסתיר לגמרי את המזהה של התורם!

      כנסו שוב למאפייני השדה של DonorID, והפעם, הוסיפו במאפיין "רוחב עמודות" את הטקסט הבא 4;0:
      9d09ffb0-81fa-4f8f-b627-e0c9e5daaa66-תמונה.png
      כך אנו מגדירים את רוחב העמודות שיוצגו בתיבה המשולבת (משמאל לימין). דהיינו:
      עמודה מספר 1 תוצג ברוחב 0 ס"מ (=מוסתרת)
      עמודה מספר 1 תוצג ברוחב 4 ס"מ
      שימרו את הטבלה ועברו לתצוגת גליון נתונים. שימו לב שעכשיו מוצגים שמות התורמים בלבד, ללא המזהה שלהם:
      1b17e78b-4b61-4478-be89-ebe8a90e2174-תמונה.png
      שנו את תרומה מספר 1 לתורם ישראל יעקב:
      1fc7ff8a-ee37-423e-840d-eeb84f11a212-תמונה.png
      ראיתם כמה שזה קל וברור! זוהי העוצמה שבתיבה המשולבת. הנה כל היתרונות שציינתי בהתחלה:

      1. מקצרת את זמן הכנסת הנתונים – ברור.
      2. מוודאת את תקינות הנתונים שהכנסנו – נסו להקליד שם תורם שלא קיים...
      3. מאפשרת לנו להציג באלגנטיות את הנתונים בצורה קריאה, עבור שדות מפתח - כמו שציינתי, למרות שהערך המוצג הוא שם התורם, הנתון שמאוחסן בפועל בטבלה הוא המזהה של התורם (ID).

      מקווה שהכל היה ברור. מעכשיו התיבה המשולבת תהיה הפקד החביב עלינו.

      שיעורי בית:

      1. צרו שאילתא חדשה: qryFamily_FullName ובה שני שדות: המזהה של המשפחה ID, ושדה מחושב FamilyFullName שמחבר את שם המשפחה, שם האב, וא"ו החיבור ושם האם, כך שתתקבלנה התוצאות הבאות:
      ID FamilyFullName
      1 ראובני אברהם ושרה
      2 שמעוני יצחק ורבקה
      

      וכו'.

      1. בטבלה Family_Donor שנו את הגדרות השדה FamilyID כך שיציג (בתיבה משולבת) את שם המשפחה המלא במקום את המספר FamilyID (השתמשו כמובן בשאילתא שהכנתם בסעיף א), ואת הגדרות השדה DonorID כך שיציג את שם התורם.

      בהצלחה רבה!

      בפוסט הבא נציג אי"ה את הפתרונות (גם לשיעור שעבר).

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: יצירת מערכת לניהול תורמים

      חלק י: שיעורי בית

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

      1. הוסף מיון לשאילתת השמות, כך שהיא תציג את שמות התורמים לפי סדר הא"ב.
      2. הוסף לשאילתת הסיכום גם שדה בשם DonationCount שיכיל את מספר התרומות של כל תורם. דהיינו עבור אברהם יופיע 3, ליצחק יופיע 1, וליעקב יופיע 0 בדוגמא שלנו.
      3. סדר את שאילת הסכומים לפי סכום התרומות בסדר יורד, כלומר שבשורה הראשונה יופיע התורם שתרם הכי הרבה.
      4. אני רוצה לשמור עבור כל תורם את פרטי ההתקשרות עמו. כלומר שעבור כל תורם יהיה יומן שיחות עם תאריך השיחה ותקציר השיחה. צור טבלה חדשה בשם DonorConversation כדי לנהל את פרטי ההתקשרות. חשוב: אילו שדות אמורים להופיע בטבלה?
      5. צור קשר גומלין מתאים בין טבלת התורמים לטבלת השיחות.
      6. צור טופס חדש בשם frmDonorConversation שמציג את פרטי ההתקשרות.
      7. הטמע את הטופס הנ"ל בטופס התורמים הראשי, כך שליד רשימת התרומות תוצג גם היסטוריית השיחות.

      בהצלחה לכולם!
      בפוסט הבא נציג את הפתרונות בע"ה.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: עזרה| מיזוג דואר עם תאריכים מותאמים אישית

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

      =TEXT(J3,"dd/mm/yyyy")
      

      את העמודה הזו תייבא במיזוג הדואר.

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

      =TEXT(J3,"mm/yyyy")
      
      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: אקסס למתחילים: תגובות

      @בערל אמר באקסס למתחילים: תגובות:

      למדת הוראה?

      עלית עלי... אני עוסק בהוראה כבר הרבה שנים.

      אני קורא כל מילה - ומבצע

      זה מאד חשוב לבצע בשטח, רק ככה לומדים באמת!

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: כיווץ קבצים מרובים למס' ארכיונים עצמאיים

      @UA יש תוכנה חינמית בשם Folder-Axe שעושה בדיוק את זה: מחלקת תיקיה למספר תיקיות לפי קריטריונים לבחירתך, גודל, מספר קבצים, שם ועוד.
      תוכל לבחור בתוכנה לכווץ כל תיקיה לארכיון ZIP נפרד.
      צילום מסך:
      a1530e8e-0ddf-47a2-a0b0-fedef3e88547-תמונה.png

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: איטיות ב SUM ב MYSQL

      @יוס אמר באיטיות ב SUM ב MYSQL:

      ולשם כך אני מריץ לולאה על טבלת התלמידים
      ועל כל תלמיד אני מבצע שאילתת SUM כמה דפים יש לו בטבלת הבחינות

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

      פורסם בתכנות (אקסקלוסיבי)
      OdedDvir
      OdedDvir
    • RE: ייעוץ לבחירת שרתים עבור מרכזייה ומערכת תוכן ב-freeswitch

      @nigun אמר בייעוץ לבחירת שרתים עבור מרכזייה ומערכת תוכן ב-freeswitch:

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

      אני מבקש סליחה מראש על ש

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

      חלק יא: פתרונות לשיעורי הבית

      שוב יש"כ ל @בערל על התשובות, למעשה הוא ענה נכון על כל המטלות. אני בכל זאת אביא כאן גם את התשובות שלי:

      1. כדי לא להשאיר את המדריך חסר
      2. כי יש לי הערות קטנות פה ושם

      אז מה היה לנו?

      1. הוסף מיון לשאילתת השמות, כך שהיא תציג את שמות התורמים לפי סדר הא"ב.

      טוב, אז אמנם לא למדנו איך למיין עמודות, אבל מי שקצת מחפש רואה את השורה של המיון:
      8cd34fb2-d5bb-4b06-891f-4e2a2eb91665-תמונה.png

      1. הוסף לשאילתת הסיכום גם שדה בשם DonationCount שיכיל את מספר התרומות של כל תורם. דהיינו עבור אברהם יופיע 3, ליצחק יופיע 1, וליעקב יופיע 0 בדוגמא שלנו.

      גם כאן, מי ששם לב כשבנינו את עמודת הסיכום בשאילתת הקיבוץ, הבחין שיש עוד נוסחאות לבחירה, אחת מהן היא Count, שהיא פשוט סופרת את מספר הרשומות עבור שדה מסויים:
      d7704356-4587-4eab-aef4-12ed57a65393-תמונה.png
      הערה: בתור פרקטיקה טובה, אני רגיל לספור את המופעים של השדה המזהה בטבלה, דהיינו השדה ID, מפני שהוא תמיד מכיל ערך. אם הייתי בוחר בשדה שחלק מהשורות שלו מכילות לפעמים NULL, הפונקציה Count לא סופרת את השורות האלו. אכן לעתים זה כן שימושי להתעלם מהן, והכל לפי העניין.

      1. סדר את שאילת הסכומים לפי סכום התרומות בסדר יורד, כלומר שבשורה הראשונה יופיע התורם שתרם הכי הרבה.

      זה פשוט, על ידי הוספת מיון לעמודת הסכומים:
      b5a651fa-c106-4e2b-9ebb-d10d1a84b77d-תמונה.png

      4.אני רוצה לשמור עבור כל תורם את פרטי ההתקשרות עמו. כלומר שעבור כל תורם יהיה יומן שיחות עם תאריך השיחה ותקציר השיחה. צור טבלה חדשה בשם DonorConversation כדי לנהל את פרטי ההתקשרות. חשוב: אילו שדות אמורים להופיע בטבלה?

      גם זה ממש דומה לטבלת התרומות, ישר כח לכל מי שזכר גם פה לספק ערך ברירת מחדל לזמן השיחה:
      2ea58f41-0ba4-4248-8b98-f311a094b809-תמונה.png

      1. צור קשר גומלין מתאים בין טבלת התורמים לטבלת השיחות.

      בבקשה:
      26da5cd7-a475-47e2-b19f-018c64221f95-תמונה.png

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

      1. צור טופס חדש בשם frmDonorConversation שמציג את פרטי ההתקשרות.

      שני קליקים וסיימתי:
      ab741bfb-7837-48f5-a435-0d2a34c09af0-תמונה.png

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

      שוב, קלי קלות, פשוט לגרור את הטופס לתוך הטופס הראשי:
      92969368-b963-4987-82c7-e5c084bd6650-תמונה.png

      סיכום:

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

      כאן בונים

      מי שחוש העיצוב שלו מפותח אפילו מעט, יכול להרים גבה ולומר: מה זה העיצוב הזה? ככה לא בונים טופס, ואיך אפשר להשתמש בזה בכלל?

      על זה יש לי שתי תשובות:
      א. MVP
      לא, אני לא מתכוון לדגם של מאזדה. MVP הוא קיצור של Minimum Viable Product.

      ההגדרה הרשמית (לפי המכלול) : מוצר בר-קיימא מינימלי הוא מוצר עם המינימום ההכרחי של תכונות כך שלקוח יוכל להשתמש במוצר.

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

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

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

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

      ב. סבתא אקסס
      כנגד היכולות הגבוהות שלה בפיתוח, אקסס מאד דלה בצד של חווית המשתמש.

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

      טוב די עם הפיטפוטים.

      בשיעור הבא נוסיף עוד מימד למערכת ניהול התורמים, והוא: רשימת הנתמכים.
      יהיה מעניין בעז"ה.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: מערכת לניהול תורמים

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

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

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: ווינדוס 98 בעברית

      @יוסף-חיים-016 אמר בווינדוס 98 בעברית:

      חובב נוסטלגיה

      אם אתה באמת חובב היסטוריה (נוסטלגיה לא שייך אם לא נולדת...) הנה מסע בזמן 🕰 בשבילך...
      סרטון של גרסאות Windows ממש עתיקות (מגירסא 1.0)
      https://www.youtube.com/watch?v=vPnehDhGa14
      כמובן פתוח בנטפרי

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: הפעלת וינדווס טרמינל (wt) כמנהל

      @chv בעקבות הפוסט קיצור דרך למיקום מסוים במחשב
      הצלחתי להפעיל את הטרמינל כמנהל כך:

      1. יצרתי משימה חדשה במתזמן המשימות:
      e14ccf37-35cb-4ab3-bab9-ed998012aeff-תמונה.png

      2. בקטגוריה Actions הגדרתי פעולה חדשה:
      1abebbbe-d75e-4057-8b66-95f0c2a2c448-תמונה.png

      3. יצרתי קיצור דרך על שולחן העבודה:
      וביעד רשמתי:

      C:\Windows\System32\schtasks.exe /run /tn "AdminTerminal"
      

      עכשיו הקצתי קיצור מקשים כרצוני (למשל Ctrl + Alt + T)
      e8add582-71fd-4347-8148-bb6af168ac29-תמונה.png

      זהו. עובד.

      פורסם בתוכנה
      OdedDvir
      OdedDvir
    • RE: מסך שעובד רק עם מסך נוסף

      אוקי, מסתבר שזו בעיה עתיקת יומין.
      השורש נעוץ בכך שWindows זיהה את המסך המשני בתור מספר 1 ולא 2, ואין אפשרות לשנות זאת דרך ההגדרות. הפתרון היחיד שמצאתי לבעיה היא רק דרך מחיקת שני מפתחות מהרג'יסטרי. מקור

      הכנתי לך קובץ: איפוס מספרי מסכים מרובים.reg באחריותך בלבד, אבל ניסיתי אצלי ועבד ללא בעיה.

      א. תקליק על הקובץ המצורף ותאשר לייבא את הערכים לתוך הרישום.
      ב. כבה את המחשב.
      ג. תפעיל מחדש את המחשב כשהמסך הסורר לא מחובר
      ד. אחרי שWindows עלה, חבר שוב את המסך המשני, הפעם הוא אמור לקבל את המספר 2.
      ה. לחץ Win+P ותבחר "הרחב"
      ו. תעדכן אם הבעיה נפתרה

      פורסם בחומרה
      OdedDvir
      OdedDvir
    • RE: עזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך

      @yossiz אמר בעזרה - שינוי שם בקבצי PDF מרובים לפי טקסט מתוך המסמך:

      יש עדיין מה לשפר בסקריפט שכתבתי:

      אני לא מבין בPS אבל הנה השני סנט שלי:

      צריך לתת שם ייחודי לכל קובץ כדי שלא יהיה שגיאה כאשר יש שני קבצים עם שם תורם זהה

      לשנות את שם הקובץ המקורי ל: שם המקורי+שם התורם.

      צריך לטפל שבהרצה שנייה הסקריפט יתעלם מקבצים שכבר טופלו

      לבדוק אם שם הקובץ גדול מ-10 תווים (ואז הוא טופל)

      צריך לסנן תווים מיוחדים מתוך השם החדש הקובץ

      $Path.Split([IO.Path]::GetInvalidFileNameChars()) -join '_'
      

      ממיר את כל התווים הלא תקניים לקו תחתון (מקור)

      ישר כח על העזרה @yossiz !

      פורסם בתכנות
      OdedDvir
      OdedDvir
    • 1
    • 2
    • 3
    • 4
    • 5
    • 23
    • 24
    • 1 / 24