04-01-2006, 00:16
|
|
|
חבר מתאריך: 20.12.01
הודעות: 20,962
|
|
וההסבר:
במקור:
קוד:
Response.write("<a href=nextpage.asp?MessageNum=rs('code')>Details")
קודם כל, הטקסט
rs('code')
לא אמור להיות חלק משאילתת ה-SQL. הערך של המשתנה הזה אמור להכנס לשם.
מכאן אנחנו מתקנים ל:
קוד:
Response.write("<a href=nextpage.asp?MessageNum=" & rs('code') & ">Details")
השגיאה השניה שלך היא שהשתמשת בגרשיים בודדים במקום במרכאות כפולות.
מדובר במפתח שהוא מחרוזת, ומחרוזת ב-VBS מוקפת במרכאות כפולות.
עכשיו אנחנו מתקנים ל:
קוד:
Response.write("<a href=nextpage.asp?MessageNum=" & rs("code") & >Details")
השגיאה השלישית, לא תמנע מהקוד לרוץ, אבל סתם עושה אותו מגעיל יותר, היא השימוש בחברי ברירת מחדל(default members). במקום
rs("key")
עדיף לכתוב:
rs.Fields.Item("key").Value
מה שקורה כשאתה כותב את ה"גרסה המקוצרת" זה שפונים לחבר ברירת המחדל של אובייקט ה-Recordset שהוא Fields. ממנו פונים אל חבר ברירת המחדל שלו שהוא Item ממחלקת Field, ומשם לחבר ברירת המחדל שלו שהוא Value(והוא Variant).
יש פה קצת הרבה ברירות מחדל...
אם אתה ממש רוצה לקצר, אבל לוותר על Item כך:
rs.Fields("key").Value
ואם אתה עוד יותר לחוץ באורך השורות מסיבה כלשהי, אפשר לוותר גם על Value כך:
rs.Fields("key")
אבל את Fields הייתי ממליץ להשאיר, פשוט כי זה עושה את הקוד לברור יותר, לדעתי.
אז בסוף השורה שלך אמורה להראות בערך כך:
קוד:
Response.write("<a href=nextpage.asp?MessageNum=" & rs.Fields("code") & ">Details")
בהצלחה.
|