L'utilisation de la boucle while dans la procédure stockée fonctionne correctement dans le serveur SQL mais renvoie uniquement la première ligne à la vue de grille asp.net.Alors qu'une boucle dans une procédure stockée dans sql renvoie une seule ligne à la vue de la grille dans asp.net
Ma procédure stockée
create procedure [dbo].[DoorDetails]
@emp varchar(16),
@fromdate datetime,
@todate datetime,
@cdate datetime [email protected]
as
while @cdate<= @todate
Begin
select convert(varchar,(CONVERT(date,@cdate,103)),103) as Date, Empname, min(TransactionDateTime) as EntryTime ,max(TransactionDateTime) as ExitTime,
(DateDIFF (MINUTE,min(TransactionDateTime), max(TransactionDateTime)))/60 as Hours,
(DateDIFF (MINUTE,min(TransactionDateTime), max(TransactionDateTime)))%60 as minutes from
ceptEmpTxn where EmpName = @emp and cast(TransactionDateTime as Date)=cast(@cdate as date) group by empname
SET @cdate = DATEADD(dd,1,@cdate)
end
GO
de résultats dans SQL
-------------------------------------------------------------------------------------------------------------
|Date| |Empname| |EntryTime| |ExitTime| |Hours| minutes|
|14/09/2016| |PRAVEEN KUMAR| |2016-09-14 09:28:13.000||2016-09-14 18:42:14.000 9 14
------------------------------------------------------------------------------------------------------------
|Date| |Empname| |EntryTime| |ExitTime| |Hours| minutes|
|15/09/2016| |PRAVEEN KUMAR| |2016-09-15 09:27:13.000||2016-09-15 17:16:46.000 7 49
-------------------------------------------------------------------------------------------------------------
|Date| |Empname| |EntryTime| |ExitTime| |Hours| minutes|
|16/09/2016| |PRAVEEN KUMAR| |2016-09-16 09:30:33.000||2016-09-16 19:03:14.000 9 33
têtes se répètent à chaque fois dans SQL
Résultat dans la page Web (en utilisant en mode Grille)
------------------------------------------------------------------------
Date| Empname| EntryTime| ExitTime| Hours| minutes|
15/09/2016| PRAVEEN KUMAR| 15-09-2016 09:27:07| 15-09-2016 17:16:46| 7| 49|
Mon f Onction dans asp.net
public DataTable tottime(string empname, DateTime fromdate, DateTime todate)
{
System.Data.SqlClient.SqlConnection myConn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["ceptConnectionString"].ConnectionString.ToString());
DataTable myDt = new DataTable();
System.Data.SqlClient.SqlCommand myCmd = new System.Data.SqlClient.SqlCommand();
myCmd.CommandType = System.Data.CommandType.StoredProcedure;
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter();
myCmd.CommandText = "DoorDetails";
myCmd.Parameters.AddWithValue("@emp", empname);
myCmd.Parameters.AddWithValue("@fromdate", fromdate);
myCmd.Parameters.AddWithValue("@todate", todate);
da.SelectCommand = myCmd;
try
{
myCmd.Connection = myConn;
da.Fill(myDt);
return myDt;
}
catch (Exception ex)
{
throw;
}
finally
{
myDt = null;
da.Dispose();
myCmd.Dispose();
myConn.Close();
myConn.Dispose();
}
}
Comment retourner toutes les valeurs de procédure stockée également comment avoir en-tête de la table qu'une seule fois suivi de toutes les lignes.
Avez-vous pu utiliser le SP ci-dessous? – balaji
Oui la procédure stockée fonctionne correctement. La requête donne la sortie requise dans le serveur SQL mais le résultat attendu n'est pas obtenu en mode grille. – praveenrsmart
Dans SQL Server, pouvez-vous l'obtenir en tant que jeu de résultats unique? au lieu de grilles? – balaji