659
צפיות
צפיות
104
תשובות
תשובות
קובץ "פרטים נוספים".
בעת לחיצה על הקישור שמוביל לקובץ "פרטים נוספים"
אני מקבל הודעת שגיאה:
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 תשובות
נסה את הקוד הזה במקום השורה שלך
response.write "<a href =""" & "more_details.asp?ID =" & RS("ID") & """>More Details</a></td>"
בנוסף, השגיאה היא על השורה:
response.Write "<h1>ID: " & ID & "</h1>
שים לב ששכחת לסיים את הסטרינג.
הנה השורה התקנית:
response.Write "<h1>ID: " & ID & "</h1>"
תירגום השגיאה!
לא פעם אני נתקל במתכנתים שלא טורחים לקרוא את השגיאה וישר רצים לבקש עזרה…
למרות שפרטי השגיאה אולי מצווינים רק בכמה שורות אבל מספקים לנו מקור מידע חיוני להצלחת הקוד.
בדוגמא שלך אם היית טורח לקרוא את השגיאה ולתרגם אותה לשפה שלך (עברית?) אז היית מבין שבעצם הבעיה היא "מחרוזת קבוע לא גמור" (אני כבר זוכר את השגיאות בעל פה….חחחח)….
בתיאור השגיאה מצויין לך גם שורת הקוד ואפילו הטור עצמו בו מתרחשת השגיאה…
בפעם הבאה נסה לעבור על פרטי השגיאה ואני בטוח שהבעיה תיפתר ללא כל תלות בפורמים המעולים של וובמאסטר 🙂
כמובן
אך מי כמוך מכיר את הבעיה שכל המתכנתים בכל פורום שהוא מכירים.
שלפעמים אתה בוהה שעות בקוד או בשגיאה ו…"לעזאזל!? למה זה לא עובד!"
והראש לצערנו לפעמים….בורח לו למחוזות אחרים….
תודה חברים! רק מה…אני לא מקבל ערך
של ID.
אני מקבל כותרת : ID.
ללא הערך שלו….?
משהו לא בסדר בקודד הזה?
Dim ID
ID=Request.QueryString("ID")
response.Write "<h1>ID: " & ID & "</h1>"
כי לי זה נראה בסדר.
גם השורה מהדף שקורא לו:
response.write("<a href =" & "more_details.asp?ID =" & RS("ID") & ">")
חחחח
חחח אני יכול לבהות כל היום ולא להבין מה הבעיה כשאני לא מרוכז…
והדבר שאני הכי שונא זה להתחיל לעבוד על קוד, להפסיק ולהמשיך למחרת…
במיוחד כשעובדים עם מסדי נתנוים ואז פיי אתה לא זוכר כלום ומה שייך למה…
אבל, הגעתי למסקנה שהשעות שבהן אני הכי מרוכז זה בלילה ככה לא מפריעים לי לעבוד על הקוד שלי… 🙂
כנראה שזה לא שולח את ה-ID בכלל
בדוק בקוד המקור או בסטטוס בר אם מופיע ה-ID
גם אצלי זה כך לפעמים 😛
מה זה?
RS("ID")
מה זה אמור להיות??
אולי התכוונת ל:
rs.fields("ID")
אפשר גם כך
בדקתי עכשיו…ומופיע ID בסטטוס בר
ללא "="
כלומר לא כתוב …..ID=1 (סתם לדוגמא).
בקשר לקוד הראשון, מהי הכתובת
שאתה נכנס איתה לעמוד ?
למשל, יש משהו בערך ID ?
בקוד השני, קשה קצת לומר….תציג את הקוד שיש מאל הקוד הזה, כמו את הלולאה, שאילתה, קצת קוד רלוונטי..
נסה כך:
("<a href =" & "more_details.asp?ID=" & RS("ID") & ">")
ניסיתי אחי. עם fields , לא מדגדג לו
המממ….
הקודים
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>"
בטעות נשלחה לי ההודעה הקודמת…חח
בקיצור…
איכפת לך לצרף לפה את כל שורות הקוד שקשורות לבעיה?
כמה שגיאות אפשריות:
1. לא ראיתי שום אובייקט CONNECTION שפתחת…
יענו בתכלס פתחת רקורדסט על שום קונקשין… אלא אם כן החבאת את הקונקשין סטרינג בכוונה תחילה… שזה משהו אחר..
2.שורת הקוד הזו:
ID=Request.QueryString("RS.fields(ID)")
נסה להחליף אותה בזאת:
ID=Request.QueryString("ID")
בדקתי שוב את הקוד…בסטטוס בר
מופיע
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
הצילו אותי!!!
תודה.
כנראה של-ID אין ערך…
כי הערך ריק…נסה את זה
<!–#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
%>
אחי! אני עדיין מקבל את אותה שגיאה..
היא לא עוזבת אותי!
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
ערך ה-ID ריק
הוא לא שווה למשהו…זאת הסיבה שלך.
שאתה נכנס לעמוד אז אתה נכנס למשהו כזה:
page.asp?ID=
במקום:
page.asp?ID=1
תמיד תקבל שגיאה אלא אם כן הערך שווה למשהו.
זה הכל. תבדוק זאת.
תודה חברים! זה עובד , רק מה מאוד מו
מוזר.
השורה שעושה את כל העבודה היא זו:
response.write("<a href=" & "more_details.asp?ID=" & RS("ID") & ">")
השורה הזו שכתבתי אותה מחדש. בדיוק אחד לאחד.
ובחיי אני לא יודע מה גרם לזה לפעול לפתע.
תודה רבה לכם חברים!
הבנת המשפט
במשפט
esponse.write("<a href=" & "more_details.asp?ID=" & RS("ID") & ">")
יש משתנה בשם ID (מודגש).
מה שאיני מבין זה, איך הדפדפן לא מתריע על משתנה לא מוכר אם הוא לא מוגדר אצלי באותו דף בצורה הזו: Dim ID.
אלא מוגדר בדף הבא "פרטים נוספים".
(אני די מתחיל עם נושא ה-ASP , והתכנות פה דיי מוזר לי).
אודה לתשובתכם!
לא ממש הבנתי מה הבעיה שלך כאן
למה הכוונה משתנה לא מוגדר? זה לא JS, זו כתובת אנטרנט והדפדפן לא אמור להתריע על משתנה ריק מערך מספרי.
אם תסביר את הבעיה כאן אנסה לעזור לך.
אאו קי , אני לא מבין
אני לא מבין את השורה
ID=" & RS("ID") & ">")
בקוד
esponse.write("<a href=" & "more_details.asp?ID=" & RS("ID") & ">")
איני מבין את צורת הכתיבה, משמעותה , ולמה היא גורמת….
האם תוכל להסביר לי?
תודה!!
הסבר
הקטע קוד הזה בעצם מבדיל בין משתמשים.
לדוגמא, בפורום הזה:
אני נרשמתי לפניך, לכן ה- ID שלי <מספור אוטומטי> יהיה 9…. אתה נרשמת אחרי, וה- ID שלך יהיה 10…
הקטע קוד:
ID=" & RS("ID") & ">")
מבטיח שלכל אחד יהיה ID משלו, ולכן הפרטים שיוצגו יהיו רק שלו… אחרת, לא ניתן יהיה להבדיל בין משתמשים…
תחשוב שבמקום ID יהיה username, ובמקום מספר יהיה הכינוי שלך <באנגלית..>. המצב הזה יביא לכך שרק הפרטים של ה- username שהוכנס יוצגו.
הבנת?
עוד שאלה..הפעם מבנה ASP
מתי אני אתכנת…
בצורה כזו:
Code ASP
ומתי בצורה כזו:
Code ASP
.
.
Code HTML
ומתי בצורה כזו (מעורבב):
Code HTML
Code ASP
Code HTML
.
.
.
תודה.
לא יודע אם הבנתי אותך נכון אבל הנה
דוגמאות לכל שימוש שציינת:
<%
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>"
%>
לפי הדוגמאות ניתן להבין את השימושים השונים.
מקווה שהבנתי אותך נכון.
בעעע..בטעות כתבתי
Reqiest במקום Request
ברצוני ליצור טופס שבו
שנם מספר תיבות טקסט(textbox) שבהם
יוצגו נתונים ממסד הנתונים.
למשל:
First Name: miko
Last Name: bizho
עד כאן… אני מצליח לבנות את זה.
הבעיה מתחילה מפה.
אני רוצה להוסיף שני כפתורים לטופס. כפתור NEXT וכפתור PREVIOUS.
לחיצה על אחד מהם…ישנה את הנתון בתיבת הטקס (יש מבינים? להציג בתיבת הטקסט רשומה אחת קדימה/אחורה בהתאם. כנראה שצריך להוסיף למשתנה ID …פלוס 1 או מינוס 1).
אודה באם למשהו יש איזו שהיא דרך לעוזרני…
אפשרי אך לא באופן דינמי אלא בצד שרת
הרעיון הוא כזה:
על מנת לקחת את ה-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 הבא והקודם.
מקווה שהבנת את הרעיון והשימוש.
אחד הרעיונות שהועלו בפני היה
ליצור שתי שדות נסתרים.
אחד יכיל ID קודם כלומר 1-
ושני יכיל ID הבא 1+
הטופס יקרא לדף עצמו. אם שם הדף UPDATE.asp אז action = UPDATE.asp
האם זה אפשרי?…
איך אני כותב דבר כזה…?
אה…! ויש עוד איזה פטנט שגם אותו א
איני יודע לממש,
והוא ליצור בטופס iframe בגודל 0,0
לבנות פונקציה ב- VBS או JS שתקבל את ה- ID ותקדם אותו ב- 1 או 1-
משהו כזה….
אבל לא הבנתי כלום מההסבר הזה….
זה אפשרי אך ורק…
אם אתה לא מוחק רשומות…
אם למשל יש לי את מספרי ה- ID האלה:
1,2,3,4,5
ומחקתי את העמודה השלישית…
במידה ותעשה ID-1 תופיע שגיאה משום שאין לו ID ששווה ל- 3.
אבל מה רע במה שבילדהום רשם? זאת הדרך הכי בטוחה שאפשר לעשות את זה, משום שהוא בודק עם ה- DB מה ה- ID לפני ואחרי ה- ID שיש לך, והוא יעבוד גם במידה ואתה מוחק רשומות.
תביר את הנתונים למערך בצד לקוח
ותשחק עם JavaScript.
על העברת הנתונים לצד לקוח קרא
, משם אתה קורא כל פעם שורה במערך.*תביר = תעביר
סבבה! אפשר להיעזר בך בבניית הטופס?
אני אתחיל לבנות את הטופס…
אציג לך חלקים מהקוד…ואם אתקע, "תשחרר את הוונטיל בשבילי"?
בעצם בכולכם חברים!
תביר = סימן הפסק בקריאה בספר תורה
לפי התגובה שלך לאוריקה <תביר>…
אני מבין שהסתדרת
*אוריקה=אוריקס
האמת…כל מה שהצלחתי זה לבנות טופס
ולפתוח קישור למסד נתונים…
הייתי שמח אם מישהו או כמה אנשים ילוו אותי בבניה של הדף הזה.
אולי כך אבין את העניין אצבור נסיון ואפסיק להטריד את מנוחתכם.
התחלתי פה משהו …
בניתי משהו כזה בנתיים…
<%@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">
<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?
תודה.
אתה מתבלבל בין שרת ללקוח
קרא .
אם כן, אני צריך לחלק את זה לשניים?
דף ASP ,
ודף HTML שיכיל את הטופס?
קרא כאן
תודה. אבל הבעיה היא איך להניע את
הרשומות בתוך הטקסטבוקסים…
קראתי את שתי המאמרים
אך יש לי קושי בלבנות את ה"דבר" הזה.
אשאל שוב ..
לבנות שתי דפים? דף ASP לקליטת הנתונים…+ דף HTML עם טופס?
אם לא, אז מה יש בידי לעשות?
יש לך שתי אפשרויות שאתה יכול לבצע
1. לשלב את הטופס ואת עמוד קליטת הנתונים לעמוד אחד.
2. להפריד ביניהם. הטופס יהיה בעמוד נפרד ועמוד ה-ASP יהיה נפרד.
במאמר שלי על ADO מראים כיצד ניתן לבצע את שתי האפשרויות בקלות.
אם תסביר לעומק מה הקושי כאן אולי אוכל לעזור יותר.
סבבה! הקושי שלי הוא להבין כיצד קוד
ה- ASP עובד…
בגלל זה אני "סוחט" מכם עוד קצת ועוד קצת.
כפי שפרסמתי שתי הודעות קודם כל מה שאני מצליח זה להציג טופס
עם שדה טקסט ובתוכו הרשומה הראשונה מתוך מסד הנתונים.
הקושי שלי הוא בבניית שתי הכפתורים כאמור….שיניעו את הנתונים בתיבת הטקסט קדימה ואחורה.
ד"א:
שתי משפטי ה- SQL , תודה רבה. אך, כפי שציינתי אני כל כך BEGGINER
שאיני יודע לעשות איתם משהו.
אודה לעזרתך!
בניתי עמוד שלוקח נתונים
מהמסד ומציגם בלולאה בעמוד.
לאחר מכן אתה יכול לנווט בעזרת קישורים עבור הרשומה הקודמת והבאה.
מאחר ואתה מתחיל אני מעוניין לעזור כמה שניתן ללא סיבוכים.
הנה הקוד בפעולה:
תלחץ על איזו רשומה שאתה רוצה ואז תראה את הניווט ואת הנתונים המוצגים בשדות טקסט.
זה משהו מאוד בסיסי ומקווה שזה מה שרצית.
אם זה מה שרצית אשמח לתת את קוד המקור להורדה, כולל מסד הנתונים (רק תגיד ואתן לך קישור הורדה).
כן!! זה זה!! משהו כזה!
תיבותטקסט שקישורים או כפתורים מריצים את הרשומות שבהם!!
אוקיי אז הנה קישור הורדה של הדוגמא
שהכנתי:
מקווה שתבין את הקוד.
אחי! יש קצת בעיה
סליח שכחתי לכתוב בפנים…
יש קצת בעיה כי ההערות בג'בריש…והכותרות ברוסית.
ברשותך….
אני רוצה להבין את ההערות שלך.
הורדת את הדוגמא?
אם כן, תפתח את הקובץ במחשב שלך ולא בשרת החינמי וקוד המקור יהיה עם הערות בעברית ולא ג'יבריש.
העדפתי לכתוב הערות בעברית במקום באנגלית.
אכן הורדתי, פתחתי את הקובץ בדרימווי
דרימוויבר, התוכנה הזו לא משהו עם עברית , יש לך הצעה עם איזה יישום אחר אפשר לפתוח את הקובץ? אולי כתבן? נוטפד? ….
התרשמתי מאוד מהקוד! תודה!
כל כך פשוט ועם זאת עובד כל כך טוב!
notepad
בנוטפד עובד ! הסתדרתי תודה.
הבנת הקוד
(תחילת הקוד)
"אם לא קיים ערך נציג את כל הרשומות"
לפי מיטב הבנתי אם ID=0 אין שום רשומה בטבלה , הלא כן?
אם ערך ה-ID ריק אז זה סימן
שאתה לא מעוניין להציג רשומה אז זה יציג את כל הרשומות.
אם יש משהו בערך ID, למשל 0 הוא יחפש במסד הנתונים את הרשומה עם ה-ID 0.
כמובן שאין רשומה כזו ולכן תקבל שגיאה שהרשומה אינה קיימת.
האם זה בהנחה ששדה ה- ID
אינו מוגדר כ – Autonumber?
זה בהנחה שהוא כן מוגדר
אם הוא 0 זה אומר שאין רשומה כזו ולכן זה סימן להציג את כל הרשומות
משום מה לא נקלט!
כשאומרים לי ID שווה אפס , משום מה אני מדמיין טבלה עם עמודות
ללא נתונים כלל וכלל.
האם זה נכון?
הסבר
אין ID ששווה לאפס כאשר ה- ID ממוספר אוטומטית. ה- ID הראשון הוא 1, וגם אם אין נתונים בשאר העמודות, ה- ID יופיע 1 <ושאר העמודות ריקות>.
כאשר רושמים ID=0 הוא מציג את כל הרשומות שקיימות בטבלה.
על מנת לבדוק אם אין רשומות רושמים את הקוד:
while not rs.eof then
response.Write "יש רשומות"
wend
BOF- מקבל את הערך TRUE כאשר הרשומה הנוכחית ממוקמת לפני הרשומה הראשונה.
EOF- מקבל את הערך TRUE כאשר הרשומה הנוכחית ממוקמת אחרי הרשומה האחרונה.
תוספת קטנה שלי
EOF = End Of Recordset
BOF = Beginning Of Recordset
if rs.eof then
response.write "אין רשומות"
else
response.write "יש רשומות"
end if
שוב אותה שגיאה…האם 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
הכיצד?
כנראה שערכו אכן ריק
אתה צריך להכנס לעמוד בצורה כזו
page.asp?ID=Number
על מנת שתוכל לשלוף את ה-ID הקודם לרשומה הנוכחית.
Number = מספר רשומה
יכול להיות שזה יעבוד
בהנחה ואני מציג את הרשומה הראשונה קודם?
אתה מתכוון שערך ברירת המחדל יהיה
כבר ID=Number ? כלומר כבר ל-ID יהיה ערך ?
אולי לא הבנתי נכון.
העיקרון כאן הוא שה-ID חייב להיות בעל ערך מספרי מסויים.
אתה יכול לעשות משפט תנאי שבודק אם הוא ריק ואז יציב בו את הערך אפס.
ID = Request.QueryString("ID")
If Len(ID) = 0 or IsNumeric(ID) = False Then ID = 0
זה יכול לחסוך ממך את השגיאות בהמשך הקוד.
מה עם הקוד הנ"ל….זה לא יעזור?
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
כן, יעזור אך רק אם אתה מכליל בתוך
משפט התנאי את הקוד ששולף מן הטבלה את ה-ID הקודם והבא, אחרת תשאר עם אותה שגיאה כמו מקודם בגלל שערכו של ID ריק.
איזה משפט אני כותב על מנת שמשתנה ID
יקבל את הערך של הרשומה בטבלה?
תודה.
אם הבנתי אותך נכון אז זה ככה
ID = rs("ID")
תלוי מה שם הרקורדסט שלך ומה שם ה-ID בטבלה (אם הוא שונה מ-ID).
הייתי רוצה שלא יוצגו כל הרשומות בהנ
בהנחה ש- 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
אודה לעזרתכם!!!
למה הוספת את הקוד הזה
SQL = "Select ID from phonenumber"
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open SQL, conn
ID = RS("ID")
RS.close
הוא סתם מיותר והיכן נכנס הערך ID משורת הכתובות ?
אם כן…הורדתי את הקוד הזה ושוב מופ
מופיעה השגיאה הזו, שמשמעותה ID ריק.
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID <'.
כי שוב, ערכו של ID ריק.
לאיזו כתובת אתה נכנס ?? כלומר משהו כזה:
page.asp?ID=number
number = מספר מסויים
עכשיו אני מבין אותך.
כיוונתי אותו לאותה כתובת.
לאותו דף.
אפשר לבצע דבר כזה?
ואם זו הבעיה….מה עלי לשנות בקוד?
היתכן ש- ID העקבות הקריאה לאותה כתובת, ערכו נשאר אותו הדבר ולכן
הרשומות לא "זזות"?
יש לך עמוד דוגמא להציג ?
קצת קשה להבין ממה שאתה מנסה להסביר…
הצבת במשתנה ID את ערכו משורת הכתובות ?
תציג לי למשל את הכתובת אליה אתה נכנס (שם העמוד וההמשך..)
אציג פה את כל הקוד , הוא לא ארוך…
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
שאתה נכנס לעמוד עריכה, ערכו של
ID שווה למשהו או אתה רק נכנס לעמוד רגיל כמו page.asp?
הדף איתו אני עובד הוא UPDATE.ASP
הדף קורא לעצמו…
ואמור להיות בשורת הכתובות
UPDATE.ASP?ID=1
UPDATE.ASP?ID=2
UPDATE.ASP?ID=3
בכל פעם שאלחץ הבא או הקודם…
מקווה שהבנתי אותך, ואתה אותי.
נכון, זה צריך להיות ככה
אבל זה לא ככה ?
בעמוד אליו אתה נכנס אין ערך ID בשורת הכתובות?
סתם נכנסת לעמוד update.asp ללא ערך ?
לא הבנתי כאן מה הבעיה ומה התקלה ומה הקושי.
הרשומות לא "מתגלגלות"…וכרגע אני ת
תקוע עם השגיאה הזו!
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
ובחיי אני לא יודע מה לבדוק.
וכשהדף עבד…הרשומות לא "התגלגלו".
תוכל לראות את הקוד במלואו כמה הודעות לפני. (לא שיניתי אותו בכוונה).
תודה.
סליחה – שורה 27
SQL = " Select top 1 ID from phonenumber where ID < " & ID & " Order By ID "
RS.Open SQL, conn
אך ייתכן כי הבעיה בפקודת ה- REQUEST?
ID = request.QueryString("ID")
אומר שוב הדף קורא לעצמו.
לא נכון.
End Of File
זה לא אמור לקרות אבל אם זה קורה
סימן שאין ערך ב-ID
במקום לפתוח רקורדסט תדפיס את השאילתא ותבדוק אם במשתנה ID קיים ערך
אני אשאל שוב…
מה הכתובת אליה אתה נכנס בעמוד?
ערכו של ID ריק, אחרת לא הייתה מופיעה לך השגיאה.
הנה.
http://localhost/phonebook1/update.asp
זאת הכתובת.
אז אין ID בכתובת
תעשה קוד כזה למשל
if isEmpty(Request.QueryString("id")) then
id = 1
else
id = cInt(Request.QueryString("id"))
end if
כשאני מוסיף את השורות האלו בתחילת ה
הדף עולה, אך הרשומות לא נעות
זה נתקע.
סליחה, השורות מופיעות פה.
SQL = "Select ID from phonenumber"
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open SQL, conn
ID = RS("ID")
RS.close
מה אתה בדיוק מנסה לעשות ??
הצגת כל הרשומות או לקחת ID מרשומה מסויימת ??
אולי אם תפרט אוכל לנסות לעזור לך.
אני בסך הכל מנסה לתקן את השגיאה שמו
שמופיעה לי בדף , אותה שגיאה שמציינת שה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
אוקיי, עכשיו הבנתי אותך על מה אתה
מדבר.
תחליף את הקוד שלך לקוד הבא:
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
הקוד המודגש הוא הקוד ששיניתי והוספתי.
אתה צריך להבין כיצד עושים זאת כיוון שלא יעזור אם אכתוב ל את הקוד אבל לא תבין.
אתה צודק. הקוד הזה מתקדם יחסית לידע
המועט שלי בנושא.
אני מודה לך.
אני כבר הולך לנסות את הקוד אם פועל.
ל – BUILDHOME וכל חברי הפורום
שהתשתפו בשירשור הזה – תודה רבה!
(הקוד עובד……יייייייייהההההההההההההה!!!!!)
<<<תופס במסך ונוגח בו!>>
שמחתי לעזור, בהצלחה בהמשך
גם אני שמחתי לעזור
חזרתי! משום מה כאשר אני מוסיף תיבת
טקסט בנוסף לשתי תיבות הטקסט הרגילות (שם +שם משפחה).
אני מקבל את השגיאה הזו:
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
זה עובד מצויין.
ברגע שאני מוסיף תיבות טקסט (שמקושרות לשאר העמודות במסד הנתונים שלי.).
אני מקבל את השגיאה שלעיל.