denna procedur hittade jag på nätet nånstans, men nu lyckas jag inte med mina modifieringar!
det är ganska lång kod men allt är ganska ointressant, det är order by längst ner jag inte får till.
så scrolla ner dit direkt! :)
CREATE PROCEDURE spStockPaging
@pagenum int,
@perpage int,
@Sortcolumn int,
@Sortorder int
AS
BEGIN
SET NOCOUNT ON
DECLARE
@ubound INT,
@lbound INT,
@pages INT,
@rows INT
SELECT
@rows = COUNT(*),
@pages = COUNT(*) / @perpage
FROM
tblStock WITH (NOLOCK)
IF @rows % @perpage != 0 SET @pages = @pages + 1
IF @pagenum < 1 SET @pagenum = 1
IF @pagenum > @pages SET @pagenum = @pages
SET @ubound = @perpage * @pagenum
SET @lbound = @ubound - (@perpage - 1)
SELECT
CurrentPage = @pagenum,
TotalPages = @pages,
TotalRows = @rows
-- this method determines the string values
-- for the first desired row, then sets the
-- rowcount to get it, plus the next n rows
-- här börjar hämtningen av värden
Declare @Aonr varchar(50)
Declare @Compartment varchar(50)
Declare @Quantity int
Declare @Create_date smalldatetime
SET ROWCOUNT @lbound
SELECT
@Aonr = Aonr,
@Compartment = Compartment,
@Quantity = Quantity,
@Create_date = Create_date
FROM
tblStock WITH (NOLOCK)
ORDER BY
Case When @Sortcolumn = 1 And @Sortorder = 1 Then Aonr End Asc,
Case When @Sortcolumn = 1 And @Sortorder = 2 Then Aonr End Desc,
Case When @Sortcolumn = 2 And @Sortorder = 1 Then Create_date End Asc,
Case When @Sortcolumn = 2 And @Sortorder = 2 Then Create_date End Desc
SET ROWCOUNT @perPage
SELECT
Aonr, Compartment, Quantity, Create_date
FROM
tblStock WITH (NOLOCK)
WHERE
Aonr + '~' + Compartment
>= @Aonr + '~' + @Compartment
ORDER BY
Case When @Sortcolumn = 1 And @Sortorder = 1 Then Aonr End Asc,
Case When @Sortcolumn = 1 And @Sortorder = 2 Then Aonr End Desc,
Case When @Sortcolumn = 2 And @Sortorder = 1 Then Create_date End Asc,
Case When @Sortcolumn = 2 And @Sortorder = 2 Then Create_date End Desc
SET ROWCOUNT 0
END
GO
dessa funkar:
sortcolumn = 1, sortorder = 1
sortcolumn = 1, sortorder = 2
sortcolumn = 2, sortorder = 1
funkar inte:
sortcolumn = 2, sortorder = 2
varför funkar det inte att sortera med sortcolumn = 2 och sortorder = 2?
jag får upp samma poster när jag bläddrar i pagingen.
dbms: sqlserver 2000
är det nån som fattar mitt problem, eller? :l