0
votes

MVC C # compter des enregistrements basés sur la condition

J'essaie de compter et d'afficher le nombre de journaux effectués par divers utilisateurs à partir de la section Admin. Chaque utilisateur a un UserID et à travers cela, je voudrais compter et afficher des données d'une table spécifique. J'ai fait une procédure stockée et l'ai transmise au contrôleur via un obstacle de la vue, mais cela continue de retourner 1 comme total pour toutes les valeurs. La procédure est inférieure à xxx

contrôleur: xxx


1 commentaires

Sinon, quel est le meilleur moyen de contourner ce problème.


3 Réponses :


0
votes

Tout d'abord, votre procédure stockée est exactement comme prévu, car @@ rowcount renvoie le nombre de lignes dans le résultat.

Vous devez écrire votre résultat dans une autre variable comme indiqué ci-dessous.

pour votre procédure stockée xxx

puis lisez cette valeur;)

Et changements pour votre code xxx


1 commentaires

Le paramètre formel "@userid" n'a pas été déclaré comme paramètre de sortie, mais le paramètre réel adopté dans la sortie demandée. '



0
votes

n'utilise pas la variable globale @@ RowCount

Vous devez enregistrer la valeur du nombre (*) dans votre demande, consultez le code ci-dessous, P>

CREATE proc [Usp_GetCallCountByUserID]
    @UserID int,
    @RowCount int output 
    AS
    BEGIN
    SELECT @RowCount = COUNT (*) FROM Customer Where UserID= @UserID
    GROUP BY UserID
    END
    GO


0 commentaires

1
votes

EDIT: Réponse modifiée après la clarification

Si j'ai raison, vous feriez quelque chose comme ceci: xxx

veuillez modifier appelant C # code en conséquence. Vous n'avez pas besoin du groupe par clause, si vous regroupez par le même champ, vous filtrez sur.

Considération: IMO Une procédure stockée est surchargée pour une tâche aussi simple et ne donne aucune amélioration de performance raisonnable, Excectionnellement si votre application et votre serveur DB sont toujours en hausse (les deux optimiseront l'exécution de la requête, si répétée). Lorsque les requêtes sont si simples, je préférerais exécuter un commandtType.text dBCommand: xxx

Enfin, puisque vous semblez utiliser une sorte d'ormes (cadre d'entité?), Pourquoi pas seulement: xxx

qui est presque équivalent au code ci-dessus.


3 commentaires

Oui, ce code fonctionnerait pour moi si je voulais récupérer le total des enregistrements. Mais ce que je veux vraiment, c'est une requête: sélectionnez Count (*) des clients où Userid = @ userid. En effet, j'ai diverses utilisateurs et donc besoin pour chaque utilisateur


Oh, d'accord, vous avez des clients qui ont une clé étrangère pour les utilisateurs. Un utilisateur peut avoir un ou plusieurs clients. Vous souhaitez trouver le nombre total de clients pour l'utilisateur actuel. Si cela est correct, je modifierai ma réponse en conséquence.


Exactement. J'apprécierais