نمایش نتایج 1 تا 6 از 6

نام تاپیک: واکشی صفحه به صفحه از جدول

  1. #1
    کاربر تازه وارد آواتار amin joon
    تاریخ عضویت
    تیر 1383
    محل زندگی
    Shiraz-Iran
    پست
    93

    واکشی صفحه به صفحه از جدول

    با سلام

    من یه جدول دارم که میخوام به صورت صفحه به صفحه اون رو به کاربر نشون بدم.(نمیخوام از کنترل های آماده استفاده کنم.)
    یک روش اینه که در هر بار نمایش صفحه جدید کل جدول رو لود کرد و بعد رکوردهای اضافی رو حذف کرد و نتیجه رو به کاربر نشون داد.
    میخواستم ببینم آیا میشه با استفاده از یک Stored procedure و ارسال شماره صفحه به اون رکوردهایی رو که تو اون صفحه ی بخصوص هست رو واکشی کرد.
    در واقع من دنبال یک دستور SELECT هستم که بتونه رکوردهی (n)ام تا (n+10) ام رو برگردونه.

    با تشکر

  2. #2
    کاربر دائمی آواتار Hamid.Kad
    تاریخ عضویت
    آبان 1385
    محل زندگی
    پُشت هیچستانم...
    پست
    349

  3. #3
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    پست
    854
    یک پیاده سازی تر و تمیز از این قابلیتی که می خواید استفاده کنید رو بهروز راد در تاپیک اعمال متداول باGridview انجام داده.

    https://barnamenevis.org/showthread.php?t=50594

    به spBindGridView توجه کن.

  4. #4
    کاربر دائمی آواتار miladr
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    وقتی تو نت هستم همه جا هستم و هیچ جا نیستم.
    پست
    472

    من از این استفاده کردم مشکلم حل شد

    ببین صفحاتی که می خوای خروجی بگیری بر اساس یه فیلدی سورت شدن دیگه مثلا تاریخ که تعیین می کنه کدوم فیلد باید تو کدوم صفحه بمونه این کد زیر بر اساس تاریخه.
    stored procedure دو تا ورودی داره یکی شماره رکوردی که اول صفحه ست و دومی تعداد رکورد هایی که خروجی می ده.
    ALTER PROCEDURE dbo.selectpage
    (@startRowIndex int, @maximumRows int)
    AS
    SET NOCOUNT ON;
    DECLARE @mydate datetime
    SET ROWCOUNT @startRowIndex
    SELECT @mydate = news_date
    FROM news_tb
    ORDER BY news_date DESC
    SET ROWCOUNT @maximumRows
    SELECT *
    FROM news_tb
    WHERE (news_date <= @mydate)
    ORDER BY news_date DESC

  5. #5
    کاربر تازه وارد آواتار amin joon
    تاریخ عضویت
    تیر 1383
    محل زندگی
    Shiraz-Iran
    پست
    93
    با تشکر از حمید KAD

    من قبل از اینکه این تاپیک رو مطرح کنم ، تاپیک های قبلی رو جستجو کرده بودم. ولی عجیبه که این تاپیک رو ندیده بودم !!!

    مشکل من به کمک این تاپیک و کمی بررسی بیشتر در این زمینه حل شد.

    کدی که برای حل مشکلم نوشتم اینجوریه:


    CREATE PROCEDURE prcSelectPage
    @page int
    AS
    select IDENTITY(int,1,1) as rowNum,* into tblNew
    from tblOld
    select * from tbNew where rowNum between (10*@page+1) and (10*@page+10)
    drop table tbNew
    GO


    کار تابع Identity اینه که یک شناسه برای هر ردیف ایجاد میکنه. پارامتر اول نوع شناسه - پارامتر دوم مقداری هست که باید به اولین ردیف داده شود و آخرین پارامتر مقدار افزایش را مشخص میکند.

    از miladr هم ممنون. اگه میشه یکم درباره کدتون توضیح بدید. بعضی از قسمتهاش برام نا آشنا هست. مثل RowCount و NoCount .

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1386
    محل زندگی
    یزد
    پست
    48
    سلام به همه
    من از این روش استفاده می کنم

    USE dbTemp
    GO
    WITH OrderedOrders AS
    (SELECT field1,Field2,ROW_NUMBER() OVER (order by field3)as RowNumber
    (FROM tblTemp

    * SELECT
    FROM OrderedOrders
    WHERE RowNumber between 30 and 40

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •