NoamN

Forum Replies Created

מוצגות 15 תגובות – 241 עד 255 (מתוך 442 סה״כ)
  • Replies
  • NoamN
    משתתף
    none
    לפני שאני מתחיל, יש סגר מיותר בסוף המשפט – יש שני סגרים שמאליים ושלושה ימניים

    הייתי מפשט קצת את הביטוי – לוגית זה יותר נכון וגם יותר קל להקליד!

    (DOCUMENTS.TOTPRICE * (DOCUMENTS.TYPE = 'N' ? -1.0 : 1.0

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

    אולי לא הבנתי את המצב שתיארת: אתה רוצה להדפיס ברקוד לאחר שקראת אותו?

    NoamN
    משתתף
    none
    פרק 5 ב-SDK מכיל את הקטע הבא שזה בדיוק מה שאתה רוצה

    Writing a New CHOOSE-FIELD or SEARCH-FIELD Trigger for a Procedure Parameter
    When a parameter is defined as an input column, if the column has a target form and that form has CHOOSE-FIELD or SEARCH-FIELD triggers, those triggers will be imported to the input screen.
    You can also write a specific CHOOSE-FIELD or SEARCH-FIELD for the procedure. Your trigger can contain references to any input value specified by the user within the same procedure step. For instance, if the procedure step contains an input parameter called CST, its value will be stored in the :PROGPAR.CST variable. This is useful, for example, if a given procedure step contains an input column for a Sales Rep and another input column for a Customer, and you want the Choose list for the latter column to display only those customers that are associated with the specified sales rep.

    זה אומר שב-CHOOSE-FIELD שלך, צריך לכתוב WHERE CUSTOMERS.CUST = :PROGPAR.CST

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

    הקוד הסטנדרטי נמצא בהפעלה CUSTOMERS/BUF10

    צריך ליצור הפעלה חדשה, נניח TEST_POST-UPDATE עם קוד כמו

    :EXEC = 0+ :CUSTEXEC;
    :SONEXEC = 0;
    :DETAILS = ";
    :CHARKEY1 = ITOA(:$.CUST);
    :CHARKEY2 = :CHARKEY3 = :CHARKEY4 = :CHARKEY5 = ";
    GOTO 1 WHERE :$1.MYFIELD = :$.MYFIELD;
    :OLDVALUE = :$1.MYFIELD;
    :NEWVALUE = :$.MYFIELD;
    :COLNAME = :$.MYFIELD.TITLE;
    #include func/UpdateChangesLog
    LABEL 1;

    NoamN
    משתתף
    none
    על איזו טבלה מבוססת המסך שלך? הייתי מבסס אותה על הטבלה החדשה שלך, לא על DOCUMENTS, כך יהיה עדכון אוטומטי של השדות בטבלה שלך.

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

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

    אני – ואחרים – משתמשים בסביבת טסט לבדוק כל מיני דברים חדשים. היא גם משמשת לצורך הדרכה.

    NoamN
    משתתף
    none
    מנהל המערכת > תחזוקת מערכת > טיפול בחברות > העתקת חברה

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

    החברה שממנה מעתיקים נשארת כמו שהיא ואינה "יודעת" שהועתקה.

    NoamN
    משתתף
    none
    איך אתה מגדיר "הזמנה אחרונה" אם לא לפי תאריך (פתיחה?)

    אפשר להגדיר קורסור שיחזיר את ההזמנות בסדר הפוך ORDER BY ORD DESC עם תנאי שמספיק את הקורסור לאחר 10 רשומות.

    NoamN
    משתתף
    none
    מה קורה אם אתה משנה את הממשק שלך להשתמש ב-DOCNO במקום DOC? כך תתגבר על בעיה כלשהי לגבי ה-ID שלהם.
    NoamN
    משתתף
    none
    יש ממשק סטנדרטי אשר מעדכן סטטוס פרויקט – STATUSMAILk. הנה כמה שורות מתכנית שלי שמעדכנת סטטוס בפרויקטים.

    SELECT ENTMESSAGE ('$', 'P', 10) INTO :CLEAN FROM DUMMY;
    INSERT INTO GENERALLOAD (LINE, RECORDTYPE, INT1, TEXT2)
    VALUES (:DOC, '1', :DOC, :CLEAN);
    EXECUTE INTERFACE 'STATUSMAILk', SQL.TMPFILE, '-L', :$.GEN;

    הבדל אחד משמעותי בין מה שכתבתי לבין הקוד שלך (מלבד הממשק עצמו): הסטטוס נקרא מהודעות הפרוצדורה לתוך משתנה והמשתנה נכנס ל-GENERALLOAD. אצלך יש מחרוזת עברית חשופה. תנסה להטעין את תאור הסטטוס לתוך משתנה ותראה מה קורה.

    NoamN
    משתתף
    none
    האם אתחלת את SUGPARM, ואם כן, איך?
    NoamN
    משתתף
    none
    ניתן לקבל רשימת דו"חות בהם טבלת DUMMY מופיעה באמצעות מנהל המערכת > מחוללים > דו"חות > דו"חות של דו"חות > הגדרה מלאה

    באופן כללי, הוא נדרש כאשר רוצים להגדיר תאני שלא ניתן להגדיר באופן רגיל. דוגמא בולטת – פריטי P שאין להם עץ מוצר. אפשר לכתוב פרוצדורה אבל אפשר לכתוב רק דו"ח אשר יעשה את העבודה. במקרה הזה, הביטוי יהיה
    <p style="text-align: right;">= 1 AND NOT EXISTS (SELECT 1 FROM PARTARC
    WHERE PARTARC.PART = PART.PART)</p>

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

    מגדירים במסך הפרמטרים פרמטר עם טיפוס NFILE, כאשר בפרוצדורה כותבים משהו כמו

    LINK PART TO :$.PRT;
    ERRMSG 1 WHERE :RETVAL <= 0;
    GOTO 1 FROM PART WHERE PART > 0;
    UNLINK PART;
    LABEL 1;

    אחד הלקוחות שלי עובד עם גרסה 19 ולא ראיתי בעיות עם השימוש ב-NFILE. אני משער שהפרוצדורה לא תתן נתונים אם לא בודקים קיום רשומות כאשר רושמים * או משאירים את הפרמטר ריק, כי הטבלה ה"מלונקקת" תהיה ריקה – או שיש שם רשומה 0 שכן יכולה לגרום לתוצאות לא רצויות. אבל את מתארת את ההיפך – לא נראה לי קשור.

    NoamN
    משתתף
    none
    תוכל לפרט איך הגדרת את O6?

    כמובן ביצעת "יצירת דף HTML לשלב" אחרי הוספת הפרמטר הזה

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

    בשדה הארוך, תיכנסי למסך הבן "עמודות הדו'ח – עיצוב HTML", ובלשונית "מיקום" תרשמי W בשדה "מיקום בתא". זה עובד בכל הדו"חות, לאו דווקא דו"חות שקשורים למסמך HTML.

מוצגות 15 תגובות – 241 עד 255 (מתוך 442 סה״כ)