צפיות
תשובות
מקבל שגיאה בבניית דף התחברות
בניתי דף התחברות ב-asp שמתחבר למסד נתונים בשם login ושם לטבלה login וככה הוא מתחבר. אבל הבעיה היא שאני מקבל שגיאה בקשר למסד נתונים.
השגיאה:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
//login.asp, line 3
login.asp
<%
set c=server.createobject("adodb.connection")
c.open "dsn=login;"
set r=server.createobject("adodb.recordset")
r.open "select * from login where user='" & request.form("user") & "' and pass='" & request.form("pass") & "'"
if r.eof and request.cookies("login")<>"yes" then
response.write "<font size=5>Access Denied</font><hr>"
response.end
end if
r.close
response.cookies("login")="yes"
%>
המסד נתונים שפתחתי בשרת שלי (בזק בינלאומי) הוא מסוג
Microsoft Access DSN
17 תשובות
לא הבנתי עד עכשיו…
למה אתה משתמש בחיבור DSN???
תכתוב חיבור רגיל….
כזה:
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source =" & Server.MapPath("dbMyDB.mdb")
ודרך הגב הבעיה היא החיבור…..
אל תשתמש בחיבור DSN!
כי אתה לא יכול להגדיר אותו בשרת שלך…
אתה יכול אבל עליך לבקשה מהתמיכה התכנית של השרת שיפתחו לך חיבור כזה.
בקיצור בלבול מוחחחח…
תעשה רק את החיבור שהבאתי לך…
תודה! אבל כעת יש בעיה חדשה…
הקוד עכשיו:
<%
if not isempty(request.form("user")) then
set c=server.createobject("adodb.connection")
c.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("ASP2PCSpcs.mdb")
set r=server.createobject("adodb.recordset")
r.open "select * from users where user='" & request.form("user") & "' and pass='" & request.form("pass") & "'"
if r.eof and request.cookies("login")<>"yes" then
response.write "<font size=5>Access Denied</font><hr>"
response.end
end if
r.close
response.cookies("login")="yes"
end if
%>
<form method="post">
<center><font size=5>Login</font></center>
<hr>
User name: <input type=text name="user"><br>
Password: <input type=password name="pass"><br>
<input type=submit value="Login">
</form>
ועכשיו הבעיה שהוא אומר היא:
ADODB.Recordset error '800a0e7d'
The connection cannot be used to perform this operation. It is either closed or invalid in this context.
/ASP2/pcs/login.asp, line 7
תודה רבה למי שעזר! בבקשה תעזרו לי עכשיו עם זה…
תנסה לשים…
במקום and ' ,
or
ואם זה עדיין לא יעבוד תעשה ככה:
if r.eof then
if request.cookies("login")<>"yes" then
'code
end if
end if
בעיה במחיקת שורה במסד נתונים
זה הקוד שרשמתי מה הטעות?
set c=server.createobject("adodb.connection")
c.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("ASP2PCSpcs.mdb")
c.execute="delete * from pcs where ID='" & request.querystring("id") & "'"
c.close
set c=nothing
set r=nothing
תודה למי שעזר לי!
תוריד את ה גרש בשאילתת המחיקה…..
הרי ID הוא מספר לא?
אם כן תוריד את הגרש…. רק את הגרשים תשאיר.
השגיאה היא בשורה הזאת:
c.execute "delete from pcs where ID='" & request.querystring("id") & "'"
לא עזר.. זה מה שרשמתי
set c=server.createobject("adodb.connection")
c.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("ASP2PCSpcs.mdb")
c.execute "delete from pcs where ID=" & request.querystring("id")
c.close
set c=nothing
הוא אומר שלא ניתן למחוק מן הטבלה
סליחה על ההצפה בהודעות אבל אין כאן אפשרות עריכה ככה שאין לי ברירה…
בכל אופן הקוד שכתבתי הוא זה:
set c=server.createobject("adodb.connection")
c.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("ASP2PCSpcs.mdb")
c.execute "delete from pcs where ID="&request.querystring("id")
c.close
set c=nothing
response.redirect "pcs.asp"
אבל הוא אומר שלא ניתן למחוק מן הטבלה הזאת… זאת השגיאה:
Microsoft JET Database Engine error '80004005'
Could not delete from specified tables.
כיצד ניתן לשים מרכאות במסד נתונים
אני בונה דף של עדכון במסד נתונים ויש לי בעיה שבאחד מהערכים במסד יש מרכאות-" ואז הם הורסות את הקוד ואני לא יכול לבצע את ההזנה… כיצד ניתן לסדר את זה?
דוגמא לקוד:
<%
set c=server.createobject("adodb.connection")
Set r = Server.CreateObject("ADODB.Recordset")
c.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("ASP2dbdb.mdb")
r.activeconnection=c
SQLstr="UPDATE pcs set maintitle='" & request.form("maintitle") & "' Where ID=" & request.form("id")
c.execute SQLstr
c.close
r.close
set c=nothing
set r=nothing
%>
תעשה replace…
הינה קישור:
אבל אני רוצה שהמרכאות ישארו במסד
אני רוצה שהמרכאות יופיעו במסד הנתונים… איך אפשר לעשות את זה?
אל תתיחסו להודעה הקודמת תתיחסו לזאת
לא הבנתי איזה קוד אני צריך לרשום ואיפה… מישהו יכול לרשום לי את הקוד ולהסביר לי איפה לרשום אותו?
לערכים שאתה רוצה להכניס למסד
תכפיל את המרכאות בעזרת replace, ככה שבמקום " יהיה לך "".
זה יגרום למסד הנתונים (ול VBS) להבין שמדובר במרכאות שהם חלק לגיטימי מהמחרוזת.
נוצרה בעיה חדשה..
כמו שאתם רואים אין לי הרבה מזל… עכשיו יש לי בעיה אחרת… הקוד הוא כמו מקודם זאת השגיאה:
Operation must use an updateable query
אפילו לא הבנתי מה היא אומרת…
אני חושב שהבעיה האחרונה בגלל עברית
יכול להיות שאם אני מנסה להכניס עברית למסד נתונים זה יעשה את הבעיה הזאת? כי ששמתי את הקבצים בשרת אחר אז הוא אפך את העברית לסימני שאלה אבל אז זה עבד… וגם שם המחיקה עבדה…
כיצד מוסיפים נתונים למסד כשיש מספור
אני רוצה להוסיף נתונים לטבלה אבל יש מספור אוטומטי באחד מהשדות מה אני אמור לרשום שם בהכנסה?
אתה משמיט את השדה הזה מהרשימה.
נכון שב Insert יש אופציה לכתיבה מקוצרת, כאשר כותבים רק את הערכים שנכנסים ולא מציינים את רשימת השדות, אבל מומלץ תמיד לכתוב את ה Insert בשיטה הארוכה, ככה יש לך שליטה מוחלטת על הפעולה, מה גם שאם תשנה את מבנה הטבלה לא תאלץ לשנות את ה SQL שלך.