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);
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)
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 / מאת הילדה בלבן (-:
https://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)