› פורומים › אפיון ופיתוח פריוריטי › ממשק עדכון הזמנות רכש
- This topic has 14 תגובות, משתתף 1, and was last updated לפני 9 שנים, 3 חודשים by
אלמוני.
- Post
-
- אוקטובר 28, 2015 בשעה 12:33 pm
היי,
אני מנסה לעשות שאילתא שבודקת שאם יש יותר מפעם אחת מק"ט מסויים בפירוט הזמנות רכש אז ייבדק מה השורה עם הכמות הנמוכה ביותר ואז יבוצע עליה שינוי כלשהו ואז ימשיך לשורה הבאה הנמוכה ביותר במידה והכמות מהקובץ גדולה מהכמות בשורה עם הכמות הנמוכה ביותר.
מקווה שמספיק מובן, אשמח להצעות איך לרשום את זה.
בגדול זהו חלק ממשק שבניתי, אשר לוקחת קובץ וטוענת אותו במערכת ומבצעת שינויים בהזמנות הרכש ומפצלת שורות אם צריך.
- Replies
-
- אוקטובר 29, 2015 בשעה 9:38 am
על פניו, את צריכה להגדיר שליפה בסגנון הזה
DECLARE C1 CURSOR FOR
SELECT PORDERITEMS.PART, PORDERITEMS.QUANT, PORDERITEMS.LINE
FROM PORDERITEMS
WHERE PORDERITEMS.ORD = :ORD
ORDER BY PORDERITEMS.QUANT, PORDERITEMS.PARTהקורסור יביא את השורות לפי כמות עולה (דהיינו הכמות הקטנה ביותר תהיה ראשונה)
- נובמבר 4, 2015 בשעה 2:58 pm
מעולה תודה
אבל מה שקורה זה, שאני מקבלת שגיאה שעדכון הקובץ נכשל וזה רק לשורות שהשתמשו בקרסור…
השגיאה היא מטעינת הטבלה הזמנית למסך כי הטבלה הזמנית התמלאה כמו שצריך
יש לך מושג למה זה קורה?- נובמבר 4, 2015 בשעה 3:59 pm
אז גיליתי שזה קורה כי אני מנסה לעדכן/להוסיף KLINE אז שיניתי לLINE ואני לא מקבלת את השגיאה יותר אך עכשיו הפרוצדורה לא עובדת כמו שצריך 🙁- נובמבר 4, 2015 בשעה 5:44 pm
תלוי מה מופיע בממשק: הקורסור צריך להחזיר שדות בהתאם לממשק.
אם בממשק KLINE, אז בקורסור KLINE
אם בממשק LINE, אז בקורסור LINE
כיון ש-ORDI המפתח הראשי של PORDERITEMS, עדכון אמור להתבצע רק עם הערך הזה, בלי K/LINE. אפשר להשתמש בצמד ORD/KLINE.בתשובה הראשונה שלי, כתבתי "בסגנון הזה" – לא ידעתי בדיוק מה היו הצרכים.
- נובמבר 5, 2015 בשעה 4:13 pm
הממשק לא רק מעדכן שורות אלא גם מוסיף שורות חדשות.
האם אני צריכה לציין מה ה-K\LINE כשאני רוצה שהממשק יוסיף שורה חדשה? או שאני יכולה לעדכן שיפתח שורת 0?
תודה- נובמבר 9, 2015 בשעה 1:14 pm
- נובמבר 9, 2015 בשעה 4:40 pm
אבל כשאני מקשרת את עמודת LINE לטבלת הטעינה אני מקבלת הודעה :
עמודה LINE אינה ניתנת לעדכון במסך PORDERITEMS
יש דרך לעקוף את זה?- נובמבר 10, 2015 בשעה 5:30 pm
- נובמבר 16, 2015 בשעה 3:25 pm
נכון, עדכון השורה עבד אבל לא הוספת השורה.
לכן, הוספתי עוד ממשק להוספת שורה והוספתי אותו לשאילתא בעזרת EXECUTE אבל עכשיו הממשק רק מוסיף לי שורה בלי לעדכן את שאר השורות…
ז"א, הממשק רק מבצע את החלק השני של השאילתא (הוספת השורה) ומתעלם מהשלב הראשון (עדכון שורות) למרות שהוא כן ממלא את הטבלה הזמנית בנתונים הרלוונטיים…- נובמבר 17, 2015 בשעה 5:56 pm
כאשר אני קורא את המכתב המקורי שלך, לא ברור לי למה את צריכה להוסיף שורות. כתבת על עדכון שורה כאשר לשורה יש הכמות הכי קטנה של פריט שמופיע פעמיים (או יותר) בהזמנה.היה עוזר לו היית נותנת דוגמא.
אגב, צריך לשפר את השאילתא המקורית שכתבתי – צריך להוסיף בסוף את השורה
HAVING COUNT (*) > 1
המשפט הזה אמור להביא רק פריטים שמופיעים פעמיים או יותר בהזמנה. אינני בטוח אם צריך להחליף את הכוכבית ב-PORDERITEMS.PART – כדאי לבדוק ב-WINDBI. שורת HAVING חייבת להיות אחרונה בשאילתא מפני שהיא פועלת/מסננת את כל השורות שנאספו בשאילתא הרגילה.- נובמבר 18, 2015 בשעה 12:47 pm
מטרת הממשק:
משיכת קובץ של packingList שמעדכן את הכמות בהזמנת הרכש. (ומוסיף פרטים כמו תאריך אספקה ומספר מכולה)
יש כמה מקרים שיש להתייחס אליהם:
1. אם הכמות בהזמנה קטנה מהכמות בקובץ אז מתבצע רק עדכון כמות באותה השורה
2. אם הכמות בהזמנה גדולה מהכמות בקובץ אז מתבצע פיצול שורה: בקובץ הכמות היא 10 ובהזמנה הכמות היא 50. השורה בהזמנה תשתנה מ-50 ל-10 ואז תיפתח שורה חדשה עם כמות 40.
3. אם יש כמה פעמים את אותו מק"ט באותו הזמנה אז הממשק ממיין את הכמות מהקטן לגדול (על מנת לסגור כמה שיותר שורות) ומבצע את הבדיקות לכל שורה (מבצע את 1 ו/או 2)לשם העדכון, טבלת GENERALLOAD מתמלאת ולשם הוספת השורות GENERALLOAD2 מתמלאת.
שתי הטבלאות מתמלאות כמו שצריך אך הבעיה היא שרק העדכון עבד ולכן הוספתי EXECUTE בתוך השאילתא של הגדרת הטעינה ועכשיו רק הוספת השורות עובדת.מה אני מפספסת?
*מקווה שמובן ולא חופר כל כך 🙂
- ינואר 13, 2016 בשעה 5:53 pm
היי, יש לי עדין בעיה עם הממשק שבניתי, אני כל הזמן מקבלת שגיאה:
"אין לשנות או להכניס מוצר אם יש ערך בשדה הכמות"בבקשה עזרה אני משתגעת!!!!!
- יוני 15, 2016 בשעה 3:53 pm
- יש להתחבר למערכת על מנת להגיב.