› פורומים › אפיון ופיתוח פריוריטי › פונקציה שתציג לי תאריך שנה קדימה
- This topic has 15 תגובות, 6 משתתפים, and was last updated לפני 14 שנים, 9 חודשים by אורן קפלן.
- Post
- Replies
-
- ספטמבר 3, 2009 בשעה 3:12 pm
ראה דוגמא:
[code:1]ORDERITEMS.REQDATE + 365 * 24:00[/code:1]- ספטמבר 3, 2009 בשעה 6:51 pm
michaelm כתב:ראה דוגמא:
[code:1]ORDERITEMS.REQDATE + 365 * 24:00[/code:1]תשובה זו לא לוקחת בחשבון שנת עיבור
365 ימים לאחר 2 ביוני 2011 יהיה 1 ביוני 2012אם לא אכפת לך מצב כזה אין בעיה
יש פונקציות שיעזרו בדבר זה (ראה מסמך הSDK!)
דוגמה שלי. קוד זה מטפל בשנות עיבור. אפשר להקטין (נראה לי) לביטוי אחד אבל לא הוכחתי.
[code:1]
:MYDATE = 05/06/2008 ;
:NEWDATETEXT = " ;
SELECT DTOA(:MYDATE,'DD/MM') INTO :NEWDATETEXT FROM DUMMY ;
SELECT '01/03' INTO :NEWDATETEXT FROM DUMMY WHERE :NEWDATETEXT = '29/02' ;
SELECT STRCAT(:NEWDATETEXT,'/',ITOA(YEAR(:MYDATE)+1)) INTO :NEWDATETEXT FROM DUMMY ;
SELECT ATOD(:NEWDATETEXT,'DD/MM/YYYY') FROM DUMMY FORMAT ;
[/code:1][ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- ספטמבר 3, 2009 בשעה 7:16 pm
תיקון!היות ופונקציית DTOA לא בודקת שמספר היום בחודש הוא אפשרי, לא צריכים לתקן יום עיבור:
[code:1]
:MYDATE = 29/02/2008 ;
:NEWDATETEXT = " ;
SELECT DTOA(:MYDATE,'DD/MM') INTO :NEWDATETEXT FROM DUMMY ;
/* SELECT '01/03' INTO :NEWDATETEXT FROM DUMMY WHERE :NEWDATETEXT = '29/02' ; */
SELECT STRCAT(:NEWDATETEXT,'/',ITOA(YEAR(:MYDATE)+1)) INTO :NEWDATETEXT FROM DUMMY ;SELECT ATOD(:NEWDATETEXT,'DD/MM/YYYY') FROM DUMMY FORMAT ;
[/code:1]בתור ביטוי יחיד:
[code:1]
:MYDATE = 29/02/2008 ;
SELECT ATOD(STRCAT(DTOA(:MYDATE,'DD/MM'),'/',ITOA(YEAR(:MYDATE)+1)),'DD/MM/YYYY') FROM DUMMY FORMAT ;
[/code:1][ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- ספטמבר 3, 2009 בשעה 9:20 pm
ניתן להשתמש גם ב AddMonthsToDate – טריגר במסך func שמשמש להוספת מספר חודשים לתאריך נתון.
דוגמא:[code:1]:CURDATE = 01/02/09;
:MONTHS = 6;
#include func/AddMonthsToDate[/code:1]אחרי ה INCLUDE המשתנה CURDATE מכיל את הערך 01/08/09
- אוקטובר 5, 2009 בשעה 12:58 pm
שלום לכולם ומועדים לשמחה
שמחתי למצוא את הפתרון הזה שמשמש אותי .
אני צריך גם פתרון שיחשב לי מספר שנים קדימה +11 חודשים .
כיצד אני יכול לשדרג את הקוד ע"מ שייתן לי מענה לכך?
(אני משתמש בפתרון של יצחוק ולא בפתרון של ליאור).- אוקטובר 5, 2009 בשעה 1:06 pm
אם תשתמש בפתרון שלי, תוכל להכפיל את מספר השנים ב 12 ולהוסיף לו 11 ולאחסן אותו ב MONTHS. הכי פשוט שיש.- אוקטובר 5, 2009 בשעה 1:24 pm
אבל אני צריך שהחישוב יתבצע בתוך פרוצדורה ולא דרך מסך , האם זה אפשרי?- אוקטובר 5, 2009 בשעה 2:32 pm
אני מנסה בSDK ומקבל שגיאה , כיצד אני אמור לרשום?
האם ה-INCLUDE הוא חלק מהקוד?- אוקטובר 5, 2009 בשעה 2:43 pm
ניסיתי אותיות קטנות וגדולות וזו השגיאה:
"C:\tmp/file.in", line 3: Unclosed string
"C:\tmp/file.in", line 4: parse error at or near symbol INCLUDE FUNC/AddMonthsTODate;- אוקטובר 5, 2009 בשעה 3:01 pm
שם המסך והטריגר לא מדוייקים. תכתוב בדיוק כמו רשמתי לעיל פרט ל INCLUDE שיהיה עם אותיות גדולות וסולמית. כמו כן הטריגר הזה מופיע באינספור מקומות במערכת, אתה יכול לחפש ולהעתיק משם- מרץ 15, 2010 בשעה 10:19 am
היי,
סליחה שאני מקפיץ דיון כזה ישן, אבל אני עדיין לא מסתדר עם הטריגר – הוא לא מוכן בשום פנים לעבוד, לא בסביבת פיתוח SQL ולא בפרוצדורה שלי – הוא נותן לי את אותה השגיאה שמיכאל קיבל.תודה
אורן
- מרץ 16, 2010 בשעה 12:30 am
הי אורן. שים את הקוד שלך בקובץ טקסט. סגור בזיפ והעלה לפורום. אני אעיף בו מבט.
- יש להתחבר למערכת על מנת להגיב.