@dossier_id [int],
@PageIndex [int],
@PageSize [int],
@TotalRecords [int] OUTPUT
AS
SET NOCOUNT ON
/* Variables */
DECLARE @FirstRec int
DECLARE @LastRec int
/* Création de la table temporaire */
CREATE TABLE #TempTable
(
[Id] [int] IDENTITY (1, 1) NOT NULL,
[note_Id] [int] NOT NULL,
[note_DateCreation] [datetime],
[note_Commentaire] [varchar](255),
[note_UtilisateurId] [int],
[note_Type] [int]
)
/* Insertion dans la table temporaire */ INSERT INTO #TempTable (
note_Id,
note_DateCreation,
note_Commentaire,
note_UtilisateurId,
note_Type
)
SELECT
note.Id,
note.DateCreation,
note.Commentaire,
note.Utilisateur_Id,
note.Type
FROM
Notes note
WHERE
note.Dossier_Id = @dossier_id
ORDER BY
note.DateCreation,
note.Id
/* Définition des curseurs */
SELECT @FirstRec = (@PageIndex - 1) * @PageSize SELECT @LastRec = (@PageIndex * @PageSize) + 1
/* Sélection dans la table temporaire */
SELECT
tmp.note_Id AS Id,
tmp.note_DateCreation AS DateCreation,
tmp.note_Commentaire AS Commentaire,
tmp.note_Type AS Type
FROM
#TempTable tmp
WHERE
tmp.Id > @FirstRec
AND
tmp.Id < @LastRec
/* Définition du nombre total d'enregistrement */ SELECT
@TotalRecords = COUNT(*)
FROM
#TempTable
/* Suppression de la table temporaire */
DROP TABLE #TempTable
GO
==============================
<resultMaps>
<resultMap id="Note-result" class="Note">
<result property="Id" column="Id"/>
<result property="DateCreation" column="DateCreation"/>
<result property="Commentaire" column="Commentaire"/>
<result property="TypeNote" column="Type"/>
</resultMap>
</resultMaps>
<statements>
<procedure id="RechercherNoteParDossierId" parameterMap="RechercherPage-params" resultMap="Note-result" listClass="NoteCollection">
ps_Notes_RechercherParDossierId
</procedure>
</statements>
<parameterMaps>
<parameterMap id="RechercherPage-params">
<parameter property="DossierId" column="Id"/>
<parameter property="PageIndex" column="PageIndex"/>
<parameter property="PageSize" column="PageSize"/>
<parameter property="TotalCounts" column="TotalRecords" direction="output"/>
</parameterMap>
</parameterMaps>
====================================
/// <summary>
/// Récupère les Notes d'un dossier (Système de pagination)
/// </summary>
/// <param name="pageIndex">Index de la page demandée</param>
/// <param name="pageSize">Taille de la page demandée</param>
/// <param name="dossierId">Id du dossier cotenant la Note.</param>
/// <returns>Un objet PageListe contenant la liste de Notes désirée</returns>
public PageListe RechercherNotesParDossierId(int pageIndex, int pageSize, int dossierId)
{
// Création des objets
PageListe page = new PageListe();
page.PageIndex = pageIndex;
page.PageSize = pageSize;
// Création des paramètres
Hashtable param = new Hashtable();
param.Add("DossierId", dossierId);
param.Add("PageIndex", page.PageIndex);
param.Add("PageSize", page.PageSize);
param.Add("TotalCounts", 0);
// Execution
page.Elements = (NoteCollection) this.QueryForList("NoteRechercherParDossierIdPage", param);
page.TotalCount = (int) param["TotalCounts"];
return page;
}
=========

