שלח תשובה

זירת השאלות

517
צפיות
26
תשובות

צריך עזרה בנושא מסדי נתונים – קובץ

,‏ 9 בדצמבר, 2004

חיבור.
עכשיו, יש לי את הקוד הבא:
<%
Set Con = Server.CreateObject( "ADODB.Connection" )
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ='../database/database.mdb'"
%>

והוא של קובץ חיבור למסד הנתונים שלי, ביצעתי אינקלוד לקובץ ההרשמה שלי ומופיע לי שגיאה (עשיתי בקובץ ההרשמה שאילתת Insert):
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0xd9c Thread 0xba0 DBC 0x22f3c44 Jet'.

/sources/includes/conn.asp, line 3

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

תגיות:

26 תשובות

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

    הוא לא מוצא את המסד…
    בפעם הבאה ישר קודים והודעות שגיאה לשמאל (ליד הסמל של הסמיילים)

  2. העקרב הגיב:

    רגע…
    אם נגיד יש בתוך התקיה sources את התקיה includes ואת התקיה database
    ואני רוצה לגשת מהקובץ חיבור שנמצא בincludes למסד שנמצא בתקיה database אני עושה ככה:

    ../database/db.mdb

    ?

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

    תשתמש ב-Server.MapPath
    כי שורת החיבור מצפה לקבל כתובת אבסולוטית למסד שלך (כתובת מה-HD שבו הוא נמצא – c:folder\file.mdb)
    בקשר לשאלתך השנייה אז התשובה היא לא.
    כיוון שבאינקלוד התוכן של הקובץ מוכנס לתוך קובץ אחר ואז מרונדר.
    במקרה הזה עליך לעשות את הדבר הזה:


    DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/database/database.mdb")&";"

    בהנחה שהתיקייה DataBase היא נמצאת בתוך התיקייה הראשית של האתר.

  4. העקרב הגיב:

    היא נמצאת בתת התקיה הראשית שהיא:
    sources..
    אני אנסה מה שאמרת, תודה.

  5. העקרב הגיב:

    שגיאה חדשה.
    הנה השגיאה החדשה:


    Microsoft VBScript compilation error '800a0408'

    Invalid character

    /sources/includes/conn.asp, line 3

    DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database/database.mdb")&";"
    ——-^

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

    הרעיון היה שתחליף את החלק
    שאתה כתבת במה שנאי כתבתי (לא את הכל רק את החלק שמתייחס לזה (זורת החיבור)

  7. העקרב הגיב:

    יכול להיות שאם אני אשתמש בJET זה
    יעבוד לי?

  8. העקרב הגיב:

    יופי 🙂 עובד לי… אבל יש לי שגיאה
    חדשה….
    הנה השגיאה החדשה:


    Microsoft VBScript runtime error '800a01a8'

    Object required: 'conn'

    /sources/register.asp, line 19

    הנה הסקריפט שלי:


    <!– #include file="includes/conn.asp" –>
    <%    

                    user = Request.Form("username")
                    pass = Request.Form("password")
                    email = Request.Form("email")
                    adress = Request.Form("siteadd")
                    description = Request.Form("description")
                    banner = Request.Form("banner")

          SQLstr="INSERT INTO users (username,password,email,siteaddress,banner)"
          SQLstr= SQLstr & " VALUES ('" & user & "','"
          SQLstr= SQLstr & pass & "','"
          SQLstr= SQLstr & email & "','"
          SQLstr= SQLstr & adress & "','"
          SQLstr= SQLstr & banner & "','"
          SQLstr= SQLstr & description & "')"
          conn.Execute SQLstr
          conn.Close
          Set conn = Nothing
    %>

    (מתחתיו יש ת'טופס..)
    תודה לעוזרים.

  9. העקרב הגיב:

    עידכון של הקוד והשגיאה.
    קוד:


    <!– #include file="includes/conn.asp" –>
    <%    

                    user = Request.Form("username")
                    pass = Request.Form("password")
                    email = Request.Form("email")
                    adress = Request.Form("siteadd")
                    description = Request.Form("description")
                    banner = Request.Form("banner")

          SQLstr="INSERT INTO users (username,password,email,siteaddress,banner)"
          SQLstr= SQLstr & " VALUES ('" & user & "','"
          SQLstr= SQLstr & pass & "','"
          SQLstr= SQLstr & email & "','"
          SQLstr= SQLstr & adress & "','"
          SQLstr= SQLstr & banner & "','"
          SQLstr= SQLstr & description & "')"
          objconn.Execute SQLstr
          objconn.Close
          Set objconn = Nothing
    %>

    שגיאה:

    Microsoft JET Database Engine error '80040e14'

    Syntax error in INSERT INTO statement.

    /sources/register.asp, line 19


    ושוב, תודה לעוזרים.

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

    password זו מילה שמורה
    או שתקיף אותה בכל שאילתא עם [] או שתחליף את השם של השדה בשם אחר.

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

    ב SQL יש מילים שמורות
    בהן אתה לא יכול להשתמש בתור שמות לעמודות, לרשימת המילים השמורות.

    אם אתה בכל זאת רוצה להשתמש במילים האילו, אתה צריך להקיף את שם השדה בסוגריים מרובעים:


          SQLstr="INSERT INTO users ([username],[password],[email],[siteaddress],[banner])"
          SQLstr= SQLstr & " VALUES ('" & user & "','"
          SQLstr= SQLstr & pass & "','"
          SQLstr= SQLstr & email & "','"
          SQLstr= SQLstr & adress & "','"
          SQLstr= SQLstr & banner & "','"
          SQLstr= SQLstr & description & "')"

  12. העקרב הגיב:

    עוד שגיאה… חדשה..


    Number of query values and destination fields are not the same.

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

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

  14. העקרב הגיב:

    זהו ש….
    היבנתי, אבל הבעיה, שיש בדיוק אותו מס'…

  15. העקרב הגיב:

    סוריי טעות שלי..
    סקריפט:


    Microsoft JET Database Engine error '80040e14'

    The INSERT INTO statement contains the following unknown field name: "username". Make sure you have typed the name correctly, and try the operation again.

    /sources/register.asp, line 19

    שגיאה:

    Microsoft JET Database Engine error '80040e14'

    The INSERT INTO statement contains the following unknown field name: "username". Make sure you have typed the name correctly, and try the operation again.

    /sources/register.asp, line 19

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

  16. העקרב הגיב:

    טעות בקוד:
    מצטער שאני משגע אתכם :S

    <!– #include file="includes/conn.asp" –>
    <%    

                    user = Request.Form("username")
                    pass = Request.Form("password")
                    email = Request.Form("email")
                    adress = Request.Form("siteadd")
                    description = Request.Form("description")
                    banner = Request.Form("banner")

          SQLstr="INSERT INTO users (['username'],['password'],[’email'],['siteaddress'],['banner'],['description'])"
          SQLstr= SQLstr & " VALUES ('" & user & "','"
          SQLstr= SQLstr & pass & "','"
          SQLstr= SQLstr & email & "','"
          SQLstr= SQLstr & adress & "','"
          SQLstr= SQLstr & banner & "','"
          SQLstr= SQLstr & description & "')"
          objconn.Execute SQLstr
          objconn.Close
          Set objconn = Nothing
    %>

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

    שמות העמודות לא צריכות להיות מוקפות
    בגרש…


    [username]
    ולא
    ['username']

  18. העקרב הגיב:

    עובד, אפשר לשאול עוד שאלה?
    יש לי תנאים בJS, עכשיו, משום מה רק התנאי על username והתנאי על email עובד… הנה הסקריפט:

    function check()
    {
      var err;
      
      err="השגיאות שלך הן:";

      if (document.reg.username.value=="")
      {
        err=err+ "n לא הזנת שם משתמש";
      }
      
      if (document.reg.password.value=="")
      {
        err=err+ "n לא הזנת ססמא";
      }

      if (document.reg.email.value!=document.reg.email2.value)
      {
      err=err+ "n האימיילים אינם תואמים";
      }
      
      if (document.reg.password.value!=document.reg.password2.value)
      {
      err=err+ "n הססמאות אינן תואמות";
      }

      if (document.reg.email.value=="" || document.reg.email.value.indexof('@')==-1)
      {
        err=err+ "n לא הזנת כתובת דואר אלקטרוני או כתובת לא תקינה";
      }
      if (document.reg.siteadd.value=="")
      {
        err=err+ "n  לא הזנת את כתובת האתר";
      }

      if (document.reg.banner.value=="")
      {
        err=err+ "n לא העלת באנר";
      }

      if (document.reg.description.value=="")
      {
        err=err+ "n לא הזנת תיאור";
      }

      if (document.reg.username.value!="" && document.reg.description.value!="" && document.reg.siteadd.value!="" && document.reg.email.value!="" && document.reg.password.value!="" && document.reg.password2.value!="" && document.reg.email2.value!="" && document.reg.banner.value!="")
      {
        err="";
      }

      if (err!="")
      {
        
        alert(err);
        return false;
      }
      else
    {
      return true;
      }
    }

    תודה לעוזרים.

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

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

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

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

    בנוסף, תרשה לי לתת לך טיפ קטן – תלמד להשתמש ביכולות של השפה.
    תבנה לך פונקציה שמקבלת מחרוזת ובודקת האם היא ריקה, ובהתאם לזה מחזירה true או false. זה יחסוך לך קצת קוד. תבנה לך פונקציה שמשווה בין שתי מחרוזות, על אותו עקרון.
    תלמד מאפיינים קצת יותר מתקדמים של השפה, כמו regExp (יש מדריך למתחילים ב regExp באתר, במאמרים של מדור js)

שלח תשובה