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

نام تاپیک: گرفتن رکورد از بانک به صورت صفحه بندی شده (هربار 10 رکورد بگیره )

  1. #1
    کاربر دائمی آواتار majnun
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران
    سن
    31
    پست
    656

    گرفتن رکورد از بانک به صورت صفحه بندی شده (هربار 10 رکورد بگیره )

    سلام دوستان

    من یه جدول دارم که با کوئری که نوشتم 1000 تا رکورد بهم میده

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

    حالا استرود پروسیجر بیاد 1000 تا رکورد رو به اون تعداد رکوردی که بهش دادم تقسیم کنه
    و من هر بار که شماره صفحه دادم اون همون تعداد رکورد رو بهم بده

    مثلا

    شماره صفحه 1 - 20 عدد بده

    بیا رکورد 980 تا 1000 رو بهم بده ....

    دوباره
    شماره صفحه 2 - دیگه بازم همون 20 تا

    بیاد رکورد 980 تا 980 رو بهم بده

    ممنون میشم کمکم کنید

  2. #2

    نقل قول: گرفتن رکورد از بانک به صورت صفحه بندی شده (هربار 10 رکورد بگیره )

    اين كار بستگي به بانك و طراحي اون داره. توي سايت در اين مورد بحث شده و چندين راه حل ارائه دادند.
    يكي از راههاي مناسب‌ ، استفاده از فيلدي مثل ID توي جدول است(يونيك باشه) ، بدليل اينكه ميشه روي اين ID ايندكس تعريف كرد واكشي اطلاعات خيلي سريع ميشه از طرف ديگه دستور sql اون هم بسيار ساده ميشه
    Select * From TableName Where ID between 960 AND 980
    كه اعداد رو ميشه به صورت پارامتر ارسال كرد!!!
    راه ديگه (اگر نميخوايد از ID استفاده كنيد) استفاده از كرسر است. روش قبل نسبت به اين روش هم از نظر سرعت هم از نظر حجم كدنويسي مناسب تر به حساب مياد.

    اگر يه جستجو توي سايت كنيد روشهاي ديگه اي هم پيدا ميكنيد.

  3. #3

    نقل قول: گرفتن رکورد از بانک به صورت صفحه بندی شده (هربار 10 رکورد بگیره )

    روش مناسب تر:
    --region [dbo].[Sample_Select_Page]

    ------------------------------------------------------------------------------------------------------------------------
    -- Generated By: Hossein using CodeSmith 5.0.0.0
    -- Template: SQL.cst
    -- Procedure Name: [dbo].[Sample_Select_Page]
    -- Date Generated: الاربعاء, اكتوبر 13, 2010
    ------------------------------------------------------------------------------------------------------------------------

    Create PROCEDURE [dbo].[Sample_Select_Page]
    @PageIndex int,
    @PageSize int
    AS

    SET NOCOUNT ON

    SELECT
    [SampleID],
    [SampleTitle],
    [SampleDescription]
    [CreatedDate],
    [LastModifided]
    FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY [SampleID]) AS RowNum FROM [dbo].[Sample])

    AS e
    --WHERE RowNum BETWEEN ((@PageIndex * @PageSize) - (@PageSize - 1)) AND (@PageIndex * @PageSize)
    WHERE RowNum BETWEEN ((@PageIndex * @PageSize) + 1) AND ((@PageIndex + 1) * @PageSize)

    --endregion


    جناب راد در GridView ورژن 7 برای Paging از این روش استفاده کرده بودند که روش مناسبی هست.

    و برای گرفتن یک Range خاص(مثلا از 1200 تا 1230)
    --region [dbo].[Sample_Select_Range]

    ------------------------------------------------------------------------------------------------------------------------
    -- Generated By: Hossein using CodeSmith 5.0.0.0
    -- Template: SQL.cst
    -- Procedure Name: [dbo].[Sample_Select_Range]
    -- Date Generated: الاربعاء, اكتوبر 13, 2010
    ------------------------------------------------------------------------------------------------------------------------

    CREATE PROCEDURE [dbo].[Sample_Select_Range]
    @FromIndex int,
    @ToIndex int
    AS

    SET NOCOUNT ON

    SELECT
    [SampleID],
    [SampleTitle],
    [SampleDesxription]
    FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum FROM [dbo].[Sample])

    AS e
    WHERE RowNum BETWEEN @FromIndex AND @ToIndex
    --endregion


    GO


    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  4. #4
    کاربر دائمی آواتار majnun
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران
    سن
    31
    پست
    656

    نقل قول: گرفتن رکورد از بانک به صورت صفحه بندی شده (هربار 10 رکورد بگیره )

    ALTER PROCEDURE dbo.Select_imageaplod
    @page int
    AS

    SELECT
    x.imageURL,
    x.imagetext,
    x.id,
    x.filename
    FROM
    (
    SELECT
    row_number() over( order by id ) rn,
    imageURL,
    imagetext,
    id,
    filename
    FROM
    Tbl_aplodimage
    ) x
    WHERE
    rn between ((@page-1) * 10 ) + 1 and @page * 10
    ORDER BY
    x.id;

    RETURN
    این کد هم میشه

    گرفته شده از این لینک :
    https://barnamenevis.org/showthread.php?t=253507

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

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