› פורומים › אפיון ופיתוח פריוריטי › עזרה במספור עמודות בדוח
- This topic has 13 תגובות, 4 משתתפים, and was last updated לפני 9 שנים, 11 חודשים by 123.
- Post
-
- נובמבר 5, 2014 בשעה 11:06 am
שלום,
אני צריך עזרה במספור רשומות בדוח. (מצורף)
אני רוצה למספר כל שורת רכיב במספר רץ. כלומר כל שינוי ברכיב שיופיע המספר הבא. יש רכיבים שמופיעים בכמה מיקומים ולכן הם מקבלים גם כן מספרים.
האם יש לי דרך לקבוע מספר לפי כל שינוי במק"ט ?הדוח בנוי על GENERALLOAD כך שאם למישהו יש רעיונות איך שם אני מצליח למספר כל שינוי במק"ט ואז למשוך לדוח זה גם יהיה טוב.
- Replies
-
- נובמבר 9, 2014 בשעה 2:35 pm
תרוץ בפרוצדורה על המיון של הדוח ותן מספר לכל שורה בטבלה ואת הערך הזה תציג בדוח- נובמבר 9, 2014 בשעה 2:40 pm
תוכל לתת כיוון איך לבצע ?
ניסיתי לבצע אך ללא הצלחה.
איך להריץ גם מיון וגם לשתול ערך נוסף ב GENERALLOAD ?- נובמבר 10, 2014 בשעה 10:03 pm
אנסה להסביר שוב,
יש לי את טבלת GENERALLOAD מלאה בנתונים ממויינת ע"פ PART.
אני רוצה למיין אותה לפי PARTNAME – כיצד אני יכול לבצע את זה בריצה על הטבלה ?
ניסיתי עם ORDER BY אבל זה לא ממש עובד- דצמבר 7, 2014 בשעה 10:57 pm
אתה יכול למיין בעזרת CURSOR על PARTNAME
ולהכניס לטבלה עם RECORDTYPE אחר
ואז למחוק את הרשומות הקודמות- דצמבר 8, 2014 בשעה 12:05 am
תריץ CURSOR על ה-GENERALLOAD שלך ובשאילתת ה-CURSOR תקבע שהריצה תהיה על פי הערך הממיין (כלומר, ORDER BY על פיו).
"תחזיק בצד" משתנה COUNTER כלשהו שיקודם בכל איטרציה של ה-CURSOR ויתחיל מ-1.
את המשתנה הזה תשים בעמודה אחרת של GENERALLOAD על ידי ביצוע UPDATE לרשומה באיטרציה הנוכחית.
עבור האיטרציה הבאה תדאג לקדם את ה-COUNTER וחוזר חלילה.בדוח עצמו תדאג למיין לפי העמודה שלה עשית UPDATE עם ה-COUNTER
- דצמבר 14, 2014 בשעה 12:21 pm
הי גבי,
ביצעתי על פי מה שרשמת אבל הבעיה היא שהמספור לא עולה באופן רציף אלא במכפלות של מספר הרשומות הזהות בטבלה לפי המיון.
:COUNT = 0;
DECLARE G CURSOR FOR
SELECT LINE,TEXT3,INT6 FROM GENERALLOAD WHERE LINE > 0
ORDER BY TEXT3;
OPEN G;
LABEL 1;
:COUNT = :COUNT + 1;
FETCH G INTO :LINE, :TEXT3, :INT6 ;
GOTO 99 WHERE :RETVAL <= 0;
UPDATE GENERALLOAD SET INT6 = :COUNT WHERE TEXT3 = :TEXT3;
LOOP 1;
LABEL 99;
CLOSE G;מה שיוצא זה שיש לי סדר עולה אבל המרווחים בין הרשומות אינם עוקבים. כנראה אני מקדם לא נכון את המונה או שחסרה לי לולאה נוספת.
מה שאני צריך שיקרה זה שעל כל מק"ט שונה אני רוצה לקגם את המונה ב-1. מק"ט יכול להופיע בכמה רשומות (בגלל מיקומים שונים בעץ מוצר)
כיצד אני יכול לבצע בדיקה על הערך הנוכחי ב CURSOR אם הוא שונה מהערך הקודם שנתפס ?- דצמבר 14, 2014 בשעה 6:18 pm
נראה שקידום המונה בסדר.שמתי לב שבשאילתת ה-CURSOR שלך אתה מבצע שליפה של מספר שדות, ביניהם כנראה המק"ט.
עם זאת, בשלב ה-UPDATE אתה מבצע עדכון לפי שדה TEXT3. מדוע ?הייתי מצפה שתבצע עדכון לפי השדה הייחודי של טבלה זו –> LINE.
בדרך זו תבצע עדכון אך ורק לשורה אותה שלפת באיטרצית ה-CURSOR.- דצמבר 14, 2014 בשעה 6:36 pm
כאשר אני מבצע עדכון לפי LINE ולא לפי TEXT3 (ב TEXT3 אני מאחסן את PARTNAME) אז כל שורה מקבלת מספר בסדר רץ. זה היה טוב לי אם לא היו לי כפילויות שמק"ט יכול להופיע יותר מפעם אחת (הכפילות נובעת בגלל הכפלה עם טבלת מיקומים).בסופו של דבר זו התוצאה שאני מצפה לה אחרי עדכון GENERALLOAD:
TEXT3 INT6
CAP10002 1
CAP10002 1
CAP10003 2
ICI10058 3
ICI10058 3
RES10005 4
RES10005 4
RES10005 4
RES10005 4ואז לכל מק"ט יהיה את זיהוי השורה שלו בדוח וע"פ זה אני אבצע מיון.
בפועל, מה שאני מקבל זה : (המונה עולה כמספר השורות בהם מופיע המק"ט הקודם)
TEXT3 INT6
CAP10002 1
CAP10002 1
CAP10003 3
ICI10058 4
ICI10058 4
RES10005 6
RES10005 6
RES10005 6
RES10005 6- דצמבר 14, 2014 בשעה 6:40 pm
הבנתי.אם כך, מה שאתה צריך לשנות הוא רק את ה-SELECT בשאילתא של ה-CURSOR.
שלוף את עמודת המק"ט בלבד.*שים לב רק להוסיף DISTINCT אחרי ה-SELECT
זה אמור לסדר
- יש להתחבר למערכת על מנת להגיב.