טיפ בכתיבת הפעלות מסך

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

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

    GOTO 1 WHERE NOT EXISTS (SELECT 1 FROM ORDERS
    WHERE TEST_XX = :$.CC);
    WRNMSG 5001;
    GOTO 100;
    LABEL 1;
    ... כאן מופיע הקוד שאני רוצה שיתבצע ...
    LABEL 100;

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

    באופן מקרי גיליתי הבוקר פתרון הרבה יותר אלגנטי, אותו אני רוצה להציג בפניכם. הפתרון משתמש בשני משתנים שאינם מתועדים.

    SELECT 5001, 100 INTO :WRNMSG, :GOTO
    FROM ORDERS
    WHERE TEST_XX = :$.CC

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

מוצגות 3 תגובות – 1 עד 3 (מתוך 3 סה״כ)
  • Replies
    snoof123
    משתתף
    אהבתי, אבל מה קורה אם זה לא עומד בתנאי?
    אתה מאחסן ערכים אחרים במשתנים האלו ואז מקסימום הם נשארים כמו הקודם?
    ואח"כ אתה עושה:
    GOTO :GOTO
    WRNMSG :WRNMSG
    ?
    אלמוני
    אורח
    אני רוצה שהדיקה תיכשל, שלא תהיה רשומה מתאימה. במקרה הזה, המשתנים לא יקבלו שום ערך.
    snoof123
    משתתף
    אשריך נעם 🙂
מוצגות 3 תגובות – 1 עד 3 (מתוך 3 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.