וובמאסטר - תיכנות ובניית אתרים
שאלות ותשובות:
הוסף תשובה
1 תשובות לשאלה זו
הוסף תשובה
שיטות חלוקה לעמודים .

הערה: אני מתייחס פה רק ל-ACCESS ול-MSSQL

1. שימוש ב-SELECT TOP בשילוב תת שאילתא:


sql = "SELECT TOP 15 <fields> FROM <tables> WHERE tbl.fldID NOT IN (SELECT TOP "&(15*pageId)&" fldID FROM tbl ORDER BY fldID [DESC/ASC])"
rs.Open(sql , objConn)


2. לא ניתן לבצעו באקסס. שימוש ב-SQL דינמי ע"י הכנסת השאילתא למשתנה ומימושה ע"י EXEC


CREATE PROCEDURE spPagging(@pageId int, @numOfRecInPage int)
AS
DECLARE @strSQL varChar(300)
SET @strSQL = 'SELECT TOP '&@numOfRecInPage&' <fields> FROM <tables> WHERE tbl.fldID NOT IN(SELECT TOP '&(@numOfRecInPage*@pageId)&' fldID FROM tbl)'
EXEC (@strSQL);


3. חלוקה לעמודים ברמת ה-MSSQL / מאת הילדה בלבן (-:
http://www.webmaster.org.il/showArticle.asp?id=62

4. ברמת ה-ASP :
עמוד ראשון - שליפה של מס' הרשומות הנדרשות


SELECT TOP 10 <fields>, fldID FROM tbl



בכל עמוד שעוברים מעבירים את ה-ID האחרון שנשלף ב-query string ומבצעים את השאילתא הבאה:


sql = "SELECT TOP 10 <fields>, fldId FROM tbl WHERE fldID>"&cInt(Request.QueryString("lastId"))



אפשר לייעל זאת ע"י כך שנשים את השאילתא השנייה בתוך SP ונשלח פרמטר lastId שישמש אותנו להעברת ה-ID האחרון שהנמצא ב-QS



ACCESS:
PARAMETERS p_lastId int;
SELECT TOP 10 <fields>, fldId FROM tbl WHERE fldId>[p_lastId];

קריאה מה-ASP
sql = "EXECUTE spName @p_lastId="&cInt(Request.QueryString("lastId"))
rs.Open(sql, objConn)

MSSQL:

CREATE PROCEDURE spPagging(@p_lastId int) AS
DECLARE @strSQL varChar(300)
IF @lastId=0 THEN
SET @strSQL="SELECT TOP 10 <fields>, fldID FROM tbl"
ELSE
SET @strSQL="SELECT TOP 10 <fields>, fldId FROM tbl WHERE fldID>"&@lastId
END IF
EXEC(@strSQL)

קריאה מה-ASP:
sql = EXECUTE spPagging EXECUTE @p_lastId="&cInt(Request.QueryString("lastId"))
rs.Open(sql, objConn)

ניר טייב, 18/6/2004
הוסף תשובה  |  הוסף הערה
הוסף תשובה לשאלה זו:




וובמאסטר © כל הזכויות שמורות