Usuario
Problema con datagridview en C#

Pregunta
-
Buenos dias tengo el siguiente problema
tengo un datagrid en mi form que relleno desde una consulta sql sin problemas
pero cuando modifico la consulta por otra en la cual poseo clausulas sumarias (sum,avg,count) y group by mi data grid no muestra nada
la consulta anda perfectamente en sql osea que el codigo esta bien por eso esa es mi duda
porque no la muestra el datagrid si con las demas consultas no tengo problemas es solo con esta que posee clausulas sumarias
- Cambiado webJoseModerator martes, 13 de noviembre de 2012 15:02 (De:Lenguaje C#)
Todas las respuestas
-
Muéstrenos cómo vincula usted su DGV con SQL Server.
Jose R. MCP
Code Samples -
pero cuando modifico la consulta por otra en la cual poseo clausulas sumarias (sum,avg,count) y group by mi data grid no muestra nada
pero esa query que tiene problemas devuelve lso campos con los nombres que defines en el grid
o sea usas alias en lso campos
select campo, SUM(campo1) AS sumacampo1, SUM(campo2) AS sumacampo2 FROM Tabla
GROUP BY campo
sino ampea el campo del grid con el de la query seguro no lo muestre
Leandro Tuttini
Blog
Buenos Aires
Argentina -
mi codigo de consulta es el siguiente
select
D.nro_alquiler 'Numero de Alquiler',
sum (D.pre_unit * D.cantidad) 'Importe Total',
sum (D.cantidad) 'Cantidad Total',
avg(D.pre_unit * D.cantidad) 'Importe Promedio', A.cod_socio 'Codigo de Socio', S.nom_socio + ' ' + S.apel_socio 'Nombre y Apellido de Socio',
G.tipo 'Genero', D.cod_pel 'Codigo de pelicula'
from
Detallealquiler D
inner join
alquileres A
on D.nro_alquiler = A.nro_alquiler
inner join
socios S
on A.cod_socio = S.cod_socio
inner join
peliculas P
on P.cod_pel = D.cod_pel
inner join
generos G
on P.id_genero = G.id_genero
where
S.nom_socio not like '[a-f]%'
and
P.id_genero not in (1,10)
Group by D.nro_alquiler,A.cod_socio, D.cod_pel,S.nom_socio + ' ' + S.apel_socio, G.tipo
order by 4 desc, 8
-
Usted dijo que su consulta ejecuta bien así que no estoy interesado en este momento en la consulta, aunque debo decir que ese ORDER BY me parece extraño, pero creo que es una sintaxis que no uso nunca.
Pero en fin, si usted está felíz con la consulta, yo también.
¿Cómo ejecuta usted esta consulta y cómo asigna los resultados al DGV?
Jose R. MCP
Code Samples- Editado webJoseModerator martes, 13 de noviembre de 2012 15:33
-
entiendo
realizo la coneccion a la base mediante una clase conector donde tengo los parametros
class Conector
{
SqlConnection connection;
string dataSetString = "dss";
public string pDataSetString
{
set { dataSetString = value; }
get { return dataSetString; }
}
public Conector(string connectionString)
{
this.connection = new SqlConnection(connectionString);
}
public DataSet fillDs(string sql)
{
DataSet ds = new DataSet();
SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, connection);
try
{
connection.Open();
dataAdapter.Fill(ds, dataSetString);
}
catch (Exception e)
{
callError();
ds = null;
}
connection.Close();
return ds;
}
public void insertData(string sql)
{
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = sql;
cmd.Connection = connection;
try
{
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
}catch(Exception e) {callError();}
}
string sql = " Mi cosnulta " +;
y luego relleno mi datagridview de la siguiente manera
dataGridView1.DataSource = con.fillDs(sql);
dataGridView1.DataMember = con.pDataSetString;vuelvo a repetir si cambio el texto de la consulta el datagrid muestra los datos perfectamente el problema es con esta en particular
-
-
¿Qué hace el método callError()? Porque sospecho que no lanza la excepción nuevamente y veo que después de este método usted simplemente setea ds a null y lo devuelve. ¿Cómo entonces informa fillDS() que hubo un error? Si mis sospechas son correctas, hay un error a la hora de ejecutar la consulta y su catch() lo está desapareciendo.
Jose R. MCP
Code Samples- Propuesto como respuesta webJoseModerator martes, 13 de noviembre de 2012 17:10
-
-
-
-
Depure su código línea por línea y mientras tanto, copie y pegue la consulta en la variable sql del método fillDS() para validarla aquí.
Jose R. MCP
Code Samples -
LES AGRADEZCO SU AYUDA FINALMENTE HICE LO SIGUIENTE
ELIMINE EL TRY Y CATCH Y DESCUBRI QUE ME ENVIABA COMO ERROR UN ERROR DE SINTAXIS CERCA DE P VOLVI A ESCRIBIR LA CONSULTA Y SE SOLUCIONO
SEPAN DISCULPAR FUE UN ERROR DE TIPEO
PERDON POR HABERLES ROBADO SU TIEMPO
MUCHAS GRACIAS DE VERDAD POR SU AYUDA
-
Excelente. Le queda como experiencia que las excepciones nunca deben descartarse porque esconden hechos importantes.
Jose R. MCP
Code Samples