566
צפיות
צפיות
23
תשובות
תשובות
Paging via GetRows….
ניסיתי לאלתר משהו יצא לא רע מלבד שגיאה אחת כשאני מנסה לקרוא מאיברים שלא קיימים במערך….
הקוד והשגיאה:
Subscript out of range: '18'
הקובץ מצורף
ניסיתי לאלתר משהו יצא לא רע מלבד שגיאה אחת כשאני מנסה לקרוא מאיברים שלא קיימים במערך….
הקוד והשגיאה:
Subscript out of range: '18'
הקובץ מצורף
23 תשובות
למה לסבך את החלוקה?
תעשה משהו כזה:
For i=0 To intRecordsInPage-1
Response.Write rsArray(0,i)
If i=UBound(rsArray,2) Then i=intRecordsInPage-1
Next
או מעבר על כל הרשומות
For i=0 To UBound(rsArray,2)
Response.Write rsArray(0,i)
Next
אתה תמיד תתחיל מ-0 עד מספר מסוים של רשומות.
תשתמש ב-absolutePage על מנת לקבוע באיזה עמוד אתה נמצא.
אפשר קצת יותר פירוט…
אני דיי מבולבל…
מה זה INTERECORDSINPAGE-1
אפשר קצת פירוט?
מעבר על כל הרשומות קצת לא מועיל לי כי אני צריך רק 15 רשומות בכל דף ואני לא יכול לגרום לא להפסיק :-/
אני אשמח לקוד קצת יותר מורחב וגם להסבר קצת יותר רחב….
תודה רבה רבה רבה על התגובה שלך.
אוקי אז הנה תשובה ברורה יותר
קודם כל, intRecordsInPage הוא משתנה המכיל את מספר הרשומות שיוצגו בעמוד, למשל 15.
יש מינוס 1 כיוון שאתה מתחיל את הלולאה מאפס ולא מ-1 (אחרת תקבל 16 רשומות בעמוד).
עכשיו, על מנת לעשות את החלוקה הנכונה לעמודים צריך להגדיר כמה רשומות להציג בדף (PageSize) ואז לבצע את החלוקה של העמודים (absolutePage) ולאחר מכן להתחיל את הלולאה.
הנה קוד דוגמא:
SQL = "SELECT [fields] FROM [tbl] WHERE ORDER BY [field] DESC"
rs.Open SQL, Conn, 3, 1
rs.CacheSize = rs.PageSize ' הצבת מספר הרשומות במטמון העמוד
rs.PageSize = intRecordsInPage ' הצבת מספר הרשומות בעמוד בגודל העמוד עבור החלוקה
If rs.EOF Then
rs.Close
Else
Dim page : page = Request.QueryString("page") ' הצבה במשתנה את מספר העמוד בו נמצאים
If IsNumeric(page) = False or page = "" Then page = 1 ' בדיקה אם העמוד אינו מספר או ריק והצבת מספר ברירת מחדל
intRecs = rs.RecordCount ' הצבת מספר הרשומות הקיימות במשתנה
If Cint(intRecs) < Cint(intRecordsInPage) Then intRecordsInPage = intRecs ' בדיקה אם מספר הרשומות בעמוד גדול ממספר הרשומות הכולל והצבה בהתאם
currPage = page ' הצבה במשתנה את העמוד הנוכחי
If Cint(currPage) > Cint(intPages) Then currPage = intPages ' בדיקה אם העמוד הנוכחי גדול ממספר העמודים הכולל והצבה בהתאם
rs.AbsolutePage = currPage ' מעבר לעמוד הנוכחי בו נמצאים
Dim rsArray : rsArray = rs.GetRows ' הצבת הרשומות במשתנה
rs.Close
For r=0 To intRecordsInPage-1
Response.Write rsArray(0,r)
Next
End If
כתבתי הערות עבור כל שורה שמצריכה הסבר על הפעולה.
מקווה שעכשיו זה יותר מובן
כן הרבה יותר מובן
קודם כל תודה רבה.
שנית יש לי שאלה.
מה יכולה להיות הסיבה לשגיאה הזו:
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another
בשורה הזו:
rs.PageSize = intRecordsInPage
תציג את הקוד הרלוונטי שלך
עונה לעצמי…
ככל הנראה זה הפוך…
אמור להיות:
intRecordsInPage=rs.PageSiz
מן הסתם… 🙂
שאלה לי לגבי הקוד שלך…
כשאתה בודק בשורה הזו:
If Cint(currPage) > Cint(intPages) Then currPage = intPages ' בדיקה אם העמוד הנוכחי גדול ממספר העמודים הכולל והצבה בהתאם
מאיפה אתה מקבל את הערך של IntPages?????
הוא לא קיים ולא מוגדר :-/
אגב גם השורה הזו לפני שהפכתי את
המקומות נתנה אותה שגיאה…
כנראה שכחתי
אז הנה:
intPages = rs.PageCount
התכוונתי בקוד רלוונטי
לא רק לשורת השגיאה אלא לכמה שורות לפני וכמה שורות אחרי השגיאה.
ים לב למשהו מוזר…
גם כשאני מדפדף בעמודים וה PAGE שלי שווה נגיד ל 2
אז זה מציג לי את התוכן כמו ש PAGE = 1
אין הודעת שגיאה אבל אני מניח שזה קשור לאבסולוט פייג'…
אוקי…
השגיאה:
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another
מתרחשת בשימוש בקוד שנתת לי:
Dim page : page = Request.QueryString("page") ' הצבה במשתנה את מספר העמוד בו נמצאים
If IsNumeric(page) = False or page = "" Then page = 1 ' בדיקה אם העמוד אינו מספר או ריק והצבת מספר ברירת מחדל
TotalRec = rs.RecordCount ' הצבת מספר הרשומות הקיימות במשתנה
If Cint(TotalRec) < Cint(RecordsInPage) Then RecordsInPage = TotalRec ' בדיקה אם מספר הרשומות בעמוד גדול ממספר הרשומות הכולל והצבה בהתאם
If Cint(currPage) > Cint(TotalPages) Then currPage = TotalPages ' בדיקה אם העמוד הנוכחי גדול ממספר העמודים הכולל והצבה בהתאם
>>>>> בשורה הזו >>>>>>>>> rs.AbsolutePage = currPage ' מעבר לעמוד הנוכחי בו נמצאים
Dim RSArray : RSArray = RS.GetRows ' הצבת הרשומות במשתנה
rs.Close
תציג את הקוד כקוד פורום
ולא סתם טקסט. תיישר לשמאל.
אני לא יכול לעזור לךאם לא תכתוב את
הקוד שלך – הרלוונטי (למשל כמו כל הקוד דוגמא שכתבתי לך).
תאשימו את השפעת….
רוצה את כל הקוד?
או רק שורה אחת ספציפית?
עכשיו הבנתי רק איך
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another
מתרחשת בשימוש בקוד שנתת לי:
Dim page : page = Request.QueryString("page") ' הצבה במשתנה את מספר העמוד בו נמצאים
If IsNumeric(page) = False or page = "" Then page = 1 ' בדיקה אם העמוד אינו מספר או ריק והצבת מספר ברירת מחדל
TotalRec = rs.RecordCount ' הצבת מספר הרשומות הקיימות במשתנה
If Cint(TotalRec) < Cint(RecordsInPage) Then RecordsInPage = TotalRec ' בדיקה אם מספר הרשומות בעמוד גדול ממספר הרשומות הכולל והצבה בהתאם
If Cint(currPage) > Cint(TotalPages) Then currPage = TotalPages ' בדיקה אם העמוד הנוכחי גדול ממספר העמודים הכולל והצבה בהתאם
rs.AbsolutePage = currPage ' מעבר לעמוד הנוכחי בו נמצאים
Dim RSArray : RSArray = RS.GetRows ' הצבת הרשומות במשתנה
rs.Close
רוצים את הקוד הרלבנטי בלבד.
כל מה שדרוש בשביל לדבג – לא יותר ולא פחות.
שוב שלום – בעיה חדשה… בנושא ישן..
שלום לכולם שוב.
ותודה רבה על העזרה בבעיה הקודמת.
בהמשך לבעיית העימוד שלי…
יש לי את קטע הקוד הבא:
UBRSArray = UBOUND(RSArray,2)
if UBRSArray > MyPageSize-1 THEN UBRSArray = MyPageSize-1
For i=0 to UBRSArray
הצגת הרשומות….
NEXT
עכשיו
הכל טוב ויפה.
הכל עובד לי כמו שצריך
אין שום הודעות שגיאה…
הכל מלבד העובדה שבכל העמודים, אני מקבל בדיוק את אותם רשומות כמו בעמוד הראשון (רשומות 0 – 14)
גם כשאני עובר לעמוד השני אז אני מקבל את כל הרשומות כמו בעמוד הראשון במקום לקבל את הרשומות מהרשומה האחרונה בעמוד הראשון (+1) ועד הרשומה ה 15 במספר בעמוד השני.
אני מקבל בדיוק את אותם רשומות (0-14) .
כשאני מוריד את קטע ה IF אז אני מקבל את כל הרשומות שיש לי בטבלה
גם בעמוד הראשון וגם בשאר העמודים…
לעזרתכם אודה.
יום טוב, ותודה.
שוב שלום. בעיה נוספת בעימוד….
שלום לכולם שוב.
ותודה רבה על העזרה .
בהמשך
העימוד שלי…יש לי את קטע הקוד הבא:
UBRSArray = UBOUND(RSArray,2)
if UBRSArray > MyPageSize-1 THEN UBRSArray = MyPageSize-1
For i=0 to UBRSArray
הצגת הרשומות….
NEXT
עכשיו
הכל טוב ויפה.
הכל עובד לי כמו שצריך
אין שום הודעות שגיאה…
הכל מלבד העובדה שבכל העמודים, אני מקבל בדיוק את אותם רשומות כמו בעמוד הראשון (רשומות 0 – 14)
גם כשאני עובר לעמוד השני אז אני מקבל את כל הרשומות כמו בעמוד הראשון במקום לקבל את הרשומות מהרשומה האחרונה בעמוד הראשון (+1) ועד הרשומה ה 15 במספר בעמוד השני.
אני מקבל בדיוק את אותם רשומות (0-14) .
כשאני מוריד את קטע ה IF אז אני מקבל את כל הרשומות שיש לי בטבלה
גם בעמוד הראשון וגם בשאר העמודים…
לעזרתכם אודה.
יום טוב, ותודה.
עניתי לך בתפוז
תודה רבה ראיתי
שרשר שאלותיך!
למה אתה לא משרשר?