אלון ארנסטי

Forum Replies Created

מוצגות 15 תגובות – 256 עד 270 (מתוך 359 סה״כ)
  • Replies
  • מהו בדיוק התכלית של "הסימון" שלך?
    מצוין!

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

    אלון.

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

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

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

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

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

    שלפת בשאילתא את הספקים הרצויים. נניח שאת עומדת על עמודה "שינוי שם". דבר ראשון את מסמנת את הרשומה הראשונה, וזה לא משנה אם את מסמנת או מבטלת, העיקר שאת קובעת לו ערך כלשהו. כאשר את מפעילה את המקרו לפי התבנית שלי, המערכת מבצעת העתקת ערך שדה עליון (כמו מקש F10) -> יורדת לשורה חדשה -> ושוב חוזר חלילה (העתקה של ערך עליון וירידת שורה) כי כך הוגדרה לה כאשר בוצע שוב פעולת "הפעלה" בעת ההקלטה. זאת המשמעות של פעולה "רקורסיבית" — פעולה הקוראת לעצמה!
    תהליך ה"חזרתיות" של המקרו מתבצע עד אשר המונה שלו מגיע לערך המוגדר בקבוע המערכת בשם RECURSIVEMACRO. ערך ברירת מחדל שלו הוא 50 וניתן לשנותו.
    גם אם יש לך רק 10 שורות לעדכון, הוא ינסה להריץ 50 מחזורים. עקב כך, לעיתים קורה "באג" (שאין לי הסבר לכך) שהוא בסוף מדלג לשדה הראשון של הרשומה, במקרה שלו זה מספר הספק, ובשורה חדשה הוא פשוט מעתיק את הקודם. לכן כתבתי קודם שיש לבטל על-ידי Ctrl+Z.

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

    אלון.

    שלום אלכס,

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

    שלח לי באקסל את מבנה הדו"ח מהמחולל כדי שאדע בדיוק היכן לתקן לך.

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

    אלון.

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

    הוראות בניה:
    1. לשלוף בשאילתא באמצעות F11 את הרשומות הרלוונטיות. במידה וגם התקבלו שורות אשר אינן עומדות בקריטריונים, יש לנקות אותם באמצעות F7.

    2. הצבת הערך הרצוי בשורה הראשונה ולאחר מכן לרדת לשורה הבאה.

    3. תפריט מקרו -> תחילת הקלטה -> הגדרת שם -> לחיצה על F10 -> לרדת שורה -> תפריט מקרו -> רשימת מקרו -> בחירת המקרו הנוכחית -> הפעלה -> תפריט מקרו -> סיום הקלטה.

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

    אלון.

    אכן אתה צריך גם לחסום את הדוחות.

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

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

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

    אלון.

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

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

    אלון.

    בוודאי.

    ניתן להוסיף לפונקציה שכתבת מקודם את הארגמנט 'day' כך:

    [code:1]DTOA(CUSTNOTESA.TILLDATE,'DD-MM-YY ,day')[/code:1]

    שלום אלכס,

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

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

    אלון.

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

    האם כדי לבנות דוח המשלב "שאילתת UNION" (כפי שצריך להעשות במקרה עם התאריכים הריקים), יש תמיד לעבוד לפי הפתרון שהצעת: באמצעות פרוצדורה?
    האם אין אפשרות אחרת לשלב ערכים ריקים בדוח?

    אגב, שילוב הטבלה הזמנית של התאריכים עם הטבלה הראשית יש לבצע עם OUTER JOIN, נכון? לא תהיה בעיה של כפילות ואין צורך להשתמש ב-DISTINCT?

    אלון.

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

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

    מהי בדיוק העמודה שהוספת שם? מהי המטרה?

    אלון.

    שלום אלכס,

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

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

    האם עדיין אתה מקבל את הודעת השגיאה הקודמת?
    האם רשמת משהו במסך הבן עמודות למסך – הרחבה? נוסח השגיאה EXPR/… מרמז לי שרשמת שם איזה ביטוי שאינה מובנת למערכת.

    אלון.

    שלום אלכס,

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

    דרך אגב, תריץ את היישום WINDBI (בחר כלים -> הפעלת ישות…), רשום את השורות הרשום למטה, בחר Execute -> SQL interpreter ותחזור אלינו עם תשובה לגבי הערך שקיבלת.

    [code:1]SELECT * FROM SYSCONST
    WHERE NAME = 'ESHBAL' FORMAT;[/code:1]

    אלון.

מוצגות 15 תגובות – 256 עד 270 (מתוך 359 סה״כ)