שלח תשובה

זירת השאלות

572
צפיות
13
תשובות

בעיה במערכת פורומים בסיסית

,‏ 13 ביוני, 2009


<%@Language=VBScript codepage=1255%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="rtl">
<head>
<meta http-equiv="content-language" content="he">
<meta http-equiv="content-type" content="text/html; charset=windows-1255">
<title>פורומים</title>
</HEAD>
<BODY link="#0099FF" vlink="#3399FF" alink="#00FFFF">
<CENTER><font style="font-size:12pt;" face="arial"><B>
</FONT>
<font style="font-size:15pt;text-decoration:underline" face="arial">פורום</FONT><font style="font-size:12pt;" face="arial"><font style="font-size:15pt;" face="arial">
</font><BR><BR><BR>
<TABLE BORDER="1" width="100%">
<%
'הצגה מהדטה בייס
Set MyConn = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("forumdata.mdb")
MyConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL_query = "SELECT * FROM cat ORDER BY id DESC"
Set RS = MyConn.Execute(SQL_query)
WHILE NOT RS.EOF
%>
<TR>
<TD bordercolor="#0099FF" bgcolor="#3399FF" bordercolorlight="#33CCCC" bordercolordark="#003399"><font face="Tahoma"></font><B><font face="Tahoma" color="#000066"></font>            <%=RS("Name")%></CENTER></B></font></TD>
</TR>

<%
'הצגה מהדטה בייס
Set MyConn = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("forumdata.mdb")
MyConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL_query = "SELECT * FROM forums WHERE cat='"& RS("Name") &"'"
Set RS = MyConn.Execute(SQL_query)
WHILE NOT RS.EOF
%>

<TR>
<TD>  <A HREF="forum.asp?id=<%=RS("id")%>" title="<%=RS("name")%>"><%=RS("name")%></A></TD>
</TR>

<%
RS.MoveNext
WEND
%>
<%
RS.MoveNext
WEND
%>
</TABLE>
</BODY>
</HTML>


אני יודע שזה קצת ארוך…
זה נותן לי את הארור הבא:


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

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/selekt/images/index.asp, line 48

ניסיתי כבר כל מה שאני יודע ואין לי מושג איך לסדר את זה…
תודה לעוזרים  

תגיות:

