קוד לחישובי תאריך על עמודה לפי שורות

פורומים אפיון ופיתוח פריוריטי קוד לחישובי תאריך על עמודה לפי שורות

  • Post
    אורן קפלן
    משתתף
    בתגובה להודעה של ליאור ב: פונקציה שתציג לי תאריך שנה קדימה

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

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

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

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

    תודה

    אורן [file name=myproc.zip size=5900]https://www.priority-forums.com/he/images/fbfiles/files/myproc.zip[/file]

מוצגות 8 תגובות – 1 עד 8 (מתוך 8 סה״כ)
  • Replies
    Lior
    מנהל בפורום
    הי אורן
    זה לא קשור להוספת התאריך יש בעיה בקוד: לדוגמא:
    [code:1]SELECT * INTO :$.SNG FROM :$.CUT WHERE ( :$.CUT.LINE = :I ) ;[/code:1]

    זה קוד לא נכון ה FROM שלך לא פונה לטבלה אלא למשתנה בשם CUT וזה סינטקס לא חוקי.
    ראיתי עוד כמה נקודות בעייתיות לדוגמא הביטויים:
    :$.SNG.CUSTNAME, :$.SNG.UNIT

    בוא נתחיל בלהעביר את הקוד שלך הכנה לפני הטיפול בתאריך.
    אגב גם האתחול שלו לא נכון. צריך להיות: (24:00*(DAY( SQL.DATE ) + 1) כדי להוריד את מספר הימים לתחילת השבוע.

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

    אם אני עושה LINK לטבלה מסויימת, ועושה מניפולציות (כמו לעבור על שורות בתוצאה שלי) אני לא מקבל מידע שמתעדכן תוך כדי ריצת הפרוצדורה, נכון? אני עובד רק על העותק שעשיתי בשורה של הLINK….

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

    מה אתם אומרים?

    אורן

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

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

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

    קצת יותר ברור?

    בכל אופן אעלה את הקוד המתוקן יותר מאוחר היום, אם הוא יעבוד ואם לא.

    תודה!

    אורן

    אורן קפלן
    משתתף
    שאלה לבינתיים…

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

    אורן

    אורן קפלן
    משתתף
    שוב שלום,
    מצ"ב קובץ ZIP עם הקבצים של 'סביבת פיתוח SQL'.
    עשיתי DUMP לפרוצדורה וניסיתי לעשות אופטימיזציה לקוד, לראות אם הוא בכלל לוקח אותו לאנשהו…
    הוא מסרב בתוקף ונותן לי שגיאה שאני לא ככ יודע מה לעשות איתה שמופיעה גם היא בקובץ המצורף.
    IN – הקוד מהDUMP, כשהכנסתי את הקריאות לפונקציות להערות.
    OPT – תוצאות אופטימיזציה.
    ERR – השגיאה.
    BAK – כנראה ה'IN' הקודם.

    מקווה שהצלחתי להסביר מה הבעיה.

    תודה
    אורן [file name=file.zip size=5340]https://www.priority-forums.com/he/images/fbfiles/files/file.zip[/file]

מוצגות 8 תגובות – 1 עד 8 (מתוך 8 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.