Inquiridor
Não consigo preencher DataGridView

Discussão Geral
-
Boa Noite a Todos,
Pessoal estou com dificuldades pra preencher um DATAGRIDVIEW, com a consulta abaixo, podem me ajudar.
Observação Importante: Se eu executar essa consulta usando o SQL MANAGEMENT STUDIO funciona perfeitamente. Só não funciona pra carregar o datagrid.
Obs: O erro que aparece está no final desse post.
select
Pontuacao.Cpf
, sum(Pontuacao.Pontuacao) as Pontos
, coalesce(Resgate.Pontos, 0) as PontosGastos
, sum(Pontuacao.Pontuacao) - coalesce(Resgate.Pontos, 0) as SaldoPontos
from
Pontuacao as Pontuacao
outer apply
(
select
Resgate.Usuario
, sum(Resgate.Pontos) as Pontos
from
Resgate as Resgate
where
UPPER(Resgate.Usuario) = UPPER(Pontuacao.Cpf)
group by
Resgate.Usuario
) as Resgate
group by
Pontuacao.Cpf
, Resgate.PontosEstou usando esse método:
O interessante é que se eu tirar o comando "COALESCE" e seu atributo ",0", carrega o datagrid perfeitamente.
Mas gostaria que funcionasse com o COALESCE, pois dessa forma ele me retorna os registros que estão zerados também.
public void pesquisar()
{
try
{
con.Open();
SqlCeDataAdapter pesq = new SqlCeDataAdapter("SELECT Pontuacao.Cpf, sum(Pontuacao.Pontuacao) as Pontos, coalesce(Resgate.Pontos, 0) as PontosGastos, sum(Pontuacao.Pontuacao) - coalesce(Regate.Pontos, 0) as SaldoPontos from Pontuacao as Pontuacao outer apply (select Resgate.Usuario, sum(Resgate.Pontos) as Pontos from Resgate as Resgate where UPPER(Resgate.Usuario) = UPPER(Pontuacao.Cpf) group by Resgate.Usuario) as Resgate group by Pontuacao.Cpf, Resgate.Pontos", con);
DataTable tabela = new DataTable();
pesq.Fill(tabela);
dataGridView2.DataSource = tabela;
this.dataGridView2.DefaultCellStyle.Font = new Font("Tahoma", 12);
this.dataGridView2.DefaultCellStyle.ForeColor = Color.DarkSlateGray;
dataGridView2.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
finally
{
con.Close();
}
}Esse é o erro que dá:
Todas as Respostas
-
Olá, Edson!
Neste caso, o erro está ocorrendo porque não existe a tabela ou alias "Regate", mas sim "Resgate". Corrija esta linha:
, sum(Pontuacao.Pontuacao) - coalesce(Resgate.Pontos, 0) as SaldoPontos
Substituindo todo o comando ficaria assim:
SqlCeDataAdapter pesq = new SqlCeDataAdapter("SELECT Pontuacao.Cpf, sum(Pontuacao.Pontuacao) as Pontos, coalesce(Resgate.Pontos, 0) as PontosGastos, sum(Pontuacao.Pontuacao) - coalesce(Resgate.Pontos, 0) as SaldoPontos from Pontuacao as Pontuacao outer apply (select Resgate.Usuario, sum(Resgate.Pontos) as Pontos from Resgate as Resgate where UPPER(Resgate.Usuario) = UPPER(Pontuacao.Cpf) group by Resgate.Usuario) as Resgate group by Pontuacao.Cpf, Resgate.Pontos", con);
Se você executasse este mesmo código no sql server, daria erro também. Você deve estar executando a consulta que você já tinha montada, e não a mesma que está nesta linha.
Bom trabalho!
- Editado Rodrigo CdS segunda-feira, 12 de junho de 2017 13:17
-
Bom dia Rodrigo,
Cara a gente fica igual um louco retardado procurando a solução, e as vezes por estarmos tão cansados e estressados não reparamos erros bobos, como não percebi, era só ler as mensagem até o final com atenção.
Fazer o quê, é rir pra não chorar.
Rodrigo obrigado por sua colabolaração.
Atenciosamente,
Edson
-
Olá, Edson!
Neste caso, o erro está ocorrendo porque não existe a tabela ou alias "Regate", mas sim "Resgate". Corrija esta linha:
, sum(Pontuacao.Pontuacao) - coalesce(Resgate.Pontos, 0) as SaldoPontos
Substituindo todo o comando ficaria assim:
SqlCeDataAdapter pesq = new SqlCeDataAdapter("SELECT Pontuacao.Cpf, sum(Pontuacao.Pontuacao) as Pontos, coalesce(Resgate.Pontos, 0) as PontosGastos, sum(Pontuacao.Pontuacao) - coalesce(Resgate.Pontos, 0) as SaldoPontos from Pontuacao as Pontuacao outer apply (select Resgate.Usuario, sum(Resgate.Pontos) as Pontos from Resgate as Resgate where UPPER(Resgate.Usuario) = UPPER(Pontuacao.Cpf) group by Resgate.Usuario) as Resgate group by Pontuacao.Cpf, Resgate.Pontos", con);
Se você executasse este mesmo código no sql server, daria erro também. Você deve estar executando a consulta que você já tinha montada, e não a mesma que está nesta linha.
Bom trabalho!
Bom dia Rodrigo,
Cara a gente fica igual um louco retardado procurando a solução, e as vezes por estarmos tão cansados e estressados não reparamos erros bobos, como não percebi, era só ler as mensagem até o final com atenção.
Fazer o quê, é rir pra não chorar.
Rodrigo obrigado por sua colabolaração.
Vou testar aqui, te retorno.
Atenciosamente,
Edson
- Editado Edson535 segunda-feira, 12 de junho de 2017 16:05
-