Forum Replies Created
- Replies
-
- נובמבר 21, 2021 בשעה 4:27 pm
- in reply to: מיקום נוסחא בדו"ח במסך הבן
נכנסתי לדו"ח BONDEDORD1. על פניו אני לא רואה סיבה להתחכמות הזו, מה גם לשני השדות כותרת חדשה (ז"א, ההשערה של יצחק שרוצים שלשדות לא תהיה כותרת אינה תקפה). אולי זה על מנת למנוע לחיצה על שם המחסן על מנת לפתוח את המחסן.אני לא מכיר את הדו"ח לכן אין לי מושג למה הוא כתוב כך.
- נובמבר 18, 2021 בשעה 7:53 am
- in reply to: כמה מסכי יעד לשדה אחד
This reply has been reported for inappropriate content.מה הביטוי בשדה DOCNAME (או במילים אחרות, איך השדה "יודע" שמדובר בהזמנה ולא תעודה)?מה הביטוי בשדה ZOOM1?
סוף סוף הצלחתי! פתאום הבנתי מה המשמעות של הודעת השגיאה – מתברר ש-WINACTIV מופעל במחשב שלי, לא בשרת (ראיתי ב-TASK MANAGER במחשב המקומי), ולא נתתי נתיב אל התכנית הזו. הפקודה המוצלחת היתהX:\BIN.95\WINRUN "" tabula 123456 x:\system\prep demo X:\BIN.95\WINACTIV.EXE -P TEST_UPDCONST
השלב הבא: ללמוד איך ניתן להעביר פרמטר עם הפקודה.
תודה לכל מי שעזר.
ניסיתי עם ובלי EXE – קיבלתי את אותה הודעת שגיאה (עם או בלי EXE בהתאם).הגדרת TABULAINI כ-ENVIRONMENTAL VARIABLE בהחלט עזרה… אבל עכשיו אני מקבל הודעת שגיאה חדשה
<p style="text-align: right;">Error occurred when executing program</p>
cmd: D:\PR_SQL\BIN.95\WINACTIVThe system cannot find the file specified
הנתיב הזה (D:\PR_SQL\BIN.95) נכון וכמובן יש שם קובץ WINACTIV.EXE. לא מוצא חן בעיני ה"cmd:" בהתחלה.
האין למישהו דוגמא עובדת?
כעת הפקודה נראית כך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 באמצע הפקודה? אם או בלי, זה לא עזר.
- נובמבר 10, 2021 בשעה 3:23 pm
- in reply to: שמירת קוד משותף לכמה פרוצדורות
דרך אגב, $ פירושו "שם התכנית הנוכחית". לפעמים אפשר לנצל את העובדה הזו ולפעמים זה יוצר בעיות. פעם נדרשתי להכין ברקוד שהכיל את כתובת החברה, אבל אין בגופן הברקוד אפשרות להדפיס את @, לכן זה הוחלף ב-$. בהתחלה כמובן תוכן הברקוד הכיל את שם התכנית באמצע הכתובת.לקח לי קצת זמן למצוא שיטה להתגבר על זה – בסוף הגדרתי הודעה לפרוצדורה שהמלל שלו $ והטענתי אותו באמצעות SELECT ENTMESSAGE שבעצמו משתמש ב-$.
- נובמבר 10, 2021 בשעה 1:51 pm
- in reply to: שמירת קוד משותף לכמה פרוצדורות
היה עוזר לו היינו רואים את הקוד כי אחרת אנחנו מגששים באפלה. אתה כותב שיש לינק לטבלת SUPPLIERS. אפשר לכתוב משהו שנראה מוזר אבל יכול לעבוד – במקום לכתובLINK SUPPLIERS TO :$.SUP
תכתוב :MYSUP = :$.SUP בפרוצדורה שלך, ובקוד המשותף תכתוב LINK SUPPLIERS TO :MYSUP
הרי בפנים :$.SUP מכיל שם של קובץ במערכת הקבצים וניתן להעתיק אותו.
כמה נתונים נוספים: אנחנו עובדים עם הממשק הקלאסי, עם טרמינל סרברים. פקודת ה-WINRUN עובדת נכון כאשר אני מריץ אותה מהטרמינל.בניתי את המחרוזת הנדרשת ל-WINRUN, כולל שם משתמש tabula וסיסמא. אני מריץ את הפקודה ומקבל את תיבת השיחה LOG ON TO PRIORITY עם שדות לשם משתמש וסיסמא. זאת אומרת, אפילו שאני רושם את הנתונים האלה כפרמטרים, יש התעלמות. הפקודה נראית משהו כזהx:\bin.95\winrun "" tabula 123456 x:\system\prep WINACTIV -P TEST_PROCEDURE
(הסיסמא של טבולה לא באמת 123456!). אולי צריך להגדיר tabula.ini? ואם כן, של מי? הפקודה מופעלת מתחנה שמחוברת לרשת אבל אינה מפעילה את פריוריטי (כל הרעיון של התכנית הינו לא להפעיל את הממשק של פריוריטי).
זה בדיוק מה שאני מחפש (WINRUN). לא הכרתי את הקטע הזה ב-SDK.- נובמבר 9, 2021 בשעה 1:58 pm
- in reply to: שמירת קוד משותף לכמה פרוצדורות
אני לא מסכים אתך: יש קוד מסוים ששמרתי כהפעלה מתוך מסך 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;אחרי ששאלתי את השאלה (בפעם השניה – הפעם הראשונה לא נקלטה), הבנתי שמדובר בהפעלת התכנית "בסביבת" פריוריטי, כאשר מפעיל התכנית כבר מחובר (לכן אין צורך בשם משתמש או סיסמא). זה לא עוזר לי בכלום.בסופו של דבר, התפשרתי על המצב בו תכנית חיצונית שומרת קובץ בתיקיה ידועה כאשר פרוצדורה בתוך פריוריטי סורקת את אותה התיקיה בתדירות הדומה לתדירות הפקת הקובץ. אבל זה לא מה שרציתי. המצב האידיאלי היה שהתכנית החיצונית יוצרת את הקובץ ומפעילה בעצמה את התכנית לקליטה בפריוריטי. יש לכך השלכות לגבי הנתונים הכלולים בתוך הקובץ.
לעומת זאת, אני יודע שהפעלה מרחוק אפשרית מפני שאנחנו מפעילים את מערכת סמדר, אשר סורקת מסמכים ובאמצעות הברקוד יודעת לשייך את הסריקה לנספחים של התעודה עצמה (המסמך בדרך תעודת משלוח חתומה ע"י הלקוח וכך התעודה החתומה נשמרת בנספחים של התעודה). אני זוכר שהגדרתי שם את הסיסמא של טבולה.
- נובמבר 7, 2021 בשעה 5:47 pm
- in reply to: דוח מלאי מצטבר והזמנות לקוח פתוחות לפריטים
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 ? כדי שיהיו כל הפריטים שיש להם מלאי אפילו אם אין להם הזמנות פתוחות.
אולי יותר מהר בביצוע אבל פחות ברור לתכנות וגם קצת "שביר". ומה קורה כאשר רוצים להציג נתן נוסף כמו שימוש ממוצע (גריעות במלאי) על פני תקופה נוספת? במקרים כאלה, הפתרון הראשון שלי עדיף כי בגוף הקורסור ניתן לאסוף כל מיני נתונים שאינם קשורים אחד לשני, מלבד הפריט.
- נובמבר 7, 2021 בשעה 2:02 pm
- in reply to: דוח מלאי מצטבר והזמנות לקוח פתוחות לפריטים
למדתי מאד מוקדם בקרירה שאין לכתוב דו"ח שמסוכם שני דברים לא קשורים אלא צריך לכתוב פרוצדורה שתעשה זאת. נניח שיש קורסור שעובר על פריטים: בתוך הלולאה אתה סוכם את המלאי בשאילתא אחת, סוכם את ההזמנות בשאילתא ואז כותב את הנתונים לבטלת מעבר. אפשר להקל קצת אם אתה רוצה רק פריטים שנמצאים במלאי כלהלן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.
סרגל נגישות
visibility_offהשבת את ההבזקים
titleסמן כותרות
settingsצבע רקע
zoom_outזום (הקטנה)
zoom_inזום (הגדלה)
remove_circle_outlineהקטנת גופן
add_circle_outlineהגדלת גופן
spellcheckגופן קריא
brightness_highניגודיות בהירה
brightness_lowניגודיות כהה
format_underlinedהוסף קו תחתון לקישורים
font_downloadסמן קישורים