425
צפיות
צפיות
13
תשובות
תשובות
ריבוי שאילתות ב recordset אחד
איך אני בונה כמה משפטי select כלומר 2 ומעלה באותו recorset באותו דף asp בלי לפתוח עוד ועוד recordset ?
איך אני בונה כמה משפטי select כלומר 2 ומעלה באותו recorset באותו דף asp בלי לפתוח עוד ועוד recordset ?
13 תשובות
JOIN, UNION…
יש אפשרויות רבות ומגוונות
השאלה היא מהן השאילתות, מה תפקידן והאם יש בכלל צורך לאחדם לשאילתא אחת ? (ענייני גמישות ויעילות).
מפני ש
איו קשר בין השאילתות חלקן כבר מורכבות מ join המטרה היא לשלוף את הכל כדי שלא יפתח יותר מ recordset אחד בדף כי זה גרם לי לבעיות אני חייב שיפתח רק אחד.
עכשיו השאלה שלי היא במידה ואני פותח recordset אחד בשם x לדוגמא ואני כל הזמן נותן לן שאילתא אחרת ופותח וסוגר אותו ושוב ושוב… האם יש הבדל בין זה לפתיחה של מספר recordset שונים?
כן, יש הבדל.
כל יצירה של אובייקט (כלומר, כל Server.createObject ב VBS או new activeX ב JS) לוקחת משאבים מהשרת. ברגע שאתה יוצר אובייקט recordset אחד, אין שום סיבה בעולם ליצור עוד אובייקטים כאלו.
אם אתה צריך שאילתה שעובדת לפי ערכים משאילתה אחרת, ואי אפשר לבצע join, מה שעושים זה פותחים את ה recordset, משתמשים ב getRows או ב getString, סוגרים את ה recordset ואז פותחים אותו מחדש.
למעשה, יש דברים שלפעמים עדיף לעשות אותם בסקריפט טהור, אפילו שיש אובייקטים שיודעים לעשות אותם, כי היצירה של האובייקט גוזלת יותר משאבים מאשר הפעולה בלעדיו.
בקשר ל getRows
אז הכי כדאי זה לפתוח recordset אחד, להכניס את התוכן הנשלף למערך בעזרת getRows, לסגור את ה recordset ואז אם אני רוצה לשלוף מאוד טבלאות לפתוח שוב את אותו recordset ולהכניס את המידע למערך אחר, שוב לסגור וכן הלאה?
עוד משהו קטן בקשר לזה
לאחר כל סגירה אני מחדש צריך משתנה ששווה ל Server.CreateObject("ADODB.Recordset") ?
אם לא אני נראה לי אקבל שגיאה שהוא לא מוצא את האוביקט אני צודק?
ככה שכן עושים Server.CreateObject("ADODB.Recordset") אבל לאותו אוביקט מחדש ולא לעוד אוביקטים…
כן ולא.
כן לשאלה על ה getRows,
לא לשאלה השניה.
סגירה של recordset בעזרת המתודה close לא הורגת את האובייקט, אלא רק סוגרת אותו. את אותו אובייקט אפשר לפתוח אחר כך מחדש עם שאילתה אחרת, בלי שום בעיה.
מה שהורג את האובייקט הוא set objRs = nothing.
זוהר תודה רבה רק דבר קטנטן נוסף
ניסיתי לחפש ולא מצאתי: מה השורה או כמה שורות שבעזרתן אני מודד את המהירות שהדף נטען כמו שיש בדוגמה של ה getRows פה באתר ?
שאלה בקשר להתקנת IIS על XP Home Ed
אני לא מוצא את הקובץ sysoc.inf שצריך לערוך אותו. מישהו יכול אולי לומר לי איפה זה אמור להיות (זה לא במחשב שלי) או לצרף אותו לפה?
אתה יכול לנסות אבל לא תצליח בחיים
להתקין iis על XP home.
לא ניתן לא משנה מה תעשה..
XP home לא תומכת במספר משתמשים.
היא לא מערכת רב מישתמשים לעומתה XP pro תומכת במספר משתמשים.
בזה אני בטוח ב 100%…
תלוי בשפה…
וזה לא מהירות הטעינה של הדף, אלא מהירות העיבוד שלו בשרת.
אם אתה כותב ב VBS, אתה משתמש ב timer בתחילת ה ASP ועוד timer אחד בסוף, וההפרש בינהם נותן לך את מהירות העיבוד של הדף (לא זוכר אם בשניות או במילישניות.
אם אתה כותב ב JS, אתה פותח אובייקט date בתחילת הדף, מוציא ממנו למשתנה getDate, ובסוף הדף מחסיר את הערך של המשתנה מ getDate נוסף שאתה מבצע על אובייקט ה Date. ההפרש נותן לך את זמן העיבוד במילישניות.
getTime
אלא אם הסקריפט מיועד להיטען כמה ימים 😛
|קטנוני| צודק… אבל קטנוני
גדלולי
|מעתיק ביטויים |