472
צפיות
צפיות
11
תשובות
תשובות
שאלה נוספת
אני בונה מערכת סקרים, ואני רוצה לדעת כמה אנשים סה"כ הצביעו בסקר מסוים.
אז אני בונה את הקוד הבא:
id = request.querystring("id")
set rscounter = Server.CreateObject("ADODB.recordset")
sql2 = "select * from pl_answer where question_id = " & id
rscounter.open sql2,conn
counterhits=rscounter.recordcount
וכשאני מריץ, אני מקבל את השגיאה הבאה:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] שגיאת תחביר (אופרטור חסר) בביטוי השאילתה 'question_id ='.
/cms/PollResults.asp, line 17
שורה 17: rscounter.open sql2,conn
11 תשובות
מצטער, זה היה אמור להשתרשר
לנושא שכבר יש לי בדף זה…
אני לא יודע איך המערכת שלך בנויה,
אבל אני הייתי סופר את מס' ההצבעות עם פונקצית SUM במסד נתונים
דוגמה:
SELECT
SUM (PollVoters)
FROM
TBL_Poll_Questions
WHERE
PollID = x
PollVoters – שדה שמכיל את מס' ההצבעות לאותה תשובה
PollID – מס' הסקר.
יחזיר לך את מס' ההצבעות לסקר x.
מומלץ לעבוד עם זה בעיקר כשאתה עובד עם מסד חזק.. כמו SQL SERVER, שם אתה יכול לקבל את השאלה, התשובות ומס' ההצבעות לאותה תשובה ובכלל עם SP אחד.
אם אתה עובד עם מסד נתונים אחר, עדיף לספור את הקולות בדף עצמו.
מה שאתה עשית – counterhits=rscounter.recordcount לא נכון, כי הוא יחזיר לך את מס' התשובות שקיימות לשאלה מסויימת, לא מס' ההצבעות.
כדי לספור את מס' ההצבעות תעבור על המערך שמתקבל מהרקורדסט ותוסיף את מס' ההצבעות באותה שאלה למשתנה שיכיל את מס' ההצבעות הכולל.
הבנתי תודה. עוד משהו
אני רוצה לקרוא נתונים מ-4 טבלאות שונות בדף אחד.
כשאני קורא מטבלה אחת ופותח את הרקדורסט הכל טוב.
ברגע שאני מנסה לפתוח רקורדסט נוסף, ככה:
set rs=server.CreateObject("adodb.recordset")
sql="select * from group order by points"
rs.Open sql
אחרי שלפני זה עשיתי rs = nothing
אני מקבל את השגיאה הבאה:
Error Type:
ADODB.Recordset (0x800A0E7D)
אין אפשרות להשתמש בחיבור כדי לבצע פעולה זו. חיבור זה סגור או שאינו חוקי בהקשר זה.
/israel/menu2.asp, line 54
כיצד ניתן לפתור את הבעיה?
לא ככה
set rs = server.CreateObject ("adodb.recordset")
rs.open sql, akDb
…
rs.close
rs.open sql2, akDb
…
rs.close
rs.open sql3, akDb
rs.close
set rs = nothing
כמה דברים
1. אם אתה בונה מערכת סקרים תעשה רשומה עבוד כל סקר עם סוכם הצבעות שאותו תעלה כל פעם שמישהו מצביע ב-1 – יותר הגיוני מאשר לשמור שורות רבות ב DB שרושמות כל הצבעה.
2. בנוגע לבעיה שלך: תבדוק שאכן עבר id (תעשה את זה ע"י הדפסת השאילתא שלך למסך ותראה מה היא מכילה). והאם id שלך הוא שדה מספר? אם לא אתה צריך לתחום אותו בין "
בקשר לזה
אני יכול לפתוח רקורדסט אחד לפני שאני סוגר את השני?
ונגיד אני רוצה לעשות כמה שאילתות, אז איך?
כאילו כככה?
set rs = server.createobject("adodb.recordset")
sql = "select * from tbl"
rs.open sql
————–
rs.close
sql2 = "select * from tbl2"
rs2.open sql2
—————-
כן, אתה יכול
אבל בשם אחר… מה שלא מומלץ אם לא חייבים.
בקשר ל recordcount
ראיתי שיש את הבעיה הזאת לעוד כמה ולא הצלחתי לפתור:
כשאני מנסה להדפיס את הערך שאני מקבל ב recordcount אני מקבל 1-…
תשובה
rscounter.open sql2,conn,3,1
יש אפילו FAQ על זה אם אני לא טועה..
שגיאה
Error Type:
ADODB.Recordset (0x800A0BB9)
הארגומנטים הם מסוג שגוי, נמצאים מחוץ לטווח הקביל או מתנגשים אלה באלה
וזה הקוד הרלוונטי:
<%
sql2="select * from comments where id = " & id
rs.open sql2,3,1
counter = rs.recordcount
rs.close
%>
אם אני מוריד את ה 3,1 אז אני מקבל את ה1-…
שאלה על response.reidrect
האם בפקודה response.redirect אפשר לפתוח את החלון בגודל מסוים בוחלון חדש? כאילו לתת פקודה של window.open?