Overflow: 3 J'ai une sorte de question difficile.Sélectionnez DataTable (seulement certaines valeurs) à partir de ??? _ GetDisplayData et les données GROUP par jours où les règles de groupe sont différentes pour les différentes colonnes
Je vais essayer d'expliquer clairement mon idée avec mon mauvais anglais:/besoin choisir de DataTable CERTAINS valeurs de ??? _ GetDisplayData procédure pour chaque jour du mois previos (GROUP IT) où règles de groupe pour différentes colonnes est différent
Je dois sel ect certaines valeurs dans la procédure stockée d'autre procédure stockée comme celle-ci:
SELECT X FROM Y_Procedure(@ProcedureParameters)
Je dois également sélectionner procédure SQL dynamique comme
[email protected]+'_Procedure'
SELECT X FROM Y_Procedure(@ProcedureParameters)
Aussi je dois le charger à DataTable: -/
INSERT INTO @Report (CellHorizontal, CellVertical, CellValue) --to TABLE
SELECT Date,X2,X3 FROM Y_GetDisplayData(@Param)
SET NOCOUNT OFF;
SELECT *
FROM @Report
GetDisplayData fonctionne avec des paramètres comme sélection et ne pas les retours SQL DataTable et il n'y a aucun moyen de recoder les procédures de GetDisplayData , c'est juste des procédures constantes pour moi.
Enfin je dois noeuds du groupe à partir de ce tableau
INSERT INTO @Report (CellHorizontal, CellVertical, CellValue)
SELECT T1.Date,
IF ((Select grouptype...)=1) T1.X2 + T2.X2
ELSE IF ((Select grouptype...)=2) AVG(T1.X2,T2.X2),
IF ((Select grouptype...)=1) T1.X3 + T2.X3
ELSE IF ((Select grouptype...)=2) AVG(T1.X3,T2.X3),
(SELECT T2.Date,X2,X3 FROM Y_GetDisplayData(@Param) T2
WHERE T2.Date>T1.Date AND T2.Date>=T1.Date)
FROM Y_GetDisplayData(@Param) T1
GROUP BY EVERY DAY ???
--and here is epic fail
Je peux faire toutes les choses sur le serveur asp:
Et C# me permet d'utiliser quelque chose comme SelectCommand = IzmProc + "_GetDisplayData";
Et alors je travailler (sélectionner des données spéciales) avec DataTables sur ASP.NET Server mais il est préférable de tout faire sur SQL ... Mais comme il est juste irréalisable sur SQL> _ <
I Gonna penser à C# réalisation
mais mon code est très étrange, obtenez des erreurs et ne fonctionne pas> _ <
public static DataTable GetReport(string Param)
{
System.Configuration.ConnectionStringSettings connSetting = ConfigurationManager.ConnectionStrings["FlowServerConnectionString"];
SqlConnection conn = new SqlConnection(connSetting.ConnectionString);
SqlCommand cmd = new SqlCommand(Param + " _GetDisplayData 90,1,1,80,1,1,0");
try
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
//------------------------------------------------------------
int dayOfWeekNumber = (int)DateTime.Today.DayOfWeek - (int)System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
var previosWeekFirstDay = DateTime.Today.AddDays(-7 - dayOfWeekNumber);
var yearsterday = DateTime.Today.AddDays(-1);
var previosWeekLastDay = previosWeekFirstDay.AddDays(6);
var previosMonthFirstDay = DateTime.Today.AddMonths(-1);
previosMonthFirstDay = previosMonthFirstDay.AddDays(-previosMonthFirstDay.Day + 1);
var previosMonthLastDay = previosMonthFirstDay.AddDays(DateTime.DaysInMonth(previosMonthFirstDay.Year, previosMonthFirstDay.Month) - 1);
//-------------------------------------------------------------
//Ok... now I need to group it on DT->everyday in month
DataRow[] drx;
DataTable newDT= new DataTable();
foreach (DataRow row in dt.Rows)
{
string s = row["DailyRecTime"].ToString();
drx = dt.Select("DailyRecTime= '" + s + "'");
for (DateTime x = previosMonthFirstDay; x <= previosMonthLastDay; x.AddDays(1))
{
foreach(DataRow drr in drx)
if (x.ToString() == drr[0].ToString())
{
drx = dt.Select("DailyRecTime= '" + s + "'");
DataRow newRow = new DataRow(); //ERROR HERE
double[] temp = new double[drx[0].Table.Columns.Count];
foreach (DataRow dr in drx)
{
for(int dc=1; dc<dr.Table.Columns.Count; dc++)
{
if (dr.Table.Columns[dc].Caption.ToString() == "C1_mol") //for example
temp[dc] += double.Parse(dr[dc].ToString()); // nonsense
}
}
foreach (DataColumn dcl in drx[0].Table.Columns)
{
newRow.Table.Columns.Add(dcl);
newRow[dcl] = temp[dcl]; //error here :)
}
newDT.Rows.Add(newRow);
}
}
}
return newDT;
}
catch (Exception)
{
return null;
}
omg ...: -/
et merci de lire et d'essayer de me aider: 3
(re modérateur commentaire; vous devez attendre quelques jours pour commencer une prime) –