13 תשובות

  1. אממ..
    אתה לא יכול להגדיר פעמיים את RS ולשנות אותו אם אתה מצפה ממנו להמשיך לרוץ בלולאה החיצונית…

    בלולאה הפנימית שלך אתה צריך להגדיר משתנה RS שונה.


    אלי ענתבי

  2. BuildHome הגיב:

    תשובה
    כמו שהשפוי ענה לך ולא שמתי לב לתגובתו,
    אין אפשרות להגדיר RS פעמיים כשאתה בלולאה בתוך לולאה, שאגב ממש לא יעילה.

    בעזרת LEFT JOIN אפשר להציג את כל הקטגוריות והפורומים ביחד בשאילתה אחת בלבד, לולאה אחת בלבד.


    "החיים הם רק הדרך במסע הנפש", בילד 2004-2008 <img src='/images/6.gif'>
    http://Www.Torec.Net &nbsp;* http://Www.Torec.In

  3. Firzen66 הגיב:

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

  4. BuildHome הגיב:

    תשובה
    אם אתה מתחיל, אולי מוטב שתמשיך בדרך בה התחלת.
    אתה קודם צריך ללמוד שאילתות JOIN.

    דוגמא לשאילתה:
    SELECT ….. FROM category INNER JOIN forums ON (category.id=forums.cat_id) ORDER BY category.name, forums.name

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

    משהו כזה:


    lastCategory = "" 'לפני תחילת הלולאה
    Do while not rs.EOF
       If lastCategory <> rs("cat_name") Then
           Response.Write rs("cat_name")
           lastCategory = rs("cat_name")
       End If

    Response.Write rs("forum_name") &" <br>"

    rs.MoveNext : Loop

    ככה אפשר לעשות הכל בתוך לולאה אחת וביעילות טובה יותר.
    זו רק דוגמא בסיסית.


    "החיים הם רק הדרך במסע הנפש", בילד 2004-2008 <img src='/images/6.gif'>
    http://Www.Torec.Net &nbsp;* http://Www.Torec.In

  5. Firzen66 הגיב:

    הקוד שנוצר
    <%
    'הצגה מהדטה בייס
    Set MyConn = Server.CreateObject("ADODB.Connection")
    MdbFilePath = Server.MapPath("forumdata.mdb")
    MyConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
    SQL_query = "SELECT * FROM cat INNER JOIN forums ON (cat.ID=forums.Cat) ORDER BY cat.Name, forums.N    ame"
    lastCategory = "" 'לפני תחילת הלולאה
    Do while not rs.EOF (פה נמצאת שורה 22)
       If lastCat <> rs("name") Then
           Response.Write rs("name")
           lastCategory = rs("name")
       End If

    Response.Write rs("name") &" <br>"

    rs.MoveNext : Loop
    %>
    <TR>
    <TD bordercolor="#0099FF" bgcolor="#3399FF" bordercolorlight="#33CCCC" bordercolordark="#003399"><font face="Tahoma"></font><B><font face="Tahoma" color="#000066"></font>            <%=RS("Name")%></CENTER></B></font></TD>
    </TR>

    <TR>
    <TD>  <A HREF="forum.asp?id=<%=RS("id")%>" title="<%=RS("name")%>"><%=RS("name")%></A></TD>
    </TR>
    <%
    RS.MoveNext
    %>
    אבל זה עדיין נותן לי שגיאה כזאת:
    Microsoft VBScript runtime  error '800a01a8'

    Object required: "

    /index.asp, line 22

  6. BuildHome הגיב:

    תשובה
    לא פתחת RS בכלל…


    rs.Open SQL_query, MyConn


    "החיים הם רק הדרך במסע הנפש", בילד 2004-2008 <img src='/images/6.gif'>
    http://Www.Torec.Net &nbsp;* http://Www.Torec.In

  7. Firzen66 הגיב:

    אופס
    הקוד עכשיו כזה:
    <%
    'הצגה מהדטה בייס
    Set MyConn = Server.CreateObject("ADODB.Connection")
    MdbFilePath = Server.MapPath("forumdata.mdb")
    MyConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
    SQL_query = "SELECT * FROM cat INNER JOIN forums ON (cat.ID=forums.Cat) ORDER BY cat.Name, forums.N    ame"
    lastCategory = "" 'לפני תחילת הלולאה
    rs.Open SQL_query, MyConn
    Do while not rs.EOF
       If lastCat <> rs("name") Then
           Response.Write rs("name")
           lastCategory = rs("name")
       End If

    Response.Write rs("name") &" <br>"

    rs.MoveNext : Loop
    %>
    וזה נותן לי את השגיאה הזאת:
    Microsoft VBScript runtime  error '800a01a8'

    Object required: "

    /index.asp, line 22

  8. BuildHome הגיב:

    קצת מוזר
    הוא אומר שגיאה בשורה 22 ומה שהבאת זה רק 18 שורות…

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

    בהצלחה.


    "החיים הם רק הדרך במסע הנפש", בילד 2004-2008 <img src='/images/6.gif'>
    http://Www.Torec.Net &nbsp;* http://Www.Torec.In

  9. BuildHome הגיב:

    תשובה
    אתה הגדרת בכלל RS…. ?
    תחליף את השורה לזאת:

    Set rs = MyConn.Execute(SQL_query)


    "החיים הם רק הדרך במסע הנפש", בילד 2004-2008 <img src='/images/6.gif'>
    http://Www.Torec.Net &nbsp;* http://Www.Torec.In

שלח תשובה

חדש! אחסון אתרים של וובמאסטר

שירות אחסון אתרים
המקצועי של וובמאסטר!

מומחים באירוח אתרי
WordPress, Joomla, Drupal

  • שרתי לינוקס עם CloudLinux, LiteSpeed
  • 1GB דיסק SSD, 10GB תעבורה חודשית
  • ממשק ניהול cPanel, תעודת SSL חינם

עכשיו במחיר היכרות:
רק 420 ש"ח לשנה!