שלח תשובה

זירת השאלות

1 תשובות

  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)

שלח תשובה