שורות כפולות במסך

פורומים אפיון ופיתוח פריוריטי שורות כפולות במסך

  • Post
    דן בר
    משתתף
    שלום רב
    בניתי מסך חדש , כל הרשומות מופיעות חמש פעמים כל רשומה , זו אינה מכפלה קרטזית כי לו זוז היתה אז מספר המופעים לכל שורה היה כמה עשרות , בדוח כל רשומה מופיעה פעם אחת וכך גם כאשר צופים בקובץ דרך windbi , יש לציין שזהו מסך שבניתי לפני זמן מה ועבד יפה , הוספתי לו join ל USERSB ובחירה דרך שדה XXX_SNAME עם CHOOS-FIELD ואז ארעה התקלה , לא ברור לי למה חמש פעמים ולמה זה קורה למשהו יש רעיון
מוצגות 4 תגובות – 1 עד 4 (מתוך 4 סה״כ)
  • Replies
    Lior
    מנהל בפורום
    חמש נגד עין הרע :laugh:

    כנראה שחסר שם JOIN כלשהו. תפתח כלים>הפעלה>WINDBI
    תעשה DUMP ו FORM תכניס את שם המסך ותעלה את הפלט לפורום

    דן בר
    משתתף
    מצ"ב הפלט : (אני מניח שזה הרבה שורות אבל בוודאי ניתן למצוא את הכשל ב join(
    בכל מקרה תודה

    FORM : KORD_IT2
    —————
    DECLARE FILL24067 CURSOR FOR
    SELECT KORD_IT.KORD_SNAME, SERNUMBERS.SERNUM, KORD_IT.KORD_DEPT,
    KORD_IT.KORD_PROVINCE, KORD_IT.KORD_ITID, KORD_IT.KORD_LDPM,
    KORD_IT.KORD_TYPE, KORD_IT.KORD_INPAST, KORD_IT.KORD_CNAME, KORD_IT.KORD_OS,
    KORD_IT.KORD_DOMAIN, KORD_IT.KORD_DETAILS, KORD_IT.KORD_STATUS,
    PART.PARTNAME, PART.PARTDES, 's', KORD_IT.KORD_USERB, SERNUMBERS.SERN,
    SERNUMBERS.PART, KORD_IT.KORD_SERN
    FROM USERSB , PART , SERNUMBERS , KORD_IT
    WHERE KORD_IT.KORD_USERB = USERSB.USER
    AND SERNUMBERS.PART = PART.PART
    AND KORD_IT.KORD_SERN = SERNUMBERS.SERN
    ORDER BY 2 ASC

    KEYS :
    ——
    KEY 1 (U): KORD_SERN

    KORD_IT2/INSERT TRIGGER:
    ————————
    SELECT 'X' FROM SERNUMBERS WHERE SERNUM = :KORD_IT2.SERNUM AND PART = :KORD_IT2.PART
    ;
    SELECT 193,2 INTO :SCREENMSG,:SCREENMSGPOS FROM DUMMY WHERE :RETVAL = 0;
    SELECT 'X' FROM SERNUMBERS WHERE SERN = :KORD_IT2.NSCUST AND SERN = :KORD_IT2.SERN
    ;
    SELECT 193,18 INTO :SCREENMSG,:SCREENMSGPOS FROM DUMMY WHERE :RETVAL =
    0;
    SET TRANSACTION;
    INSERT INTO KORD_IT ( KORD_SNAME, KORD_DEPT, KORD_PROVINCE, KORD_ITID,
    KORD_LDPM, KORD_TYPE, KORD_INPAST, KORD_CNAME, KORD_OS, KORD_DOMAIN, KORD_DETAILS,
    KORD_STATUS, KORD_USERB, KORD_SERN)
    VALUES ( :KORD_IT2.KORD_SNAME, :KORD_IT2.DEPARTMENT, :KORD_IT2.KORD_PROVINCE,
    :KORD_IT2.KORD_ITID, :KORD_IT2.KORD_LDPM, :KORD_IT2.KORD_TYPE, :KORD_IT2.KORD_INPAST,
    :KORD_IT2.KORD_CNAME, :KORD_IT2.KORD_OS, :KORD_IT2.KORD_DOMAIN, :KORD_IT2.KORD_DETAILS,
    :KORD_IT2.KORD_STATUS, :KORD_IT2.KORD_USERSB, :KORD_IT2.SERN);

    SELECT 189 INTO :SCREENMSG FROM DUMMY WHERE :RETVAL = 0;
    :NEXTPATTERNFLAG = 0;
    COMMIT;

    KORD_IT2/UPDATE TRIGGER:
    ————————
    SELECT 'X' FROM SERNUMBERS WHERE SERNUM = :KORD_IT2.SERNUM AND PART = :KORD_IT2.PART
    ;
    SELECT 193,2 INTO :SCREENMSG,:SCREENMSGPOS FROM DUMMY WHERE :RETVAL = 0;
    SELECT 'X' FROM SERNUMBERS WHERE SERN = :KORD_IT2.NSCUST AND SERN = :KORD_IT2.SERN
    ;
    SELECT 193,18 INTO :SCREENMSG,:SCREENMSGPOS FROM DUMMY WHERE :RETVAL =
    0;
    SET TRANSACTION;
    UPDATE KORD_IT
    SET KORD_SNAME = :KORD_IT2.KORD_SNAME ,
    KORD_DEPT = :KORD_IT2.DEPARTMENT ,
    KORD_PROVINCE = :KORD_IT2.KORD_PROVINCE ,
    KORD_ITID = :KORD_IT2.KORD_ITID ,
    KORD_LDPM = :KORD_IT2.KORD_LDPM ,
    KORD_TYPE = :KORD_IT2.KORD_TYPE ,
    KORD_INPAST = :KORD_IT2.KORD_INPAST ,
    KORD_CNAME = :KORD_IT2.KORD_CNAME ,
    KORD_OS = :KORD_IT2.KORD_OS ,
    KORD_DOMAIN = :KORD_IT2.KORD_DOMAIN ,
    KORD_DETAILS = :KORD_IT2.KORD_DETAILS ,
    KORD_STATUS = :KORD_IT2.KORD_STATUS ,
    KORD_USERB = :KORD_IT2.KORD_USERSB ,
    KORD_SERN = :KORD_IT2.SERN
    WHERE KORD_SNAME = :KORD_IT21.KORD_SNAME
    AND KORD_DEPT = :KORD_IT21.DEPARTMENT
    AND KORD_PROVINCE = :KORD_IT21.KORD_PROVINCE
    AND KORD_ITID = :KORD_IT21.KORD_ITID
    AND KORD_LDPM = :KORD_IT21.KORD_LDPM
    AND KORD_TYPE = :KORD_IT21.KORD_TYPE
    AND KORD_INPAST = :KORD_IT21.KORD_INPAST
    AND KORD_CNAME = :KORD_IT21.KORD_CNAME
    AND KORD_OS = :KORD_IT21.KORD_OS
    AND KORD_DOMAIN = :KORD_IT21.KORD_DOMAIN
    AND KORD_DETAILS = :KORD_IT21.KORD_DETAILS
    AND KORD_STATUS = :KORD_IT21.KORD_STATUS
    AND KORD_USERB = :KORD_IT21.KORD_USERSB
    AND KORD_SERN = :KORD_IT21.SERN ;

    SELECT (:RETVAL = 0 ? 190 : (:RETVAL < 0 ? 50 : 0)) INTO :SCREENMSG FROM
    DUMMY ;
    :NEXTPATTERNFLAG = 0;
    COMMIT;

    KORD_IT2/DELETE TRIGGER:
    ————————
    SET TRANSACTION;
    DELETE FROM KORD_IT
    WHERE KORD_SNAME = :KORD_IT21.KORD_SNAME
    AND KORD_DEPT = :KORD_IT21.DEPARTMENT
    AND KORD_PROVINCE = :KORD_IT21.KORD_PROVINCE
    AND KORD_ITID = :KORD_IT21.KORD_ITID
    AND KORD_LDPM = :KORD_IT21.KORD_LDPM
    AND KORD_TYPE = :KORD_IT21.KORD_TYPE
    AND KORD_INPAST = :KORD_IT21.KORD_INPAST
    AND KORD_CNAME = :KORD_IT21.KORD_CNAME
    AND KORD_OS = :KORD_IT21.KORD_OS
    AND KORD_DOMAIN = :KORD_IT21.KORD_DOMAIN
    AND KORD_DETAILS = :KORD_IT21.KORD_DETAILS
    AND KORD_STATUS = :KORD_IT21.KORD_STATUS
    AND KORD_SERN = :KORD_IT21.SERN ;

    SELECT (:RETVAL = 0 ? 191 : (:RETVAL < 0 ? 50 : 0)) INTO :SCREENMSG FROM
    DUMMY ;
    COMMIT;

    KORD_IT2/PRE-FORM TRIGGER:
    ————————–
    :TABFORM = 24067; SELECT PARTDES,SERNUM
    FROM SERNUMBERS,PART,VCLINFO !
    WHERE SERNUMBERS.PART = PART.PART
    AND SERNUMBERS.SERN = VCLINFO.SERN
    ORDER BY 1;

    KORD_IT2/KORD_SNAME/CHOOSE-FIELD TRIGGER:
    —————————————–
    DECLARE FILL_CHOOSE_F24067_KORD_SNAME CURSOR FOR
    SELECT IDNUMBER , SNAME
    FROM USERSB ;

    KORD_IT2/SERNUM/CHECK-FIELD TRIGGER:
    ————————————
    GOTO 1 WHERE :KORD_IT2.SERNUM = '';
    SELECT 'X'
    FROM SERNUMBERS
    WHERE SERNUM = :KORD_IT2.SERNUM;
    SELECT 192 INTO :SCREENMSG
    FROM DUMMY WHERE :RETVAL = 0;
    LABEL 1;

    KORD_IT2/SERNUM/POST-FIELD TRIGGER:
    ———————————–
    SET TRANSACTION ;
    SELECT SERN, SERN
    INTO :KORD_IT2.NSCUST, :KORD_IT2.SERN
    FROM SERNUMBERS
    WHERE SERNUM = :KORD_IT2.SERNUM
    AND PART = :KORD_IT2.PART ;
    :TABFORM = 24067; GOTO 9 WHERE :$.SERNUM = '' ;
    SELECT MAX(SERN),COUNT(*) INTO :SERN,:COUNT
    FROM SERNUMBERS
    WHERE SERNUM = :$.SERNUM AND CANCELDATE = 0;
    GOTO 9 WHERE :COUNT 1 ;
    SELECT PARTNAME INTO :$.PARTNAME
    FROM PART WHERE PART =
    (SELECT PART FROM SERNUMBERS WHERE SERN = :SERN) ;
    LABEL 9;

    COMMIT;

    KORD_IT2/SERNUM/CHOOSE-FIELD TRIGGER:
    ————————————-
    DECLARE FILL_CHOOSE_F24067_SERNUM CURSOR FOR
    SELECT PARTDES,SERNUM
    FROM SERNUMBERS,PART,KORD_IT !
    WHERE SERNUMBERS.PART = PART.PART
    AND SERNUMBERS.SERN = KORD_IT.KORD_SERN
    AND PARTNAME = 'ItPart'
    ORDER BY 1;

    KORD_IT2/PARTNAME/POST-FIELD TRIGGER:
    ————————————-
    SET TRANSACTION ;
    SELECT PARTDES, PART
    INTO :KORD_IT2.PARTDES, :KORD_IT2.PART
    FROM PART
    WHERE PARTNAME = :KORD_IT2.PARTNAME ;
    :TABFORM = 24067; :TABFORM = 5943; GOTO 19 WHERE :$.PARTNAME = " ;
    SELECT PART,MPART INTO :PART,:MPART
    FROM PART WHERE PARTNAME = :$.PARTNAME ;
    SELECT TEXT1, TEXT2, TEXT3
    INTO :PAR1, :PAR2, :PAR3
    FROM PARTMSG WHERE PART = :PART ;
    GOTO 18 WHERE :RETVAL > 0
    AND (:PAR1 " OR :PAR2 " OR :PAR3 ") ;
    SELECT TEXT1, TEXT2, TEXT3
    INTO :PAR1, :PAR2, :PAR3
    FROM PARTMSG WHERE PART = :MPART ;
    GOTO 18 WHERE :RETVAL > 0
    AND (:PAR1 " OR :PAR2 " OR :PAR3 ") ;
    GOTO 19 ;
    LABEL 18;
    WRNMSG 210 ;
    LABEL 19;

    :TABFORM = 24067;
    COMMIT;

    KORD_IT2/PARTNAME/CHOOSE-FIELD TRIGGER:
    —————————————
    DECLARE FILL_CHOOSE_F24067_PARTNAME CURSOR FOR
    SELECT PARTDES , PARTNAME
    FROM PART
    WHERE PARTNAME = 'ItPart' ;

    KORD_IT2/NSCUST/POST-FIELD TRIGGER:
    ———————————–
    SET TRANSACTION ;
    :KORD_IT2.SERN = :KORD_IT2.NSCUST;
    SELECT SERNUM, PART
    INTO :KORD_IT2.SERNUM, :KORD_IT2.PART
    FROM SERNUMBERS
    WHERE SERN = :KORD_IT2.NSCUST
    AND SERN = :KORD_IT2.SERN ;

    COMMIT;

    KORD_IT2/PART/POST-FIELD TRIGGER:
    ———————————
    SET TRANSACTION ;
    SELECT SERN, SERN
    INTO :KORD_IT2.NSCUST, :KORD_IT2.SERN
    FROM SERNUMBERS
    WHERE SERNUM = :KORD_IT2.SERNUM
    AND PART = :KORD_IT2.PART ;
    SELECT PARTNAME, PARTDES
    INTO :KORD_IT2.PARTNAME, :KORD_IT2.PARTDES
    FROM PART
    WHERE PART = :KORD_IT2.PART ;

    COMMIT;

    KORD_IT2/SERN/POST-FIELD TRIGGER:
    ———————————
    SET TRANSACTION ;
    GOTO 9 WHERE :NEXTPATTERNFLAG = 1;
    SELECT KORD_SNAME, KORD_DEPT, KORD_PROVINCE, KORD_ITID, KORD_LDPM,
    KORD_TYPE, KORD_INPAST, KORD_CNAME, KORD_OS, KORD_DOMAIN, KORD_DETAILS,
    KORD_STATUS, KORD_USERB
    INTO :KORD_IT2.KORD_SNAME, :KORD_IT2.DEPARTMENT, :KORD_IT2.KORD_PROVINCE,
    :KORD_IT2.KORD_ITID, :KORD_IT2.KORD_LDPM, :KORD_IT2.KORD_TYPE,
    :KORD_IT2.KORD_INPAST, :KORD_IT2.KORD_CNAME, :KORD_IT2.KORD_OS,
    :KORD_IT2.KORD_DOMAIN, :KORD_IT2.KORD_DETAILS, :KORD_IT2.KORD_STATUS,
    :KORD_IT2.KORD_USERSB
    FROM KORD_IT
    WHERE KORD_SERN = :KORD_IT2.SERN ;
    LABEL 9 ;
    :KORD_IT2.NSCUST = :KORD_IT2.SERN;
    SELECT SERNUM, PART
    INTO :KORD_IT2.SERNUM, :KORD_IT2.PART
    FROM SERNUMBERS
    WHERE SERN = :KORD_IT2.NSCUST
    AND SERN = :KORD_IT2.SERN ;

    COMMIT;

    Lior
    מנהל בפורום
    אני חושב שזה ה JOIN
    KORD_IT.KORD_USERB USERSB.USER

    USERSB היא טבלת עובדים ו USER הוא שם המשתמש של העובד. המפתח של USERSB הוא USERB
    ובכלל לאיזה צורך אתה עושה JOIN ל USERSB אם אין לך אף שדה במסך שמציג נתונים ממנה

    דן בר
    משתתף
    תודה רבה – עזרת לי מאוד , הבעיה היתה באמת השימוש ב USER במקום USERB .
    בכל מקרה אני לא מוצא את ה LIKE – אשמח אם תציין איפה זה בדיוק

    תודה

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