הגבלת אורך תווים בהקמת מק"ט חדש

פורומים שימוש במערכת הגבלת אורך תווים בהקמת מק"ט חדש

  • Post
    levi
    משתתף
    שלום,

    אני רוצה להגדיר חוק עסקי במסך כרטיס פריט: "אורך מק"ט לא יכול לעלות על 16 תווים".

    כיצד אוכל לבצע זאת?

    תודה מראש.

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

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

    yitzchok
    משתתף
    IL
    הנה אני אלמד לכם טריק

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

    בתנאי יש לעשות
    שדה מק"ט
    שווה
    *ביטוי*
    שהוא כך, משמאל לימין, אני חושש שעיצוב כאן ישבש
    STRCAT)
    <>
    ,
    )
    STRLEN
    )
    <>
    (
    >= (קטן שווה)
    16
    ?
    " (אולי צריך להיות 0\ בפנים, נראה לי שלא)
    :
    'X'
    (
    (

    מה זה עושה?
    משווה מק"ט לעצמו – אם האורך עד 16 – ויעבור. אם יותר, אז משווה למק"ט פלוס X – שלעולם לא יהיה, ויכשל.

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

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    levi
    משתתף
    מגניב, אני אבדוק את זה, תודה.
    yitzchok
    משתתף
    IL
    מיותר לציין אך אציין בכל זאת שלא משנה איזה שדה משווים כי משווים מול אותו הדבר או לא.
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    אלמוני
    אורח
    לא ידעתי שניתן לשלב תנאים בחוקים עסקיים (לומדים משהו חדש כל יום) אבל לא הבנתי מה התנאי. אם תבחר באתר הזה "השב", אתה כותב את התשובה באמצעות עורך HTML ואפשר להשתמש בתגים ו- כדי לפרמט את הקוד בצורה נכונה.
    yitzchok
    משתתף
    IL
    אוקיי אולי אעשה זאת בהמשך לאחר בדיקת הסינטקס גם
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    yitzchok
    משתתף
    IL
    אוקיי, הנה תשובה לאחר בדיקה.

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

    הביטוי הנדרש, כפי שהגדרתי אותו שלשום, הוא:

    STRCAT(<>,(STRLEN(<>)<=16?'':'X'))

    וכאן שמתי עם שם שדה באנגלית כדי לא להסתבך כאן התצוגה.

    אבל

    בעצם זה מיותר. אפשר לעשות בדיקה פשוטה יותר:

    כאשר מק"ט לא שווה ל- (שונה מ-)

    STRIND(<>,1,16)

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

    הערה:

    הגישה הנ"ל יכול לשמש עדיין פתרון למצבים כמו זה שמוזכר בשאלה אחרת בהם רוצים ליישם יותר תנאים ממה שהמערכת נותנת.

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

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    levi
    משתתף
    המון תודה!
מוצגות 8 תגובות – 1 עד 8 (מתוך 8 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.