שלח תשובה

זירת השאלות

602
צפיות
42
תשובות

בעיה מוזרה ב: not IsNumeric

,‏ 30 ביוני, 2004

אני רושם בדף see.asp את זה.


Dim Num
Num=Request.QueryString("Num")
if (Num="") OR (not IsNumeric(Num)) OR ( Num>10 AND Num<1 ) then
  Response.Redirect("ListTmunot.asp")
end if


עכשיו כשאני שולח דרך לינק לקובץ see.asp את Num מספרי זה עובד כמו שצריך
אבל כאשר אני שולח ערך שלא מתאים כמו מעל 10 או מתחת ל-1 או משהו טקסטואלי זה לא עובד.

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

תגיות:

42 תשובות

  1. mrmistory הגיב:

    ועוד משהו, זאת השגיאה……..
    כאשר אני שולח ערך "" כאילו כלום זה מראה לי שגיאה הזאת


    Error Type:
    Microsoft VBScript runtime (0x800A000D)
    Type mismatch: '[string: ""]'
    /MusicWords_BySQL/WordMusic/SITE/Tmunot/see.asp, line 18

    למרות שיש לי תנאי במקרה שערך שווה לריק שיעשה REDIRECT

    שורה 18


    if (Num="") OR (not IsNumeric(Num)) OR ( Num>10 AND Num<1 ) then

  2. BuildHome הגיב:

    נסה אולי את המשפט הזה

    if (Len(Num) = 0) OR (IsNumeric(Num) = False) OR ( Num>10 AND Num<1) then

  3. mrmistory הגיב:

    עדיין עושה בעיות….
    כשאני שולח לדף ההוא ככה Num= בלי כלום זה מראה לי שגיאה לאותה שורה 18 עדיין.
    אני לא מבין מה קורה פה , אותו קוד עובד על פרמטרים אחרים ללא בעיה.

  4. BuildHome הגיב:

    אממ אז אולי ככה

    if Len(Num) = 0 OR IsNumeric(Num) = False OR (Num>10 AND Num<1) then

    נסה להפריד את המשפט התנאי לשלושה חלקים ותראה איזה חלק גורם לשגיאה להתרחש.

  5. mrmistory הגיב:

    פרקתי כמו שאמרת, יש בעיה…
    לאחר הפירוק זה נראה ככה.


    if (Num="") then
                'Response.Redirect("ListTmunot.asp")
                Response.Write "שווה לריק"
            end if
            
            if (NOT IsNumeric(Num)) then
                'Response.Redirect("ListTmunot.asp")
                Response.Write "לא מספר"
            end if

    הבעיה היא כאשר פה


    if (Num="") then
    כאשר נשלח ערך ריק

    if (NOT IsNumeric(Num)) then
    כאשר נשלח ערך לא מספרי או מעורב

    מוזר ביותר.

  6. ניר טייב הגיב:

    נסה כך:
    במקום להשוות למחרוזת ריקה לבדוק עם ה-LENGTH שווה לאפס (לרוב זה עובד)

    IF Len(Num)=0 THEN

  7. mrmistory הגיב:

    ניר,BuildHome רשם את זה כבר….
    וזה לא עוזר, נראה לי שיש פאק אולי וגם לא בטוח כי רק היום עשיתי פירמוט נוסף.

  8. אוריקס הגיב:

    סתם שאלה:
    יש לך תנאי כזה:


    Num>10 AND Num<1

    איך הוא בדיוק יתקיים…?

  9. אוריקס הגיב:

    ובקשר לשאלתך
    נסה להוסיף

    Response.buffer = true

    בראש הדף.

  10. mrmistory הגיב:

    רשמתי את זה פה בטעות יש שם OR ו….
    Response.buffer = true
    קיים בדף.

  11. RiU הגיב:

    אני חושב שהבעיה שאתה בודק
    סטרינג מול מספר.. ב num>10 ו num<1.. נסה אולי לבדוק אם num מספר לפני ואם כן להחזיר אותו כ cint(num(.. אולי..

  12. mrmistory הגיב:

    בעיה נוספת: איך ב-IIS אפשר לעשות…
    PLAY כמו ב-PWS כדי להפעיל שרת ביתי ?
    יש לי שגיאה שצצה כמו בתמונה ולפי מה שזכור לי כשהיה לי PWS ב windows 98 שזה בגלל ששרת לא פעיל.

    איפה אני יכול להפעיל שרת כמו ב-98 PLAY ?
    תודה מראש, מצורפת תמונה של השגיאה.

  13. mrmistory הגיב:

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

  14. sirob הגיב:

    כמה דברים:

    if (Num="") OR (not IsNumeric(Num)) OR ( Num>10 AND Num<1 ) then

    זו שורה עם כמה תנאים שמתבססים אחד על השני. מומלץ מאוד מאוד מאוד להפריד אותם:

    if (Num="") then
    ' redirect
    else if (not IsNumeric(Num)) OR ( (Num>10) AND (Num<1) ) then
    ' redirect
    end if

    כמו כן, מומלץ להמיר את Num לinteger לפני שמתחילים לבדוק את הערך שלו.
    אני תמיד עושה את זה ככה:

    if (IsNumeric(Num)) then
      Num = Num * 1
      if (Num > 10) OR (num < 1) then redirect

    דבר אחרון, AND ו-OR מופעלים לפני =, < או >. לכן, כדי לוודא שזה יפעל, חשוב לא לכתוב:

    ( Num>10 AND Num<1 )

    שיבדוק אם 10 וגם Num
    אלא:

    ( (Num>10) AND (Num<1) )

    מקווה שזה עוזר.

  15. ניר טייב הגיב:

    למה להפריד?
    הוא רוצה שרק אם אחד מהתנאים מתקיים אז יקרה משהו ולא אם כולם התמלאו זה מהות השמוש ב-OR

  16. sirob הגיב:

    כן,
    אבל כשהוא מריץ את IsNumeric על משתנה ריק הוא מקבל שגיאה.

  17. ניר טייב הגיב:

    כך:


    administrator tool –> internet information service(s)

    שם יש לך TOOL BAR שעליו יש לחצן PLAY ולחצן PAUSE

  18. mrmistory הגיב:

    אז זהו………
    שם הוא היה בצבע כזה של "לא ניתן ללחוץ" לא PLAY ולא STOP.

    אחרי RESTART הכל חזר לקדמותו.
    מייקרוקקא.

  19. mrmistory הגיב:

    לא נכון.
    אין שגיאה, זאת פעם ראשונה.

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

    תודה בכל זאת.

  20. RiU הגיב:

    ובמקום לעשות
    num = num * 1
    אתה יכול פשוט לעשות

    num = cint(num)

  21. mrmistory הגיב:

    מבקש מפרט של תוים לא חוקים כדי ש…
    מבקש מפרט של תוים לא חוקים כדי שהשאילתא לא תקרוס לי.
    תודה.

  22. Deviation הגיב:

    הנה
    לינק – כדאי לקרוא:

    תו שקוף
    תו הופך'
    "
    <
    >
    &

    את כל אלא מומלץ לסנן בתוכנית שלך בכל שלב.

  23. mrmistory הגיב:

    עוד…………
    תו שקוף זה רווח נכון ?
    תו הופך, מה זה ?
    & או < או > איך כדי לטפל בהם ?

  24. Deviation הגיב:

    לא, תו שקוף זה לא רווח!
    להחליף למקביל שלהם בטבלאת ה ASCII.

  25. mrmistory הגיב:

    יש לך לינק לטבלאת ASCII באינטרנט ?

  26. mrmistory הגיב:

    שאלה: ימים בתאריכים…..
    אני רוצה להוצאי מהמסד את כל הרשומות שהם לא חשוב מאיזה צאריך אבל הימים שלהם הם היו ימי "חמישי".
    כמו כן אני שולח מספר, לדוגמא "5" שזה אומר יום "חמישי".
    איך ניתן לעשות זאת?

    פרטים על המסד:
    מסד SQL SERVER.
    שדה שמוגדר כתאריך.
    את התאריך אני מכניס ידנית ככה 01/01/2004 או ככה 01.01.2004

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

  27. mrmistory הגיב:

    יש פה בעיה נראה לי…….
    לדוגמא אני הנה תו בעיה & כמו שרשמת.
    אני מחליף אותו ל


    &

    ושוב יש לי תוי בעיתי שם & ואפילו עוד אחד ;

    יכול להיות שלא הבנתי כל כך, אתה יכול לתת דוגמא איך אני משנה ולמה , תודה.

  28. sirob הגיב:

    אין לי מושג ב-SQL אבל
    ב-VBScript יש את הפונקציה weekday שמחזריה את היום בשבוע על אובייקט תאריך שמתקבל:

    weekday (thedate: string)

  29. Deviation הגיב:

    לא הבנתי מה אתה מנסה לעשות
    את ה ; אתה מחליף בסוף, אחרי שהחלפת & < > וכל השאר

  30. mrmistory הגיב:

    יש פה בפורום בעיה…….
    רשמתי כקוד 4 תוים וזה הראה רק תו 1 שהוא &.
    טוב, לא חשוב, תודה בכל זאת.

  31. mrmistory הגיב:

    תוכל לרשום דוגמא איך להשתמש בא ?

  32. זה לא בעיה בפורום
    אם רשמת קוד ASCII אז הוא תורגם לתו שלו.

  33. mrmistory הגיב:

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

    השאלה היא, האם תאריך חיים להיות ככה 01.01.2004 או ככה 01/01/2004 ?

  34. ניר טייב הגיב:

    נראה לי שאפשר ככה
    01/01/2004

    איזה מוזר זה לכתוב דרך מוזילה

  35. ככה אפשר בטוח
    אבל אני לא יודע אם אפשר ככה 01.01.2004
    אבל אפשר לבדוק

  36. ניר טייב הגיב:

    התכוונתי למשהו אחר
    ובטעות יצא לי ככה להחליף את ה/ ב- "-"

    01-01-2004

שלח תשובה