שלח תשובה

זירת השאלות

567
צפיות
17
תשובות

מקבל שגיאה בבניית דף התחברות

,‏ 24 ביוני, 2005

בניתי דף התחברות ב-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 תשובות

  1. somebody הגיב:

    לא הבנתי עד עכשיו…
    למה אתה משתמש בחיבור DSN???
    תכתוב חיבור רגיל….
    כזה:


    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;
        Data Source =" & Server.MapPath("dbMyDB.mdb")

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

  2. PhoenixBoy הגיב:

    תודה! אבל כעת יש בעיה חדשה…
    הקוד עכשיו:


    <%
    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

    תודה רבה למי שעזר! בבקשה תעזרו לי עכשיו עם זה…

  3. somebody הגיב:

    תנסה לשים…
    במקום and ' ,
    or
    ואם זה עדיין לא יעבוד תעשה ככה:


    if r.eof then
    if request.cookies("login")<>"yes" then
    'code
    end if
    end if

  4. PhoenixBoy הגיב:

    בעיה במחיקת שורה במסד נתונים
    זה הקוד שרשמתי מה הטעות?

    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

    תודה למי שעזר לי!

  5. somebody הגיב:

    תוריד את ה גרש בשאילתת המחיקה…..
    הרי ID הוא מספר לא?
    אם כן תוריד את הגרש…. רק את הגרשים תשאיר.

  6. PhoenixBoy הגיב:

    השגיאה היא בשורה הזאת:


    c.execute "delete from pcs where ID='" & request.querystring("id") & "'"

  7. PhoenixBoy הגיב:

    לא עזר.. זה מה שרשמתי


    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

  8. PhoenixBoy הגיב:

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


    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.

  9. PhoenixBoy הגיב:

    כיצד ניתן לשים מרכאות במסד נתונים
    אני בונה דף של עדכון במסד נתונים ויש לי בעיה שבאחד מהערכים במסד יש מרכאות-" ואז הם הורסות את הקוד ואני לא יכול לבצע את ההזנה… כיצד ניתן לסדר את זה?
    דוגמא לקוד:


    <%
    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
    %>

  10. PhoenixBoy הגיב:

    אבל אני רוצה שהמרכאות ישארו במסד
    אני רוצה שהמרכאות יופיעו במסד הנתונים… איך אפשר לעשות את זה?

  11. PhoenixBoy הגיב:

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

  12. זהר פלד הגיב:

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

  13. PhoenixBoy הגיב:

    נוצרה בעיה חדשה..
    כמו שאתם רואים אין לי הרבה מזל… עכשיו יש לי בעיה אחרת… הקוד הוא כמו מקודם זאת השגיאה:
    Operation must use an updateable query

    אפילו לא הבנתי מה היא אומרת…

  14. PhoenixBoy הגיב:

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

  15. PhoenixBoy הגיב:

    כיצד מוסיפים נתונים למסד כשיש מספור
    אני רוצה להוסיף נתונים לטבלה אבל יש מספור אוטומטי באחד מהשדות מה אני אמור לרשום שם בהכנסה?

  16. זהר פלד הגיב:

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

שלח תשובה