שלח תשובה

זירת השאלות

627
צפיות
21
תשובות

השאילתה לא נכונה, למה??

,‏ 25 ביוני, 2006

יש לי 2 טבלאות
1.רשימת ערים (code, trans)
2.רשימת מקרים שקרו בערים (city-מקביל לcode)





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

עשיתי את השאילתה הבאה

sSQL="SELECT trans,code,count(city) FROM Cities,Lectures
where(Lectures.City=Cities.code) and (Lectures.Status BETWEEN 1 AND 4) group by code"
set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sSQL,objConn,3     

קבלתי את הודעת השגיאה הבאה:

Microsoft JET Database Engine error '80040e21'

You tried to execute a query that does not include the specified expression 'trans' as part of an aggregate function.

מה הבעיה בשאילתה???

תגיות:

21 תשובות

  1. yyyy הגיב:

    שליחת מייל לכל החברים במערכת
    יש לי 6000 חברים במסד נתונים. אני רוצה לשלוח לכולם מייל.
    א. האם אפשר/כדאי להשתמש בלולאה וכל פעם להוסיף מייל אחד לרשימת המיילים

    Mail.AddAddress rs("mail")

    או לשלוח לכל אחד בנפרד ז"א לשלוח לאחד ואז לעבור למייל הבא

      Mail.Send
    rs.movenext
    loop

    ב. איך אני מונעת שליחה למיילים לא תקינים? האם אפשר לשלוח משתנה asp לפונקצית js שמאמתת את המייל? מהיכן מזמנים את הפונקציה?

  2. shlomolol הגיב:

    השדה trans לאיזה טבלה שייך?
    את יודעת, האם גם המחשב ידע?

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

    אי אפשר לבצע את השאילתה ככה.
    הכלל הוא מאוד פשוט:
    כאשר משתמשים ב Group by, ניתן לשלוף ב select אך ורק את השדות עליהן בוצע הקיבוץ (כלומר, אלו שמופיעים ב group by), ופונקציות קבוצתיות (sum, avg, max וכד').

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

    שרשרי שאלותיך
    א) אפשרי בהחלט. עם זאת, רצוי לא להוסיף את כולם בשדה הכתובת, אלא בשדה ה bcc. כמו כן, מומלץ לא לשלוח ליותר מדי אנשים בבת אחת, אלא לפצל את השליחה למספר מצומצם, על כל 500 או 1000 איש לשלוח מייל.

    ב) ניתן, ואפילו עדיף, לעבוד ב asp בעזרת שפת js. במידה ואת מעדיפה להשאר עם vbs, זה משאיר לך שתי אופציות: 1 – לתרגם את הבדיקה שיש לך ב js ל vbs ולהשתמש בה, או 2 – לשלב את שתי השפות בצד השרת, דבר שמאוד לא מומלץ לעשות, מכיון שזה מכריח את השרת להתאמץ הרבה יותר.

  5. yyyy הגיב:

    איך אני יכולה להציגבrs את תוצאת
    השאילתה
    אני מעונינת להציג בדף את רשימת הערים וליד כל עיר כמה מקרים קרו בה.


    sSQL="SELECT Cities.trans, count(Lectures.city) FROM Cities,Lectures
    where(Lectures.City=Cities.code) and (Lectures.Status BETWEEN 1 AND 4) group by Cities.trans order by
    count(Lectures.city)"

    איך אני יכולה להדפיס את ה count(Lectures.city) ליד כל עיר?

  6. shlomolol הגיב:

    תני לעמודה שם
    ככה:


    ,count(Lectures.city) as aaa,…
    ..
    rs("aaa")

  7. yyyy הגיב:

    תודה לזהר ולשלומולול זה הלך מצוין

  8. yyyy הגיב:

    הבנתי ממה שזהר כתב שאין אפשרות
    להוסיף עמודה נוספת בשאילתה
    אבל אני צריכה את  Lectures.city לצורך שליחתו לעמוד
    LecturesList.asp?code ="<%=rs("city")%>

    sSQL="SELECT Cities.trans, count(Lectures.city) as cnt, Lectures.city FROM Cities,Lectures
    where(Lectures.City=Cities.code) and (Lectures.Status BETWEEN 1 AND 4) group by Cities.trans order by Cities.trans"
    set rs=Server.CreateObject("ADODB.Recordset")
    rs.Open sSQL,objConn,3     %>
    <%do until rs.eof%>
    [<%=rs("cnt")%>]
    <a class="CityLecture"  href="LecturesList.asp?code="<%=rs("city")%>>    
    <%=rs("trans") %>
    </a>

        

    קבלתי את הודעת השגיאה


    ADODB.Recordset error '800a0cc1'
    Item cannot be found in the collection corresponding to the requested name or ordinal.

  9. yyyy הגיב:

    איך ניתן להתיחס בכל אופן לשדות
    נוספים???

  10. yyyy הגיב:

    שליחת הדואר לא תומך בmail.cc
    והאוביקט גם לא תומך ב-mail.BCC

    עשיתי אוביקט לשליחת דואר עפ"י מה שכתוב באתר וקבלתי את הודעת השגיאה הבאה

    סוג שגיאה:
    ‏‏שגיאת זמן ריצה של Microsoft VBScript (0x800A01B6)
    ‏‏האובייקט אינו תומך במאפיין או בפעולת שירות אלה: 'Mail.BCC'

  11. gilad123 הגיב:

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

    הרעיון הוא כזה, דוגמא: השאילתא מקבצת לפי ערים, כל רשותה בתשובה תכיל את כל הרשומות המתאימות ל where שנמצאות בעיר מסויימת, לצורך הדוגמא 100 מרצים בתל אביב.
    אין בעיה להציג את שם העיר – יש רק שם אחד = תל אביב
    אין בעיה להציג מספר מרצים בעיר – יש רק מספר אחד = 100
    אבל איך אפשר לרשום את שמות המרצים? בשורה של מרצים מתל אביב יש 100 שמות אבל רק תא אחד בו הם אמורים להיות.

  12. yyyy הגיב:

    ניסיתי לעשות כמו שאמרת
    הוספתי לשאילתה
    group by Cities.trans,Lectures.city
    אבל הוא לא הכיר את השדה  rs("city")  

    <%
    sSQL="SELECT Cities.trans, count(Lectures.city) as aaa  FROM Cities,Lectures where(Lectures.City=Cities.code) and (Lectures.Status BETWEEN 1 AND 4) group by Cities.trans,Lectures.city order by Cities.trans"
    set rs=Server.CreateObject("ADODB.Recordset")
    rs.Open sSQL,objConn,3     
    %>
    <a class="CityLecture"                     href="LecturesList_n.asp?code=<%=rs("city") %>">
    <%=rs("trans") %>
    </a>

    קבלתי את הודעת השגיאה
    ADODB.Recordset error '800a0cc1'

    Item cannot be found in the collection corresponding to the requested name or ordinal.

    /site/Lectures_Index_n1.asp, line 70

  13. yyyy הגיב:

    אולי זה לא קשור אבל האם משהו יודע?

    אני רוצה שהתוכנה encoding media שמכווצת סרטים,תתחיל את פעולת הכווץ בשעה שאקבע לה. היא מתחילה את הכווץ רק ע"י לחיצה על לחצן שעליו כתוב start.
    איך אני יכולה לגרום ללחיצה הזו להתרחש באופן אוטומטי ללא לחיצה שלי?

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

    על איזה אובייקט מדובר?
    ד"א, אם בשביל להוסיף נמען ישיר משתמשים ב AddAddress, יש סיכוי לא רע שבשביל להוסיף bcc צריך להשתמש במשהו כזה: addBcc.

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

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

    לגבי השאלה עצמה, זה באמת לא קשור לכאן.

  16. yyyy הגיב:

    א. האוביקט הוא


    Set Mail = Server.CreateObject("Persits.MailSender")

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

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

    אז ככה:
    א) את צריכה להשתמש ב AddBcc, כמו שחשבתי. הקישור הזה יכול מאוד לעזור.

    ב) לא. הנושא נידון בעבר בפורום הזה וגם בפורומים אחרים, ואין לנו כוונה לחרוג מזה.
    כללי השימוש בפורום הזה ברורים ומפורטים, ואנחנו לא חושבים שהם דורשים שינוי.

שלח תשובה