שלח תשובה

זירת השאלות

659
צפיות
104
תשובות

קובץ "פרטים נוספים".

,‏ 22 ביוני, 2004

בעת לחיצה על הקישור שמוביל לקובץ "פרטים נוספים"
אני מקבל הודעת שגיאה:

Microsoft VBScript compilation (0x800A0409)
Unterminated string constant
/phonebook1/more_details.asp, line 6, column 39
response.Write "<h1>ID: " & ID & "</h1>

שורת הקישור היא:


Do While Not RS.EOF AND i < RS.pagesize
    ' Data manipulation.
    response.Write("<tr><td>" & RS("first_name") & "</td>")
    response.Write("<td>" & RS("last_name") & "</td>")
    response.Write("<td>")
    response.write("<a href =" & "more_details.asp?ID =" & RS("ID") & ">")    response.write("More Details" & "</a></td>")
    response.write("</tr>")
    i=i+1
    RS.MoveNext
Loop


הקוד של קובץ "פרטים נוספים":



<%
Dim ID
ID=Request.QueryString("ID")

response.Write "<h1>ID: " & ID & "</h1>
%>




תגיות:

104 תשובות

  1. BuildHome הגיב:

    נסה את הקוד הזה במקום השורה שלך

    response.write "<a href =""" & "more_details.asp?ID =" & RS("ID") & """>More Details</a></td>"

  2. Shreky הגיב:

    בנוסף, השגיאה היא על השורה:

    response.Write "<h1>ID: " & ID & "</h1>

    שים לב ששכחת לסיים את הסטרינג.

    הנה השורה התקנית:

    response.Write "<h1>ID: " & ID & "</h1>"

  3. Marvel הגיב:

    תירגום השגיאה!
    לא פעם אני נתקל במתכנתים שלא טורחים לקרוא את השגיאה וישר רצים לבקש עזרה…

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

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

    בפעם הבאה נסה לעבור על פרטי השגיאה ואני בטוח שהבעיה תיפתר ללא כל תלות בפורמים המעולים של וובמאסטר 🙂

  4. hedish הגיב:

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

  5. hedish הגיב:

    תודה חברים! רק מה…אני לא מקבל ערך
    של ID.
    אני מקבל כותרת : ID.
    ללא הערך שלו….?

    משהו לא בסדר בקודד הזה?


    Dim ID
    ID=Request.QueryString("ID")

    response.Write "<h1>ID: " & ID & "</h1>"

    כי לי זה נראה בסדר.

    גם השורה מהדף שקורא לו:


    response.write("<a href =" & "more_details.asp?ID =" & RS("ID") & ">")

  6. Marvel הגיב:

    חחחח
    חחח אני יכול לבהות כל היום ולא להבין מה הבעיה כשאני לא מרוכז…
    והדבר שאני הכי שונא זה להתחיל לעבוד על קוד, להפסיק ולהמשיך למחרת…
    במיוחד כשעובדים עם מסדי נתנוים ואז פיי אתה לא זוכר כלום ומה שייך למה…
    אבל, הגעתי למסקנה שהשעות שבהן אני הכי מרוכז זה בלילה ככה לא מפריעים לי לעבוד על הקוד שלי… 🙂

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

    כנראה שזה לא שולח את ה-ID בכלל
    בדוק בקוד המקור או בסטטוס בר אם מופיע ה-ID

  8. Marvel הגיב:

    מה זה?


    RS("ID")

    מה זה אמור להיות??
    אולי התכוונת ל:


    rs.fields("ID")

  9. hedish הגיב:

    בדקתי עכשיו…ומופיע ID בסטטוס בר
    ללא "="
    כלומר לא כתוב …..ID=1 (סתם לדוגמא).

  10. BuildHome הגיב:

    בקשר לקוד הראשון, מהי הכתובת
    שאתה נכנס איתה לעמוד ?
    למשל, יש משהו בערך ID ?

    בקוד השני, קשה קצת לומר….תציג את הקוד שיש מאל הקוד הזה, כמו את הלולאה, שאילתה, קצת קוד רלוונטי..

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

    נסה כך:


    ("<a href =" & "more_details.asp?ID=" & RS("ID") & ">")

  12. hedish הגיב:

    ניסיתי אחי. עם fields , לא מדגדג לו

  13. hedish הגיב:

    הקודים
    view.asp

    Dim RS, SQL
    Dim Current_Page,Page_Count, Num_Recs, i

    i=0
    Current_Page = 1
    Num_Recs = 5

    'getting data about  the number of current page
    If Not request("Current_Page") = "" Then
        Current_Page= request("Current_Page")
    End If

    set  RS = server.CreateObject("ADODB.recordset")
    SQL =  "SELECT * FROM phonenumber"
    RS.open SQL, connstring, 3,1,1

    response.write "<p>PHONE LIST </p>"
    response.write "<table width=500 border=1 cellspacing=2 cellpadding=2>"
    response.write "<tr><td>First Name </td>"
    response.write "<td>Last Name </td><td></td></tr>"

    'num of records in each page
    RS.PageSize = Num_Recs
    RS.CacheSize = Num_Recs

    'cheking if there is any records.
    if Not RS.EOF Then
        Page_Count = RS.pageCount
        RS.AbsolutePage = Current_Page
    End If
    'now Page_Count hold the total number of records in the recordset.
    'now the RS stand on the first record which his number is Current_Page.

    Do While Not RS.EOF AND i < RS.pagesize
        ' Data manipulation.
        response.Write("<tr><td>" & RS("first_name") & "</td>")
        response.Write("<td>" & RS("last_name") & "</td>")
        response.Write("<td>")
        response.write("<a href =" & "more_details.asp?ID =" & RS.fields("ID") & ">")
        response.write("More Details" & "</a></td>")
        response.write("</tr>")
        i=i+1
        RS.MoveNext
    Loop

    'the navigation bar
    for i = 1 to Page_Count
        if Cint(i) = Cint(Current_Page) then
            Response.Write "<b>"& i &"</b> "
        Else
            Response.Write " <a href=""view.asp?Current_Page=" & i & """>"& i &"</a> "
        End If
    Next

    response.write "</table>"

    'closing the recordset
    RS.close
    set RS = nothing

    more_details.asp


    Dim ID
    ID=Request.QueryString("RS.fields(ID)")

    response.Write "<h1>ID: " & ID & "</h1>"

  14. Marvel הגיב:

    בטעות נשלחה לי ההודעה הקודמת…חח
    בקיצור…
    איכפת לך לצרף לפה את כל שורות הקוד שקשורות לבעיה?

  15. Marvel הגיב:

    כמה שגיאות אפשריות:
    1. לא ראיתי שום אובייקט CONNECTION שפתחת…
    יענו בתכלס פתחת רקורדסט על שום קונקשין… אלא אם כן החבאת את הקונקשין סטרינג בכוונה תחילה… שזה משהו אחר..

    2.שורת הקוד הזו:


    ID=Request.QueryString("RS.fields(ID)")

    נסה להחליף אותה בזאת:


    ID=Request.QueryString("ID")

  16. hedish הגיב:

    בדקתי שוב את הקוד…בסטטוס בר
    מופיע
    http://localhost/phonebook1/more_details.asp?ID
    ללא הערך, מה שאומר שהערך לא נקלט כשאנחנו עושים לו REQUEST.

    מוזר.

    שניתי את הקוד לכזה אך הפעם אני מקבל הודעת שגיאה כזו:


    <!–#include file="Connections/connphonebook1.asp" –>
    <%
    Dim SQL, RS

    set  RS = server.CreateObject("ADODB.recordset")
    SQL =  "SELECT * FROM phonenumber WHERE ID=" & ID
    RS.open SQL, connstring

    response.Write "<h1>ID: " & RS("ID") & "</h1>"
    %>

    הודעת שגיאה:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID='.
    /phonebook1/more_details.asp, line 9

    שורה 9:RS.open SQL, connstring
    שורה 8:SQL =  "SELECT * FROM phonenumber WHERE ID=" & ID

    הצילו אותי!!!
    תודה.

  17. BuildHome הגיב:

    כי הערך ריק…נסה את זה

    <!–#include file="Connections/connphonebook1.asp" –>
    <%
    Dim SQL, RS, ID

    ID = Request.QueryString("ID")

    set  RS = server.CreateObject("ADODB.recordset")
    SQL =  "SELECT * FROM phonenumber WHERE ID=" & ID
    RS.open SQL, connstring
    If not RS.EOF Then
        response.Write "<h1>ID: " & RS("ID") & "</h1>"
    End If
    RS.Close
    Set RS = Nothing
    %>

  18. hedish הגיב:

    אחי! אני עדיין מקבל את אותה שגיאה..
    היא לא עוזבת אותי!
    Error Type:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID='.
    /phonebook1/more_details.asp, line 10

    שורה 10:
    RS.open SQL, connstring

    שורה 9:
    SQL =  "SELECT * FROM phonenumber WHERE ID=" & ID

  19. BuildHome הגיב:

    ערך ה-ID ריק
    הוא לא שווה למשהו…זאת הסיבה שלך.

    שאתה נכנס לעמוד אז אתה נכנס למשהו כזה:

    page.asp?ID=

    במקום:

    page.asp?ID=1

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

  20. hedish הגיב:

    תודה חברים! זה עובד , רק מה מאוד מו
    מוזר.
    השורה שעושה את כל העבודה היא זו:


    response.write("<a href=" & "more_details.asp?ID=" & RS("ID") & ">")

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

    תודה רבה לכם חברים!

  21. hedish הגיב:

    הבנת המשפט
    במשפט


    esponse.write("<a href=" & "more_details.asp?ID=" & RS("ID") & ">")

    יש משתנה בשם ID (מודגש).
    מה שאיני מבין זה, איך הדפדפן לא מתריע על משתנה לא מוכר אם הוא לא מוגדר אצלי באותו דף בצורה הזו:  Dim ID.

    אלא מוגדר בדף הבא "פרטים נוספים".
    (אני די מתחיל עם נושא ה-ASP , והתכנות פה דיי מוזר לי).

    אודה לתשובתכם!

  22. BuildHome הגיב:

    לא ממש הבנתי מה הבעיה שלך כאן
    למה הכוונה משתנה לא מוגדר? זה לא JS, זו כתובת אנטרנט והדפדפן לא אמור להתריע על משתנה ריק מערך מספרי.

    אם תסביר את הבעיה כאן אנסה לעזור לך.

  23. hedish הגיב:

    אאו קי , אני לא מבין
    אני לא מבין את השורה


    ID=" & RS("ID") & ">")

    בקוד


    esponse.write("<a href=" & "more_details.asp?ID=" & RS("ID") & ">")

    איני מבין את צורת הכתיבה, משמעותה , ולמה היא גורמת….
    האם תוכל להסביר לי?

    תודה!!

  24. הסבר
    הקטע קוד הזה בעצם מבדיל בין משתמשים.
    לדוגמא, בפורום הזה:
    אני נרשמתי לפניך, לכן ה- ID שלי <מספור אוטומטי> יהיה 9…. אתה נרשמת אחרי, וה- ID שלך יהיה 10…

    הקטע קוד:
    ID=" & RS("ID") & ">")
    מבטיח שלכל אחד יהיה ID משלו, ולכן הפרטים שיוצגו יהיו רק שלו… אחרת, לא ניתן יהיה להבדיל בין משתמשים…
    תחשוב שבמקום ID יהיה username, ובמקום מספר יהיה הכינוי שלך <באנגלית..>. המצב הזה יביא לכך שרק הפרטים של ה- username שהוכנס יוצגו.
    הבנת?

  25. hedish הגיב:

    עוד שאלה..הפעם מבנה ASP
    מתי אני אתכנת…
    בצורה כזו:


    Code ASP

    ומתי בצורה כזו:


    Code ASP
    .
    .
    Code HTML

    ומתי בצורה כזו (מעורבב):


    Code HTML
    Code ASP
    Code HTML
    .
    .
    .

    תודה.

  26. BuildHome הגיב:

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

    <%
    str = Reqiest.Form("str")
    Response.Write str
    %>


    <%
    str = Reqiest.Form("str")
    Response.Write str
    %>
    <b>BoldText</b>


    <%
    str = Reqiest.Form("str")
    Response.Write "<b>" & str & "</b>"
    %>

    לפי הדוגמאות ניתן להבין את השימושים השונים.
    מקווה שהבנתי אותך נכון.

  27. BuildHome הגיב:

    בעעע..בטעות כתבתי
    Reqiest במקום Request  

  28. hedish הגיב:

    ברצוני ליצור טופס שבו
    שנם מספר תיבות טקסט(textbox) שבהם
    יוצגו נתונים ממסד הנתונים.
    למשל:


    First Name: miko
    Last Name: bizho

    עד כאן… אני מצליח לבנות את זה.
    הבעיה מתחילה מפה.
    אני רוצה להוסיף שני כפתורים לטופס. כפתור NEXT וכפתור PREVIOUS.
    לחיצה על אחד מהם…ישנה את הנתון בתיבת הטקס (יש מבינים? להציג בתיבת הטקסט רשומה אחת קדימה/אחורה בהתאם. כנראה שצריך להוסיף למשתנה ID …פלוס 1 או מינוס 1).

    אודה באם למשהו יש איזו שהיא דרך לעוזרני…

  29. BuildHome הגיב:

    אפשרי אך לא באופן דינמי אלא בצד שרת
    הרעיון הוא כזה:

    על מנת לקחת את ה-ID הבא אחרי ה-ID הנוכחי אתה צריך ליצור שאילתה שלוקחת ממסד הנתונים את ה-ID הגדול מן ה-ID הנוכחי בסדר לפי ID, לדוגמא:

    ID = Request.QueryString("ID")
    SQL = "Select top 1 ID from tbl where ID > "&ID&" Order By ID"

    לאחר מכן אתה יכול ליצור קישור עם ה-ID ששלפת מן השאילתה שכתבתי מעלה.

    הרעיון של ה-ID הקודם הוא כמו הרעיון של ה-ID הבא רק שבמקום גדול מ אתה עושה קטן מ, לדוגמא:

    ID = Request.QueryString("ID")
    SQL = "Select top 1 ID from tbl where ID < "&ID&" Order By ID"

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

  30. hedish הגיב:

    אחד הרעיונות שהועלו בפני היה
    ליצור שתי שדות נסתרים.
    אחד יכיל ID קודם כלומר 1-
    ושני יכיל ID הבא 1+

    הטופס יקרא לדף עצמו. אם שם הדף UPDATE.asp אז action = UPDATE.asp

    האם זה אפשרי?…
    איך אני כותב דבר כזה…?

  31. hedish הגיב:

    אה…! ויש עוד איזה פטנט שגם אותו א
    איני יודע לממש,
    והוא ליצור בטופס iframe בגודל 0,0
    לבנות פונקציה ב- VBS או JS שתקבל את ה- ID ותקדם אותו ב- 1 או 1-
    משהו כזה….
    אבל לא הבנתי כלום מההסבר הזה….

  32. זה אפשרי אך ורק…
    אם אתה לא מוחק רשומות…

    אם למשל יש לי את מספרי ה- ID האלה:
    1,2,3,4,5

    ומחקתי את העמודה השלישית…
    במידה ותעשה ID-1 תופיע שגיאה משום שאין לו ID ששווה ל- 3.

    אבל מה רע במה שבילדהום רשם? זאת הדרך הכי בטוחה שאפשר לעשות את זה, משום שהוא בודק עם ה- DB מה ה- ID לפני ואחרי ה- ID שיש לך, והוא יעבוד גם במידה ואתה מוחק רשומות.

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

    תביר את הנתונים למערך בצד לקוח
    ותשחק עם JavaScript.

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

  34. hedish הגיב:

    סבבה! אפשר להיעזר בך בבניית הטופס?
    אני אתחיל  לבנות את הטופס…
    אציג לך חלקים מהקוד…ואם אתקע, "תשחרר את הוונטיל בשבילי"?

  35. hedish הגיב:

    תביר = סימן הפסק בקריאה בספר תורה

  36. לפי התגובה שלך לאוריקה <תביר>…
    אני מבין שהסתדרת

  37. hedish הגיב:

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

  38. hedish הגיב:

    התחלתי פה משהו …
    בניתי משהו כזה בנתיים…


    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <!–#include file="Connections/connphonebook1.asp" –>
    <%
    'opening recordset
    Dim RS, SQL
    set  RS = server.CreateObject("ADODB.recordset")
    SQL =  "SELECT * FROM phonenumber"
    RS.open SQL, connstring, 2, 3

    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
    <html>
    <head>
    <title>UPDATE</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <form action="" >
        <table width="500" border="1" cellspacing="2" cellpadding="2">
          <tr>
            <td>First Name:</td>
            <td><%=RS("first_name")%></td>
          </tr>
          <tr>
              <td><input name="" type="button" value="previous"></td>
            <td><input name="" type="button" value="next"></td>
          </tr>
        </table>
    </form>    
    </body>
    </html>

    BuildHome
    ציין בתגובתו שתי משפטי SQL. האחד לקידום ID ל -ID הבא וכן להיפך.
    שאלתי היכן להציב את זה בדף? האם צריך להכניס את המשפטים הללו לתנאי IF
    כלשהוא?…
    או אולי לבנות שתי פונקציות…עם המשפטים הללו…ולהציבם באירוע OnClick?

    תודה.

  39. hedish הגיב:

    אם כן, אני צריך לחלק את זה לשניים?
    דף ASP ,
    ודף HTML שיכיל את הטופס?

  40. hedish הגיב:

    תודה. אבל הבעיה היא איך להניע את
    הרשומות בתוך הטקסטבוקסים…

    קראתי את שתי המאמרים
    אך יש לי קושי בלבנות את ה"דבר" הזה.

    אשאל שוב ..
    לבנות שתי דפים? דף ASP לקליטת הנתונים…+ דף HTML עם טופס?
    אם לא, אז מה יש בידי לעשות?

  41. BuildHome הגיב:

    יש לך שתי אפשרויות שאתה יכול לבצע
    1. לשלב את הטופס ואת עמוד קליטת הנתונים לעמוד אחד.
    2. להפריד ביניהם. הטופס יהיה בעמוד נפרד ועמוד ה-ASP יהיה נפרד.

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

    אם תסביר לעומק מה הקושי כאן אולי אוכל לעזור יותר.

  42. hedish הגיב:

    סבבה! הקושי שלי הוא להבין כיצד קוד
    ה- ASP עובד…
    בגלל זה אני "סוחט" מכם עוד קצת ועוד קצת.
    כפי שפרסמתי שתי הודעות קודם כל מה שאני מצליח זה להציג טופס
    עם שדה טקסט ובתוכו הרשומה הראשונה  מתוך מסד הנתונים.
    הקושי שלי הוא בבניית שתי הכפתורים כאמור….שיניעו את הנתונים בתיבת הטקסט קדימה ואחורה.

    ד"א:
    שתי משפטי  ה- SQL , תודה רבה. אך, כפי שציינתי אני כל כך BEGGINER
    שאיני יודע לעשות איתם משהו.

    אודה לעזרתך!

  43. BuildHome הגיב:

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

    מאחר ואתה מתחיל אני מעוניין לעזור כמה שניתן ללא סיבוכים.

    הנה הקוד בפעולה:
    http://BuildHome.xeon.co.il/rec/rec.asp

    תלחץ על איזו רשומה שאתה רוצה ואז תראה את הניווט ואת הנתונים המוצגים בשדות טקסט.

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

  44. hedish הגיב:

    כן!! זה זה!! משהו כזה!
    תיבותטקסט שקישורים או כפתורים מריצים את הרשומות שבהם!!

  45. BuildHome הגיב:

    אוקיי אז הנה קישור הורדה של הדוגמא
    שהכנתי:
    http://BuildHome.xeon.co.il/rec/bh_rec.zip

    מקווה שתבין את הקוד.

  46. hedish הגיב:

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

  47. BuildHome הגיב:

    הורדת את הדוגמא?
    אם כן, תפתח את הקובץ במחשב שלך ולא בשרת החינמי וקוד המקור יהיה עם הערות בעברית ולא ג'יבריש.
    העדפתי לכתוב הערות בעברית במקום באנגלית.

  48. hedish הגיב:

    אכן הורדתי, פתחתי את הקובץ בדרימווי
    דרימוויבר, התוכנה הזו לא משהו עם עברית , יש לך הצעה עם איזה יישום אחר אפשר לפתוח את הקובץ? אולי כתבן? נוטפד? ….
    התרשמתי מאוד מהקוד! תודה!
    כל כך פשוט ועם זאת עובד כל כך טוב!

  49. hedish הגיב:

    הבנת הקוד
    (תחילת הקוד)

    "אם לא קיים ערך נציג את כל הרשומות"
    לפי מיטב הבנתי אם ID=0 אין שום רשומה בטבלה , הלא כן?

  50. BuildHome הגיב:

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

  51. hedish הגיב:

    האם זה בהנחה ששדה ה- ID
    אינו מוגדר כ – Autonumber?

  52. זה בהנחה שהוא כן מוגדר
    אם הוא 0 זה אומר שאין רשומה כזו ולכן זה סימן להציג את כל הרשומות

  53. hedish הגיב:

    משום מה לא נקלט!
    כשאומרים לי ID שווה אפס , משום מה אני מדמיין טבלה עם עמודות
    ללא נתונים כלל וכלל.
    האם זה נכון?

  54. הסבר
    אין ID ששווה לאפס כאשר ה- ID ממוספר אוטומטית. ה- ID הראשון הוא 1, וגם אם אין נתונים בשאר העמודות, ה- ID יופיע 1 <ושאר העמודות ריקות>.
    כאשר רושמים ID=0 הוא מציג את כל הרשומות שקיימות בטבלה.

    על מנת לבדוק אם אין רשומות רושמים את הקוד:
    while not rs.eof then
    response.Write "יש רשומות"
    wend

    BOF- מקבל את הערך TRUE כאשר הרשומה הנוכחית ממוקמת לפני הרשומה הראשונה.
    EOF- מקבל את הערך TRUE כאשר הרשומה הנוכחית ממוקמת אחרי הרשומה האחרונה.

  55. תוספת קטנה שלי
    EOF = End Of Recordset
    BOF = Beginning Of Recordset


    if rs.eof then
    response.write "אין רשומות"
    else
    response.write "יש רשומות"
    end if

  56. hedish הגיב:

    שוב אותה שגיאה…האם ID ריק?
    Error Type:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID <'.
    /phonebook1/update.asp, line 23

    שורה 22 23


    'Previous record to the Current record
        SQL = " Select top 1 ID from phonenumber where ID < " & ID & " Order By ID "
        RS.Open SQL, Conn

    הכיצד?

  57. BuildHome הגיב:

    כנראה שערכו אכן ריק
    אתה צריך להכנס לעמוד בצורה כזו

    page.asp?ID=Number

    על מנת שתוכל לשלוף את ה-ID הקודם לרשומה הנוכחית.
    Number = מספר רשומה

  58. hedish הגיב:

    יכול להיות שזה יעבוד
    בהנחה ואני מציג את הרשומה הראשונה קודם?

  59. BuildHome הגיב:

    אתה מתכוון שערך ברירת המחדל יהיה
    כבר ID=Number ? כלומר כבר ל-ID יהיה ערך ?
    אולי לא הבנתי נכון.

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

    ID = Request.QueryString("ID")
    If Len(ID) = 0 or IsNumeric(ID) = False Then ID = 0

    זה יכול לחסוך ממך את השגיאות בהמשך הקוד.

  60. hedish הגיב:

    מה עם הקוד הנ"ל….זה לא יעזור?


    f Len(ID) = 0 or IsNumeric(ID) = False Then
            SQL = "Select ID, first_name, last_name from phonenumber"
            RS.Open SQL, Conn
            If RS.EOF Then
                Response.Write "<center><b>There isn't any record in the DATABASE!</b></center>" & vbcrlf
            End If
        End If
        RS.close        

  61. BuildHome הגיב:

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

  62. hedish הגיב:

    איזה משפט אני כותב על מנת שמשתנה ID
    יקבל את הערך של הרשומה בטבלה?

    תודה.

  63. BuildHome הגיב:

    אם הבנתי אותך נכון אז זה ככה

    ID = rs("ID")

    תלוי מה שם הרקורדסט שלך ומה שם ה-ID בטבלה (אם הוא שונה מ-ID).

  64. hedish הגיב:

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

    השארתי את ה- SQLים שמוסרים ערך
    ל -prevID ו nextID.

    אך צשום מה הקוד לא רץ.


    Dim ID, RS, SQL
        Dim PrevID, NextID

        SQL = "Select ID from phonenumber"
        Set RS = Server.CreateObject("ADODB.RecordSet")
        RS.Open SQL, conn
        ID = RS("ID")        
        RS.close

        'Previous record to the Current record
        SQL = " Select top 1 ID from phonenumber where ID < " & ID & " Order By ID "
        RS.Open SQL, conn
        If not RS.EOF Then PrevID = RS("ID")
        RS.Close

        'Next record to the Current record
        SQL = " Select top 1 ID from phonenumber where ID > " & ID & " Order By ID "
        RS.Open SQL, conn
        If not rs.EOF Then NextID = RS("ID")
        RS.Close

        'Current record
        SQL = "Select ID, first_name, last_name from phonenumber where ID = " & ID
        RS.Open SQL, conn
        If RS.EOF Then
            Response.Write "<center><b>The current record doesn't exist!</b></center>" & vbcrlf
        Else
            Response.Write "<center><h3>ID : " & rs("ID") & "</h3></center><br>" & vbcrlf
            Response.Write "<b>first name</b> <input type=""text"" size=""25"" name=""first_name"" value="""&rs("first_name")&"""><br>" & vbcrlf
            Response.Write "<b>last name</b> <input type=""text""  size=""25"" name=""last_name"" value="""&rs("last_name")&"""><br><br>" & vbcrlf
            If Len(PrevID) > 0 Then Response.Write "<a href=""update.asp?ID="&PrevID&""">Previous</a>" & vbcrlf
            If Len(PrevID) > 0 and Len(NextID) > 0 Then Response.Write " | " & vbcrlf
            If Len(NextID) > 0 Then Response.Write "<a href=""update.asp?ID="&NextID&""">Next</a>" & vbcrlf
        End If
        RS.Close
        Set RS = Nothing
        
        Conn.Close
        Set conn = Nothing

    אודה לעזרתכם!!!

  65. BuildHome הגיב:

    למה הוספת את הקוד הזה

        SQL = "Select ID from phonenumber"
        Set RS = Server.CreateObject("ADODB.RecordSet")
        RS.Open SQL, conn
        ID = RS("ID")        
        RS.close

    הוא סתם מיותר והיכן נכנס הערך ID משורת הכתובות ?

  66. hedish הגיב:

    אם כן…הורדתי את הקוד הזה ושוב מופ
    מופיעה השגיאה הזו, שמשמעותה ID ריק.
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID <'.

  67. BuildHome הגיב:

    כי שוב, ערכו של ID ריק.
    לאיזו כתובת אתה נכנס ?? כלומר משהו כזה:

    page.asp?ID=number

    number = מספר מסויים

  68. hedish הגיב:

    עכשיו אני מבין אותך.
    כיוונתי אותו לאותה כתובת.
    לאותו דף.

    אפשר לבצע דבר כזה?
    ואם זו הבעיה….מה עלי לשנות בקוד?
    היתכן ש- ID העקבות הקריאה לאותה כתובת, ערכו נשאר אותו הדבר ולכן
    הרשומות לא "זזות"?

  69. BuildHome הגיב:

    יש לך עמוד דוגמא להציג ?
    קצת קשה להבין ממה שאתה מנסה להסביר…
    הצבת במשתנה ID את ערכו משורת הכתובות ?
    תציג לי למשל את הכתובת אליה אתה נכנס (שם העמוד וההמשך..)

  70. hedish הגיב:

    אציג פה את כל הקוד , הוא לא ארוך…

    Dim ID, RS, SQL
    Dim PrevID, NextID
    Set RS = Server.CreateObject("ADODB.RecordSet")
    ID = request.QueryString("ID")        

    'Previous record to the Current record
        SQL = " Select top 1 ID from phonenumber where ID < " & ID & " Order By ID "
        RS.Open SQL, conn
        If not RS.EOF Then PrevID = RS("ID")
        RS.Close

        'Next record to the Current record
        SQL = " Select top 1 ID from phonenumber where ID > " & ID & " Order By ID "
        RS.Open SQL, conn
        If not rs.EOF Then NextID = RS("ID")
        RS.Close

        'Current record
        SQL = "Select ID, first_name, last_name from phonenumber where ID = " & ID
        RS.Open SQL, conn
        If RS.EOF Then
            Response.Write "<center><b>The current record doesn't exist!</b></center>" & vbcrlf
        Else
            Response.Write "<center><h3>ID : " & rs("ID") & "</h3></center><br>" & vbcrlf
            Response.Write "<b>first name</b> <input type=""text"" size=""25"" name=""first_name"" value="""&rs("first_name")&"""><br>" & vbcrlf
            Response.Write "<b>last name</b> <input type=""text""  size=""25"" name=""last_name"" value="""&rs("last_name")&"""><br><br>" & vbcrlf
            If Len(PrevID) > 0 Then Response.Write "<a href=""update.asp?ID="&PrevID&""">Previous</a>" & vbcrlf
            If Len(PrevID) > 0 and Len(NextID) > 0 Then Response.Write " | " & vbcrlf
            If Len(NextID) > 0 Then Response.Write "<a href=""update.asp?ID="&NextID&""">Next</a>" & vbcrlf
        End If
        RS.Close
        Set RS = Nothing
        
        Conn.Close
        Set conn = Nothing

  71. BuildHome הגיב:

    שאתה נכנס לעמוד עריכה, ערכו של
    ID שווה למשהו או אתה רק נכנס לעמוד רגיל כמו page.asp?

  72. hedish הגיב:

    הדף איתו אני עובד הוא UPDATE.ASP
    הדף קורא לעצמו…
    ואמור להיות בשורת הכתובות
    UPDATE.ASP?ID=1
    UPDATE.ASP?ID=2
    UPDATE.ASP?ID=3
    בכל פעם שאלחץ הבא או הקודם…

    מקווה שהבנתי אותך, ואתה אותי.

  73. BuildHome הגיב:

    נכון, זה צריך להיות ככה
    אבל זה לא ככה ?
    בעמוד אליו אתה נכנס אין ערך ID בשורת הכתובות?
    סתם נכנסת לעמוד update.asp ללא ערך ?

    לא הבנתי כאן מה הבעיה ומה התקלה ומה הקושי.

  74. hedish הגיב:

    הרשומות לא "מתגלגלות"…וכרגע אני ת
    תקוע עם השגיאה הזו!
    Error Type:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID <'.
    /phonebook1/update.asp, line 27

    שורה 27

    Dim ID, RS, SQL
    Dim PrevID, NextID
    Set RS = Server.CreateObject("ADODB.RecordSet")
    ID = request.QueryString("ID")        
    SQL = " Select top 1 ID from phonenumber where ID < " & ID & " Order By ID "
    RS.Open SQL, conn

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

    תודה.

  75. hedish הגיב:

    סליחה – שורה 27


    SQL = " Select top 1 ID from phonenumber where ID < " & ID & " Order By ID "
    RS.Open SQL, conn

    אך ייתכן כי הבעיה בפקודת ה- REQUEST?


    ID = request.QueryString("ID")

    אומר שוב הדף קורא לעצמו.

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

    זה לא אמור לקרות אבל אם זה קורה
    סימן שאין ערך ב-ID
    במקום לפתוח רקורדסט תדפיס את השאילתא ותבדוק אם במשתנה ID קיים ערך

  77. BuildHome הגיב:

    אני אשאל שוב…
    מה הכתובת אליה אתה נכנס בעמוד?
    ערכו של ID ריק, אחרת לא הייתה מופיעה לך השגיאה.

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

    אז אין ID בכתובת
    תעשה קוד כזה למשל

    if isEmpty(Request.QueryString("id")) then
    id = 1
    else
    id = cInt(Request.QueryString("id"))
    end if

  79. hedish הגיב:

    כשאני מוסיף את השורות האלו בתחילת ה
    הדף עולה, אך הרשומות לא נעות
    זה נתקע.

  80. hedish הגיב:

    סליחה, השורות מופיעות פה.


    SQL = "Select ID from phonenumber"
        Set RS = Server.CreateObject("ADODB.RecordSet")
        RS.Open SQL, conn
        ID = RS("ID")        
        RS.close

  81. BuildHome הגיב:

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

  82. hedish הגיב:

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

    מה שאני רוצה לעשות , זה את אותו הדף שהיצגת לי.
    בו ישנם 2 תיבות טקסט עם קישורים לרשומה הבאה והקודמת NEXT ו PREVIOUS.

    אני רוצה שברגע עליית הדף לדפדפן. יופיעו בתיבות הטקסט הנתונים מהרשומה הראשונה בטבלה. מרגע זה המשתמש יוכל ללחוץ על NEXT כדי לראות את הרשומה הבאה אחרי…או על PREVIOUS כדי לראות את הרשומה שלפני…

    אני מקווה שהבנתם…

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


    Dim ID, RS, SQL
    Dim PrevID, NextID

    SQL = "Select ID from phonenumber"
    Set RS = Server.CreateObject("ADODB.RecordSet")
    RS.Open SQL, conn
    ID = RS("ID")        
    RS.close

    SQL = " Select top 1 ID from phonenumber where ID < " & ID & " Order By ID "
    RS.Open SQL, conn
    If not RS.EOF Then PrevID = RS("ID")
    RS.Close

    SQL = " Select top 1 ID from phonenumber where ID > " & ID & " Order By ID "
    RS.Open SQL, conn
    If not rs.EOF Then NextID = RS("ID")
    RS.Close

    SQL = "Select ID, first_name, last_name from phonenumber where ID = " & ID
        RS.Open SQL, conn
        If RS.EOF Then
            Response.Write "<center><b>The current record doesn't exist!</b></center>" & vbcrlf
        Else
            Response.Write "<center><h3>ID : " & rs("ID") & "</h3></center><br>" & vbcrlf
            Response.Write "<b>first name</b> <input type=""text"" size=""25"" name=""first_name"" value="""&rs("first_name")&"""><br>" & vbcrlf
            Response.Write "<b>last name</b> <input type=""text""  size=""25"" name=""last_name"" value="""&rs("last_name")&"""><br><br>" & vbcrlf
            If Len(PrevID) > 0 Then Response.Write "<a href=""update.asp?ID="&PrevID&""">Previous</a>" & vbcrlf
            If Len(PrevID) > 0 and Len(NextID) > 0 Then Response.Write " | " & vbcrlf
            If Len(NextID) > 0 Then Response.Write "<a href=""update.asp?ID="&NextID&""">Next</a>" & vbcrlf
    End If
    RS.Close
    Set RS = Nothing
        
    Conn.Close
    Set conn = Nothing

  83. BuildHome הגיב:

    אוקיי, עכשיו הבנתי אותך על מה אתה
    מדבר.

    תחליף את הקוד שלך לקוד הבא:

    Dim ID, RS, SQL
    Dim PrevID, NextID

    ID = Request.QueryString("ID")
    Set RS = Server.CreateObject("ADODB.RecordSet")

    If Len(ID) = 0 or IsNumeric(ID) = False Then
        SQL = "Select top 1 ID from phonenumber Order By ID"
        RS.Open SQL, conn
        If Not RS.EOF Then ID = RS("ID") Else ID = 0
        RS.close
    End If

    SQL = " Select top 1 ID from phonenumber where ID < " & ID & " Order By ID "
    RS.Open SQL, conn
    If not RS.EOF Then PrevID = RS("ID")
    RS.Close

    SQL = " Select top 1 ID from phonenumber where ID > " & ID & " Order By ID "
    RS.Open SQL, conn
    If not rs.EOF Then NextID = RS("ID")
    RS.Close

    SQL = "Select ID, first_name, last_name from phonenumber where ID = " & ID
        RS.Open SQL, conn
        If RS.EOF Then
            Response.Write "<center><b>The current record doesn't exist!</b></center>" & vbcrlf
        Else
            Response.Write "<center><h3>ID : " & rs("ID") & "</h3></center><br>" & vbcrlf
            Response.Write "<b>first name</b> <input type=""text"" size=""25"" name=""first_name"" value="""&rs("first_name")&"""><br>" & vbcrlf
            Response.Write "<b>last name</b> <input type=""text""  size=""25"" name=""last_name"" value="""&rs("last_name")&"""><br><br>" & vbcrlf
            If Len(PrevID) > 0 Then Response.Write "<a href=""update.asp?ID="&PrevID&""">Previous</a>" & vbcrlf
            If Len(PrevID) > 0 and Len(NextID) > 0 Then Response.Write " | " & vbcrlf
            If Len(NextID) > 0 Then Response.Write "<a href=""update.asp?ID="&NextID&""">Next</a>" & vbcrlf
    End If
    RS.Close
    Set RS = Nothing
        
    Conn.Close
    Set conn = Nothing

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

  84. hedish הגיב:

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

  85. hedish הגיב:

    ל – BUILDHOME וכל חברי הפורום
    שהתשתפו בשירשור הזה – תודה רבה!

    (הקוד עובד……יייייייייהההההההההההההה!!!!!)
    <<<תופס במסך ונוגח בו!>>

  86. hedish הגיב:

    חזרתי! משום מה כאשר אני מוסיף תיבת
    טקסט בנוסף לשתי תיבות הטקסט הרגילות (שם +שם משפחה).
    אני מקבל את השגיאה הזו:


    ADODB.Recordset (0x800A0CC1)
    Item cannot be found in the collection corresponding to the requested name or ordinal.
    /phonebook1/update.asp, line 51

    ד"א: איני מבין מה הפירוש.

    כאשר יש שתי תיבות טקסט:


    Response.Write "<b>first name</b> <input type=""text"" size=""25"" name=""first_name"" value="""&RS("first_name")&"""><br>" & vbcrlf
            Response.Write "<b>last name</b> <input type=""text""  size=""25"" name=""last_name"" value="""&RS("last_name")&"""><br><br>" & vbcrlf

    זה עובד מצויין.
    ברגע שאני מוסיף תיבות טקסט (שמקושרות לשאר העמודות במסד הנתונים שלי.).
    אני מקבל את השגיאה שלעיל.

שלח תשובה