NoamN

Forum Replies Created

מוצגות 15 תגובות – 91 עד 105 (מתוך 447 סה״כ)
  • Replies
  • NoamN
    משתתף
    none
    נכנסתי לדו"ח BONDEDORD1. על פניו אני לא רואה סיבה להתחכמות הזו, מה גם לשני השדות כותרת חדשה (ז"א, ההשערה של יצחק שרוצים שלשדות לא תהיה כותרת אינה תקפה). אולי זה על מנת למנוע לחיצה על שם המחסן על מנת לפתוח את המחסן.

    אני לא מכיר את הדו"ח לכן אין לי מושג למה הוא כתוב כך.

    NoamN
    משתתף
    none
    This reply has been reported for inappropriate content.

    מה הביטוי בשדה DOCNAME (או במילים אחרות, איך השדה "יודע" שמדובר בהזמנה ולא תעודה)?

    מה הביטוי בשדה ZOOM1?

    • in reply to: PRIFORM
    NoamN
    משתתף
    none
    סוף סוף הצלחתי! פתאום הבנתי מה המשמעות של הודעת השגיאה – מתברר ש-WINACTIV מופעל במחשב שלי, לא בשרת (ראיתי ב-TASK MANAGER במחשב המקומי), ולא נתתי נתיב אל התכנית הזו. הפקודה המוצלחת היתה

    X:\BIN.95\WINRUN "" tabula 123456 x:\system\prep demo X:\BIN.95\WINACTIV.EXE -P TEST_UPDCONST

    השלב הבא: ללמוד איך ניתן להעביר פרמטר עם הפקודה.

    תודה לכל מי שעזר.

    • in reply to: PRIFORM
    NoamN
    משתתף
    none
    ניסיתי עם ובלי EXE – קיבלתי את אותה הודעת שגיאה (עם או בלי EXE בהתאם).
    • in reply to: PRIFORM
    NoamN
    משתתף
    none
    הגדרת TABULAINI כ-ENVIRONMENTAL VARIABLE בהחלט עזרה… אבל עכשיו אני מקבל הודעת שגיאה חדשה
    <p style="text-align: right;">Error occurred when executing program</p>
    cmd: D:\PR_SQL\BIN.95\WINACTIV

    The system cannot find the file specified

    הנתיב הזה (D:\PR_SQL\BIN.95) נכון וכמובן יש שם קובץ WINACTIV.EXE. לא מוצא חן בעיני ה"cmd:" בהתחלה.

    האין למישהו דוגמא עובדת?

    • in reply to: PRIFORM
    NoamN
    משתתף
    none
    כעת הפקודה נראית כך

    X:\BIN.95\WINRUN "" tabula 123456 x:\system\prep demo WINACTIV -P TEST_UPDCONST set TABULAINI=x:\1\tabula.ini set tabulainiorig=x:\1\tabula.ini

    כאשר לקחתי את tabula.ini מהשרת עצמו, כך שם המשתמש בפנים tabula. זה לא עזר.

    האם צריך להיות SET באמצע הפקודה? אם או בלי, זה לא עזר.

    NoamN
    משתתף
    none
    דרך אגב, $ פירושו "שם התכנית הנוכחית". לפעמים אפשר לנצל את העובדה הזו ולפעמים זה יוצר בעיות. פעם נדרשתי להכין ברקוד שהכיל את כתובת החברה, אבל אין בגופן הברקוד אפשרות להדפיס את @, לכן זה הוחלף ב-$. בהתחלה כמובן תוכן הברקוד הכיל את שם התכנית באמצע הכתובת.

    לקח לי קצת זמן למצוא שיטה להתגבר על זה – בסוף הגדרתי הודעה לפרוצדורה שהמלל שלו $ והטענתי אותו באמצעות SELECT ENTMESSAGE שבעצמו משתמש ב-$.

    NoamN
    משתתף
    none
    היה עוזר לו היינו רואים את הקוד כי אחרת אנחנו מגששים באפלה. אתה כותב שיש לינק לטבלת SUPPLIERS. אפשר לכתוב משהו שנראה מוזר אבל יכול לעבוד – במקום לכתוב

    LINK SUPPLIERS TO :$.SUP

    תכתוב :MYSUP = :$.SUP בפרוצדורה שלך, ובקוד המשותף תכתוב LINK SUPPLIERS TO :MYSUP

    הרי בפנים :$.SUP מכיל שם של קובץ במערכת הקבצים וניתן להעתיק אותו.

    • in reply to: PRIFORM
    NoamN
    משתתף
    none
    כמה נתונים נוספים: אנחנו עובדים עם הממשק הקלאסי, עם טרמינל סרברים. פקודת ה-WINRUN עובדת נכון כאשר אני מריץ אותה מהטרמינל.
    • in reply to: PRIFORM
    NoamN
    משתתף
    none
    בניתי את המחרוזת הנדרשת ל-WINRUN, כולל שם משתמש tabula וסיסמא. אני מריץ את הפקודה ומקבל את תיבת השיחה LOG ON TO PRIORITY עם שדות לשם משתמש וסיסמא. זאת אומרת, אפילו שאני רושם את הנתונים האלה כפרמטרים, יש התעלמות. הפקודה נראית משהו כזה

    x:\bin.95\winrun "" tabula 123456 x:\system\prep WINACTIV -P TEST_PROCEDURE

    (הסיסמא של טבולה לא באמת 123456!). אולי צריך להגדיר tabula.ini? ואם כן, של מי? הפקודה מופעלת מתחנה שמחוברת לרשת אבל אינה מפעילה את פריוריטי (כל הרעיון של התכנית הינו לא להפעיל את הממשק של פריוריטי).

    • in reply to: PRIFORM
    NoamN
    משתתף
    none
    זה בדיוק מה שאני מחפש (WINRUN). לא הכרתי את הקטע הזה ב-SDK.
    NoamN
    משתתף
    none
    אני לא מסכים אתך: יש קוד מסוים ששמרתי כהפעלה מתוך מסך func אשר משתמש בקורסור עם הפקודה DECLARE @NCRC1 CURSOR  ואין בעיה בפרוצדורה שקוראת להפעלה הזו באמצעות #INCLUDE func/TEST_NEWCALCRELCOST.

    אני לא כל כך אוהב את הטכניקה הזו מפני שהקוד נמצא במסך: לאחר עריכה, עלי להריץ בניית מסכים מחדש, וזה גורם להודעה מסוימת אצל המשתמשים (לכן אני מוסיף/מתקן/משפר מסכים רק בערב או בסוף השבוע). לעומת זאת, פיתחתי טכניקה של קריאת פרוצדורה נוספת לבצע עבודה משותפת. לדוגמא, אפשר לכתוב קוד כמו

    LINK ORDERS TO :$.ORD;
    ERRMSG 1 WHERE :RETVAL <= 0;
    INSERT INTO ORDERS (ORD, ORDNAME)
    SELECT ORIG.ORD, ORIG.ORDNAME
    FROM ORDERS ORIG, STACK
    WHERE ORIG.ORD = STACK.ELEMENT
    AND ORIG.ORD > 0;
    EXECUTE WINACTIV '-P', 'TEST_MUTUALCODE', 'ORDERS',
    :$.ORD;
    UNLINK ORDERS;

    • in reply to: PRIFORM
    NoamN
    משתתף
    none
    אחרי ששאלתי את השאלה (בפעם השניה – הפעם הראשונה לא נקלטה), הבנתי שמדובר בהפעלת התכנית "בסביבת" פריוריטי, כאשר מפעיל התכנית כבר מחובר (לכן אין צורך בשם משתמש או סיסמא). זה לא עוזר לי בכלום.

    בסופו של דבר, התפשרתי על המצב בו תכנית חיצונית שומרת קובץ בתיקיה ידועה כאשר פרוצדורה בתוך פריוריטי סורקת את אותה התיקיה בתדירות הדומה לתדירות הפקת הקובץ. אבל זה לא מה שרציתי. המצב האידיאלי היה שהתכנית החיצונית יוצרת את הקובץ ומפעילה בעצמה את התכנית לקליטה בפריוריטי. יש לכך השלכות לגבי הנתונים הכלולים בתוך הקובץ.

    לעומת זאת, אני יודע שהפעלה מרחוק אפשרית מפני שאנחנו מפעילים את מערכת סמדר, אשר סורקת מסמכים ובאמצעות הברקוד יודעת לשייך את הסריקה לנספחים של התעודה עצמה (המסמך בדרך תעודת משלוח חתומה ע"י הלקוח וכך התעודה החתומה נשמרת בנספחים של התעודה). אני זוכר שהגדרתי שם את הסיסמא של טבולה.

    NoamN
    משתתף
    none
    INSERT INTO STACK4 (KEY, REALDATA)
    SELECT WARHSBAL.PART, REALQUANT (SUM (WARHSBAL.BALANCE))
    FROM WARHSBAL, WAREHOUSES
    WHERE WARHSBAL.WARHS = WAREHOUSES.WARHS
    AND WAREHOUSES.WARHSNAME IN (‘Main’, ‘WHS2’, ‘WH3’)
    AND WARHSBAL.BALANCE > 0
    AND WARHSBAL.CUST = -1 /* Goods */
    GROUP BY 1;
    INSERT INTO STACK2 (ELEMENT, TYPE)
    SELECT PART, SUM (REALQUANT (TBALANCE))
    FROM ORDERITEMS
    AND TBALANCE > 0
    AND CLOSED <> ‘C’
    GROUP BY 1;

    נניח שביצענו את ה-LINKS הנדרשים בהתחלה. בדו"ח צריך להשתמש בחיתוך מותנה – STACK4.KEY = STACK2.ELEMENT ? כדי שיהיו כל הפריטים שיש להם מלאי אפילו אם אין להם הזמנות פתוחות.

    אולי יותר מהר בביצוע אבל פחות ברור לתכנות וגם קצת "שביר". ומה קורה כאשר רוצים להציג נתן נוסף כמו שימוש ממוצע (גריעות במלאי) על פני תקופה נוספת? במקרים כאלה, הפתרון הראשון שלי עדיף כי בגוף הקורסור ניתן לאסוף כל מיני נתונים שאינם קשורים אחד לשני, מלבד הפריט.

    NoamN
    משתתף
    none
    למדתי מאד מוקדם בקרירה שאין לכתוב דו"ח שמסוכם שני דברים לא קשורים אלא צריך לכתוב פרוצדורה שתעשה זאת. נניח שיש קורסור שעובר על פריטים: בתוך הלולאה אתה סוכם את המלאי בשאילתא אחת, סוכם את ההזמנות בשאילתא ואז כותב את הנתונים לבטלת מעבר. אפשר להקל קצת אם אתה רוצה רק פריטים שנמצאים במלאי כלהלן

    DECLARE CUR CURSOR FOR
    SELECT WARHSBAL.PART, REALQUANT (SUM (WARHSBAL.BALANCE))
    FROM WARHSBAL, WAREHOUSES
    WHERE WARHSBAL.WARHS = WAREHOUSES.WARHS
    AND WAREHOUSES.WARHSNAME IN ('Main', 'WHS2', 'WH3')
    AND WARHSBAL.BALANCE > 0
    AND WARHSBAL.CUST = -1 /* Goods */
    GROUP BY 1;
    OPEN CUR;
    GOTO 300 WHERE :RETVAL <= 0;
    LABEL 100;
    FETCH CUR INTO :PART, :STOCK;
    GOTO 200 WHERE :RETVAL <= 0;
    :ORD = 0.0;
    SELECT SUM (REALQUANT (TBALANCE)) INTO :ORD
    FROM ORDERITEMS
    WHERE PART = :PART
    AND TBALANCE > 0
    AND CLOSED <> 'C';
    INSERT INTO STACK4 (KEY, REALDATA, REALDATA2)
    VALUES (:PART, :STOCK, :ORD);
    LOOP 100;
    LABEL 200;
    CLOSE CUR;
    LABEL 300;

    בקורסור אתה סוכם את הכמות במלאי. אחר כך אתה סוכם את הכמות בהזמנות ושומר אותה במשתנה שאופס בכל סיבוב בלולאה, כך לפריט שאין הזמנות פתוחות תהיה כמות 0.

מוצגות 15 תגובות – 91 עד 105 (מתוך 447 סה״כ)