הדפסת מדבקות בסדר עולה

פורומים שימוש במערכת הדפסת מדבקות בסדר עולה

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

    PART.PARTNAME, PART.PARTDES, ITOA(TRANSORDER.CQUANT / 1000),
    SERIAL.SERIALNAME, PART2.PARTNAME,LOCNAME,ACTNAME,
    :LD, 1,:KLINE
    FROM PART, TRANSORDER, SERIAL, PART PART2,WAREHOUSES W,ACT

    WHERE
    TRANSORDER.PART = PART.PART
    AND TRANSORDER.WARHS = W.WARHS
    AND TRANSORDER.FORACT = ACT.ACT
    AND TRANSORDER.FORSERIAL = SERIAL.SERIAL

    אני רוצה למיין את הנתונים שישלחו למשטח לפי פעולה ואחר כך לפי איתור.
    ז"א אני צריך להוסיף ORDER BY ל- LOCNAME , ACTNAME.
    איך אני מוסיף את זה לשאילתא ? (צריך להגיע אחרי הFROM ?

    תודה רבה

מוצגות 9 תגובות – 1 עד 9 (מתוך 9 סה״כ)
  • Replies
    אורן קפלן
    משתתף
    היי גלעד,
    אם אתה רוצה שהמיון יהיה בשאילתא עצמה אז אתה יכול להוסיף לשאילתא את ORDER BY 7 , 6 בסוף השאילתא (לפני הנקודה פסיק).

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

    בהצלחה

    אורן

    גלעד
    משתתף
    זה בדיוק מה שעשיתי אבל כל הזמן הוא נותן לי שגיאת סינטקס. תוכל להגיד לי איפה בדיוק להכניס את הביטוי ?

    LINK SERIAL TO :$.PAR ;
    ERRMSG 10 WHERE :RETVAL <= 0 ;
    :BAL = :PART = :SER = 0 ;
    :LD = 0 ;
    :FF = '' ;
    SELECT STRCAT(SQL.TMPFILE, '.csv') INTO :FF
    FROM DUMMY ;
    /*SELECT * FROM SERIAL
    TABS UNICODE :FF ;
    EXECUTE SHELLEX :FF ;*/
    :SER = 0 ;
    SELECT SERIAL INTO :SER
    FROM SERIAL
    WHERE SERIAL 0 ;
    :PAR1 = 'KitItems1' ;
    SELECT LABELDEF INTO :LD
    FROM LABELSDEF
    WHERE LABELNAME = :PAR1 ;
    :KLINE = 0;
    DELETE FROM LABELS WHERE USER = SQL.USER;
    DECLARE SESE CURSOR FOR
    SELECT TRANS
    FROM TRANSORDER
    WHERE TRANS 0
    AND TYPE = 'K'
    AND DOC = :SER ;
    OPEN SESE;
    GOTO 1 WHERE :RETVAL <= 0;
    /*SELECT MAX(KLINE), MAX(SORT) INTO :KLINE, :SORT FROM LABELS
    WHERE USER = SQL.USER;*/
    LABEL 2;
    FETCH SESE INTO :TRANS;
    GOTO 3 WHERE :RETVAL <= 0;
    :KLINE = :KLINE + 1;
    INSERT INTO LABELS(USER, KLINE, PAR1, PAR2,PAR3, PAR4, PAR5,PAR6,
    PAR7,LABELDEF, LABELQUANT, SORT)
    SELECT SQL.USER, :KLINE,
    PART.PARTNAME, PART.PARTDES, ITOA(TRANSORDER.CQUANT / 1000),
    SERIAL.SERIALNAME, PART2.PARTNAME,LOCNAME,ACTNAME,
    :LD, 1,:KLINE
    FROM PART, TRANSORDER, SERIAL, PART PART2,WAREHOUSES W,ACT
    WHERE
    TRANSORDER.PART = PART.PART
    AND TRANSORDER.WARHS = W.WARHS
    AND TRANSORDER.FORACT = ACT.ACT
    AND TRANSORDER.FORSERIAL = SERIAL.SERIAL
    AND PART2.PART = SERIAL.PART
    AND SERIAL.SERIAL = :SER
    AND TRANSORDER.TRANS = :TRANS;
    LOOP 2;
    LABEL 3;
    CLOSE SESE;
    LABEL 1;
    /**/
    UNLINK SERIAL ;
    LABEL 999;

    אורן קפלן
    משתתף
    היי גלעד,

    נסה את:
    LINK SERIAL TO :$.PAR ;
    ERRMSG 10 WHERE :RETVAL <= 0 ;
    :BAL = :PART = :SER = 0 ;
    :LD = 0 ;
    :FF = '' ;
    SELECT STRCAT(SQL.TMPFILE, '.csv') INTO :FF
    FROM DUMMY ;
    /*SELECT * FROM SERIAL
    TABS UNICODE :FF ;
    EXECUTE SHELLEX :FF ;*/
    :SER = 0 ;
    SELECT SERIAL INTO :SER
    FROM SERIAL
    WHERE SERIAL 0 ;
    :PAR1 = 'KitItems1' ;
    SELECT LABELDEF INTO :LD
    FROM LABELSDEF
    WHERE LABELNAME = :PAR1 ;
    :KLINE = 0;
    DELETE FROM LABELS WHERE USER = SQL.USER;
    DECLARE SESE CURSOR FOR
    SELECT TRANS
    FROM TRANSORDER
    WHERE TRANS 0
    AND TYPE = 'K'
    AND DOC = :SER ;
    OPEN SESE;
    GOTO 1 WHERE :RETVAL <= 0;
    /*SELECT MAX(KLINE), MAX(SORT) INTO :KLINE, :SORT FROM LABELS
    WHERE USER = SQL.USER;*/
    LABEL 2;
    FETCH SESE INTO :TRANS;
    GOTO 3 WHERE :RETVAL <= 0;
    :KLINE = :KLINE + 1;
    INSERT INTO LABELS(USER, KLINE, PAR1, PAR2,PAR3, PAR4, PAR5,PAR6,
    PAR7,LABELDEF, LABELQUANT, SORT)
    SELECT SQL.USER, :KLINE,
    PART.PARTNAME, PART.PARTDES, ITOA(TRANSORDER.CQUANT / 1000),
    SERIAL.SERIALNAME, PART2.PARTNAME,LOCNAME,ACTNAME,
    :LD, 1,:KLINE
    FROM PART, TRANSORDER, SERIAL, PART PART2,WAREHOUSES W,ACT
    WHERE
    TRANSORDER.PART = PART.PART
    AND TRANSORDER.WARHS = W.WARHS
    AND TRANSORDER.FORACT = ACT.ACT
    AND TRANSORDER.FORSERIAL = SERIAL.SERIAL
    AND PART2.PART = SERIAL.PART
    AND SERIAL.SERIAL = :SER
    AND TRANSORDER.TRANS = :TRANS
    ORDER BY 7 , 6;
    LOOP 2;
    LABEL 3;
    CLOSE SESE;
    LABEL 1;
    /**/
    UNLINK SERIAL ;
    LABEL 999;

    בהצלחה,

    אורן

    גלעד
    משתתף
    זה לא עובד הוא מקפיץ הודעה בבדיקת סינטקס לשרה 49 של ORDER BY
    יש לך השערה למה הוא לא נותן לעשות את ה- ORDER BY ?
    אורן קפלן
    משתתף
    בוקר טוב גלעד,
    לא יודע, אני הייתי מנסה לראות סינטקס SQL באינטרנט, ואם זה לא עוזר סביר שהייתי מנסה לבנות טבלת עזר לתוך קובץ זמני, למיין אותה או ביצירה או אחרי זה, ואז להעביר את התוכן שלה כמו שהוא לטבלה בפריוריטי…

    אם אתה מצליח אשמח אם תעלה פתרון, זה נשמע כמו משהו שעוד מעט אני אתקל בו (מיון מדבקות…)

    בהצלחה,

    אורן

    אלמוני
    אורח
    שלום חברים
    סתם במקרה הסתכלתי
    ראשית, אתה לא יכול לשים ORDER בתוך לולאת FATCH, אתה צריך לשים את ה ORDER ב CURSOR.
    ושנית, למה CURSOR, אתה לא עושה כלום בלולאה, תכניס את ה WHERE ב CURSOR לתוך השאילתה.

    ביי

    גלעד
    משתתף
    תודה רבה

    תוכל בבקשה להגיד לי בין איזה שורות לשים את הביטוי ומה בדיוק הסינטקס ?

    אלמוני
    אורח
    שוב, תמחק את ה CURSOR את ה FATCH ואת ה LOOP ותשתמש רק בשאילתה

    תוסיף כמובן גם את הקישור לתעודה

    תוכל לראות דוגמה בהכנת מדבקות בת.קבלה בפרצדורה LABELS_PART2

    תוסיף את ה ORDER BY בסוף השאילתה

    אורן קפלן
    משתתף
    ובלי שום קשר – פתאום שמתי לב שזה שרשור שבכלל שייך לפורום פיתוח ולא שימוש – אז אם יש עוד שאלות להעביר לשם ולהבא שאלות פיתוח מראש לשאול שם – יותר סיכוי שמצא פתרון מהיר ונכון.
מוצגות 9 תגובות – 1 עד 9 (מתוך 9 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.