627
צפיות
צפיות
21
תשובות
תשובות
השאילתה לא נכונה, למה??
יש לי 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 תשובות
שליחת מייל לכל החברים במערכת
יש לי 6000 חברים במסד נתונים. אני רוצה לשלוח לכולם מייל.
א. האם אפשר/כדאי להשתמש בלולאה וכל פעם להוסיף מייל אחד לרשימת המיילים
Mail.AddAddress rs("mail")
או לשלוח לכל אחד בנפרד ז"א לשלוח לאחד ואז לעבור למייל הבא
Mail.Send
rs.movenext
loop
ב. איך אני מונעת שליחה למיילים לא תקינים? האם אפשר לשלוח משתנה asp לפונקצית js שמאמתת את המייל? מהיכן מזמנים את הפונקציה?
השדה trans לאיזה טבלה שייך?
את יודעת, האם גם המחשב ידע?
שיך לטבלה של הערים
אי אפשר לבצע את השאילתה ככה.
הכלל הוא מאוד פשוט:
כאשר משתמשים ב Group by, ניתן לשלוף ב select אך ורק את השדות עליהן בוצע הקיבוץ (כלומר, אלו שמופיעים ב group by), ופונקציות קבוצתיות (sum, avg, max וכד').
א) אפשרי בהחלט. עם זאת, רצוי לא להוסיף את כולם בשדה הכתובת, אלא בשדה ה bcc. כמו כן, מומלץ לא לשלוח ליותר מדי אנשים בבת אחת, אלא לפצל את השליחה למספר מצומצם, על כל 500 או 1000 איש לשלוח מייל.
ב) ניתן, ואפילו עדיף, לעבוד ב asp בעזרת שפת js. במידה ואת מעדיפה להשאר עם vbs, זה משאיר לך שתי אופציות: 1 – לתרגם את הבדיקה שיש לך ב js ל vbs ולהשתמש בה, או 2 – לשלב את שתי השפות בצד השרת, דבר שמאוד לא מומלץ לעשות, מכיון שזה מכריח את השרת להתאמץ הרבה יותר.
איך אני יכולה להציגב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) ליד כל עיר?
תני לעמודה שם
ככה:
,count(Lectures.city) as aaa,…
..
rs("aaa")
תודה לזהר ולשלומולול זה הלך מצוין
הבנתי ממה שזהר כתב שאין אפשרות
להוסיף עמודה נוספת בשאילתה
אבל אני צריכה את 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.
איך ניתן להתיחס בכל אופן לשדות
נוספים???
שליחת הדואר לא תומך בmail.cc
והאוביקט גם לא תומך ב-mail.BCC
עשיתי אוביקט לשליחת דואר עפ"י מה שכתוב באתר וקבלתי את הודעת השגיאה הבאה
סוג שגיאה:
שגיאת זמן ריצה של Microsoft VBScript (0x800A01B6)
האובייקט אינו תומך במאפיין או בפעולת שירות אלה: 'Mail.BCC'
להכניס אותו ל group by
לא קראתי את כל השירשור אבל הכלל הוא כזה:
ברגע שמשתמשים ב group by, כל שדה שפונים אליו צריך להיות מופיע ב group by או שמופעלת אליו פונקציה סטטיסטית.
הרעיון הוא כזה, דוגמא: השאילתא מקבצת לפי ערים, כל רשותה בתשובה תכיל את כל הרשומות המתאימות ל where שנמצאות בעיר מסויימת, לצורך הדוגמא 100 מרצים בתל אביב.
אין בעיה להציג את שם העיר – יש רק שם אחד = תל אביב
אין בעיה להציג מספר מרצים בעיר – יש רק מספר אחד = 100
אבל איך אפשר לרשום את שמות המרצים? בשורה של מרצים מתל אביב יש 100 שמות אבל רק תא אחד בו הם אמורים להיות.
ניסיתי לעשות כמו שאמרת
הוספתי לשאילתה
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
תרשום את city גם ב select
אולי זה לא קשור אבל האם משהו יודע?
אני רוצה שהתוכנה encoding media שמכווצת סרטים,תתחיל את פעולת הכווץ בשעה שאקבע לה. היא מתחילה את הכווץ רק ע"י לחיצה על לחצן שעליו כתוב start.
איך אני יכולה לגרום ללחיצה הזו להתרחש באופן אוטומטי ללא לחיצה שלי?
על איזה אובייקט מדובר?
ד"א, אם בשביל להוסיף נמען ישיר משתמשים ב AddAddress, יש סיכוי לא רע שבשביל להוסיף bcc צריך להשתמש במשהו כזה: addBcc.
זו פעם אחרונה שאני משרשר לך שאלה.
השרשור הבא שאת פותחת כאשר יש לך כבר שרשור בדף הראשי ימחק ללא אזהרה נוספת.
לגבי השאלה עצמה, זה באמת לא קשור לכאן.
א. האוביקט הוא
Set Mail = Server.CreateObject("Persits.MailSender")
ב.זהר, אתה לא חושב שאם מדובר על שאלה אחרת (לא בנושא של השאלה הראשונה)
יהיה אפשרות לא לשרשר את השאלה. אנשים שנכנסים חושבים שזה המשך של השאלה הקודמת ואולי לא מגיבים בגלל זה…
ניסיתי זה לא עבד
אז ככה:
א) את צריכה להשתמש ב AddBcc, כמו שחשבתי. יכול מאוד לעזור.
ב) לא.
נידון בעבר וגם בפורומים אחרים, ואין לנו כוונה לחרוג מזה.ברורים ומפורטים, ואנחנו לא חושבים שהם דורשים שינוי.