שלח תשובה

זירת השאלות

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

בעיה בהשוואה…

,‏ 24 באוקטובר, 2005

שוב שלום,

אני מנסה להריץ שאילתה בעלת השוואה אשר נעשת בעזרת WHERE.

ובזמן שאני מריץ את השאילתה, אני מקבל את השגיאה הבאה:


Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.

/david/SPanel/Login2.asp, line 29

מה אני צריך לעשות?
הנה הקוד הרלוונטי (שורה 28-29)

                            sql = "select User, Pass From Admins Where Username = '" & User & "'"
                            rsLogin.Open sql, conn




תודה, דוד.

תגיות:

26 תשובות

  1. adventureboy הגיב:

    תנסה
    לכתוב [Pass].
    ואם לא עובד לשנות את השם של השדה הזה.

    לא בטוח לגבי שם השדה user אבל גם לא כדאי לשמור את שם השדה כך

  2. David2255 הגיב:

    רגע!! מצאתי את הטעות.
    בהשוואה רשמתי Username כי החלפתי מUser, ושכחתי לשנות בשליפה.

  3. adventureboy הגיב:

    תנסה…
    קודם כל תראה את הקוד המעודכן שעליו אתה מדבר.

    שנית, מה שאתה יכול לנסות לעשות זה להדפיס את השאילתא למסך ולנסות להריץ אותה באקסס (או באיזה מס"ד שאיתו את עובד) ולראות את מקור הבעיה בצורה מדוייקת יותר.

  4. David2255 הגיב:

    תגובה
    ראשית, הנה הקוד:

                                sql = "select Username, Password From Admins Where Username = '" & User & "'"
                                rsLogin.Open sql, conn

    שנית, לא הבנתי למה התכוונת… ואני עובד על SQL SERVER..

  5. adventureboy הגיב:

    מממ…
    מה שהצעתי הוא שתדפיס את השאילתא במופקת למסך שלך ותעתיק אותה להרצה בתוך תוכנת ms sql שאיתה אתה עובד. אם יש בה משהו שגוי התוכנה תוכל לתת לך יותר פרטים על כך.

    תבדוק ותרשום נא מה סוגי השדות שהגדרת לכל אחד מהשדות איתם אתה מנסה לעבוד.

  6. David2255 הגיב:

    שניהם טקסט
    הרצתי בתוכנה וזה עבד טוב…

  7. adventureboy הגיב:

    מוזר….
    ממש מוזר.
    תנסה אולי לכתוב את השאילתא בצורה כזו:


    sql = "select [Username], [Password] From Admins Where Username = '" & User & "'"
    rsLogin.Open sql, conn

    האם שאילתות אחרות שאתה מנסה להריץ דרך ASP מחזירות תשובה?

  8. David2255 הגיב:

    אז ככה,
    הדפסתי את הערך של User ועבד טוב.
    הדפסתי את השאילתה על המסך ( Response.Write sql ) ויצא:


    select Username, Password From Admins Where Username = 'SSS'

    ניסיתי להריץ אותה כמו שאמרת ועדיין אותו הדבר.

    לאומת זאת, שאילתות של INSERT וSELECT אחרות עובדות לי מצויין.
    לדעתי מה שמזיק זה השימור בWHERE, אבל אני לא מוצא תחליף לWHERE בשביל Login….
    באמת מוזר  

  9. adventureboy הגיב:

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

    לפי דעתי תנסה לשנות את שמות השדות ולעשות את השינוי בשאילתא בהתאם. הייתי מנסה אפילו לשנות את שם הטבלה Admin למשהו אחר.
    פשוט תוסיף לידם את הספרה 1 או משהו.

  10. adventureboy הגיב:

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

  11. David2255 הגיב:

    בבקשה.
    הקוד במלואו מצורף בקובץ טקסט…
    והחיבור למסד נמצא בקובץ Conn.asp שמוכלל בקובץ הנ"ל.

  12. David2255 הגיב:

    זה מציג את התוכן HTML שבו, אז תעשה
    view source או קוד מקור…

  13. David2255 הגיב:

    הבעיה נפתרה!
    פשוט בWhere עם SQL SERVER צריך לרשום במקום: Where bla = 'bla' את השורה:
    Where bla LIKE 'bla'

  14. adventureboy הגיב:

    LIKE
    בעקרון LIKE מבצע את מה ששווה (=) מבצע. אבל אין סיבה שסימן השווה לא יעבוד ב ms sql server.

    אבל העיקר שנפתר

  15. David2255 הגיב:

    איך אני מצפין קוקיס?
    מישהו בבקשה יכול לתת לי דוגמא של הצפנת קוקיס? תודה!

    ד"א לא שירשרתי כי שלחתי פעמיים לשירשור וזהל א הוסיף כלום…

  16. David2255 הגיב:

    השאלה הזאת לא תקפה 🙂 שאלה חדשה…
    שלום… מצטער שאני נאג'ס 😀

    טוב אז ככה, אני מנסה להוסיף 1 לID שאני שולף מהמסד ולהכניס לעמודה חדשה, ואני מקבל שגיאה.
    השגיאה:


    Microsoft VBScript runtime error '800a000d'

    Type mismatch

    קוד רלוונטי:


    sql = sql & rsCHK("ID")+1 & ")"

  17. adventureboy הגיב:

    cint
    תשתמש בפונקציה cint


    sql = sql & cint(rsCHK("ID"))+1 & ")"

    ואל תדאג, מלהיות נאג'ס לומדים

  18. David2255 הגיב:

    עוד אחת
    שלפתי עם SELECT עמודות מטבלה שלמה, וישנן 3 עמודות אשר אני לא מצליח להדפיס אותן:
    Service
    Phone
    CellPhone

    שום שגיאה ושום כלום, פשוט לא מדפיס לי.
    ניסיתי להריץ את השאילתה בתוכנה ושם השדות הנ"ל מופיעים.
    בPhone וCellPhone יש תנאי IF כי אותם לא חייב למלא, והוא רושם "לא הוזן" במקרה שהם לא הוזנו, ושאני לא מזין, זה מציג לי לא הוזן, הנה הקודים (הקודים של פון וסלפון אני מביא על התנאי):


    Service:

                        <td class="WB"><%=rsList("Service") %></td>

    Phone:

                    If rsList("Phone") <> "אין" Then
            %>
                        <td class="WB"><%=rsList("Phone") %></td>
            <%
                    Else
            %>
                        <td class="WB">לא הוזן</td>
            <%
                    End If

    CellPhone:

            <%
                    If rsList("CellPhone") <> "אין" Then
            %>
                        <td class="WB"><%=rsList("CellPhone") %></td>
            <%
                    Else
            %>
                        <td class="WB">לא הוזן</td>
            <%
                    End If

    תודה רבה לכל מי שעוזר עזר ויעזור לי  

  19. David2255 הגיב:

    גיליתי שזה בעיה בטבלה, אז לא חשוב
    כי זה לא קשור לפה

    נדבקתי לסמיילי  

שלח תשובה