problemas con rescate de datos
Publicado por arcenett (45 intervenciones) el 05/02/2008 17:14:26
hola foreros , TENGO EL SIGUIENTE PROBLEMA....
TENGO UN STORE PROCEDURE QUE ME DA LA CANTIDAD DE FILAS AFECTADAS, OSEA PARA EXPLICARME MEJOR.
ESTOY HACIENDO UNA CONSULTA QUE ME ARROJA X FILAS CON DISTINTOS RESULTADOS , LA CONSULTA PREGUNTA POR CIERTOS CAMPOS LOS CUALES AGRUPA POR SEDE Y CONCEPTO Y DE RESULTADO POR EJEMPLO UNA ME DA 15 FILAS PERO SI LE PONGO UN COUNT ENTRE MEDIO DE LA CONSULTA ME CUENTA TODOS LOS CAMPOS KE NO ESTAN AGRUPADOS POR ESO HICE UNA CONSULTA QUE ME DE LAS FILAS AFECTADAS CON EL @@ROWCOUNT, ESTA ES MI CONSULTA SQL:
SELECT distinct (@@rowcount)as contador1 from GCFAC
WHERE YEAR (GCFACFECEM)=2007 AND MONTH (GCFACFECEM)=11 AND (GCFACINDNU)='N' AND MBDOCCOD<>'NCRE'
and GCFACCVE = 'AE' or GCFACCVE = 'AP' or GCFACCVE = 'SA' or GCFACCVE like '%U%'
GROUP BY GCFACSEDE,GCFACCVE
CUANDO LA EJECUTO EN EL ANALIZADOR DE CONSULTAS TODO VA BIEN , EL PROBLEMA SURGE CUANDO QUIERO RESCATAR ESE VALOR (CONTADOR1)EN ASP.NET, ESTE ES EL ERROR QU ME DA:
Detalles de la excepción: System.IndexOutOfRangeException: contador1
Error de código fuente:
Línea 126:
Línea 127:
Línea 128: Response.Write("<tr><td>" + (String)resultado2["contador1"].ToString() + "</td></tr>");
Línea 129:
Línea 130:
Archivo de origen: c:InetpubwwwrootGallyasInforme_De_VentasResultado.aspx.cs Línea: 128
Seguimiento de la pila:
[IndexOutOfRangeException: contador1]
System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName) +95
System.Data.SqlClient.SqlDataReader.GetOrdinal(String name) +170
System.Data.SqlClient.SqlDataReader.get_Item(String name) +35
Informe_De_Ventas_Resultado.Page_Load(Object sender, EventArgs e) in c:InetpubwwwrootGallyasInforme_De_VentasResultado.aspx.cs:128
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +31
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +68
System.Web.UI.Control.OnLoad(EventArgs e) +88
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3036
YO RESCATO LA INFO DE ESTA FORMA YA QUE EL PROCEDIMIENTO CORRE UNA SERIE DE CONSULTAS:
cnn2.Open();
SqlParameter[] param = new SqlParameter[2];
param[0] = new SqlParameter("@mes", SqlDbType.Int);
param[0].Value = mes.ToString();
param[1] = new SqlParameter("@ano", SqlDbType.Int);
param[1].Value = ano.ToString();
comando2.CommandTimeout = 5000;
comando2.CommandType = CommandType.StoredProcedure;
comando2.CommandText = "PruebaInformeVta";
comando2.Connection = cnn2;
comando2.Parameters.AddRange(param);
//cnn2.Open();
//comando2.Connection = cnn2;
resultado2 = comando2.ExecuteReader();
while (resultado2.Read())
{
Response.Write((String)resultado2["contador1"].ToString() );
}
TENGO UN STORE PROCEDURE QUE ME DA LA CANTIDAD DE FILAS AFECTADAS, OSEA PARA EXPLICARME MEJOR.
ESTOY HACIENDO UNA CONSULTA QUE ME ARROJA X FILAS CON DISTINTOS RESULTADOS , LA CONSULTA PREGUNTA POR CIERTOS CAMPOS LOS CUALES AGRUPA POR SEDE Y CONCEPTO Y DE RESULTADO POR EJEMPLO UNA ME DA 15 FILAS PERO SI LE PONGO UN COUNT ENTRE MEDIO DE LA CONSULTA ME CUENTA TODOS LOS CAMPOS KE NO ESTAN AGRUPADOS POR ESO HICE UNA CONSULTA QUE ME DE LAS FILAS AFECTADAS CON EL @@ROWCOUNT, ESTA ES MI CONSULTA SQL:
SELECT distinct (@@rowcount)as contador1 from GCFAC
WHERE YEAR (GCFACFECEM)=2007 AND MONTH (GCFACFECEM)=11 AND (GCFACINDNU)='N' AND MBDOCCOD<>'NCRE'
and GCFACCVE = 'AE' or GCFACCVE = 'AP' or GCFACCVE = 'SA' or GCFACCVE like '%U%'
GROUP BY GCFACSEDE,GCFACCVE
CUANDO LA EJECUTO EN EL ANALIZADOR DE CONSULTAS TODO VA BIEN , EL PROBLEMA SURGE CUANDO QUIERO RESCATAR ESE VALOR (CONTADOR1)EN ASP.NET, ESTE ES EL ERROR QU ME DA:
Detalles de la excepción: System.IndexOutOfRangeException: contador1
Error de código fuente:
Línea 126:
Línea 127:
Línea 128: Response.Write("<tr><td>" + (String)resultado2["contador1"].ToString() + "</td></tr>");
Línea 129:
Línea 130:
Archivo de origen: c:InetpubwwwrootGallyasInforme_De_VentasResultado.aspx.cs Línea: 128
Seguimiento de la pila:
[IndexOutOfRangeException: contador1]
System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName) +95
System.Data.SqlClient.SqlDataReader.GetOrdinal(String name) +170
System.Data.SqlClient.SqlDataReader.get_Item(String name) +35
Informe_De_Ventas_Resultado.Page_Load(Object sender, EventArgs e) in c:InetpubwwwrootGallyasInforme_De_VentasResultado.aspx.cs:128
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +31
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +68
System.Web.UI.Control.OnLoad(EventArgs e) +88
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3036
YO RESCATO LA INFO DE ESTA FORMA YA QUE EL PROCEDIMIENTO CORRE UNA SERIE DE CONSULTAS:
cnn2.Open();
SqlParameter[] param = new SqlParameter[2];
param[0] = new SqlParameter("@mes", SqlDbType.Int);
param[0].Value = mes.ToString();
param[1] = new SqlParameter("@ano", SqlDbType.Int);
param[1].Value = ano.ToString();
comando2.CommandTimeout = 5000;
comando2.CommandType = CommandType.StoredProcedure;
comando2.CommandText = "PruebaInformeVta";
comando2.Connection = cnn2;
comando2.Parameters.AddRange(param);
//cnn2.Open();
//comando2.Connection = cnn2;
resultado2 = comando2.ExecuteReader();
while (resultado2.Read())
{
Response.Write((String)resultado2["contador1"].ToString() );
}
Valora esta pregunta


0