none
Como controlar as fases de um QUIZ usando C- Sharp (C#) RRS feed

  • Pergunta

  • Boa dia,

    Se pudererem me ajudar agradeço.

    Sou leigo em programação, mas estou estudando e me esforçando

    Projeto QUIZ:

    Tenho um Form com 5 picturebox com o evento click representando as Cinco (5) fases do Jogo, ST(STARTER), IN(INTERMEDIATE), AD(ADVANCED), EX(EXPERT) E MA(MASTER), esse Form é carregado depois do Login:

    Carregar as fases com as perguntas isso já está pronto e funcionando, o problema é que todas as fases ficam ativas, então o usuário poderia escolher qualquer uma, e não é isso que eu quero.

    O que eu preciso é que toda vez que o usuário jogar a primeira fase ele desabilita a mesma(ex.: fase1.enabled = false;) e habilita a próxima, e assim sucessivamente até terminar as fases.

    Olha só , a lógica eu sei só não estou conseguindo aplicar o código, pensei assim:

    - Criar uma coluna na tabela tbl_login UltimaFase e armazenar os nomes das fases, e assim fazer o controle, mas como disse anteriormente sou leigo em c#, mas estou estudando e me esforçando.

    Desde de já agradeço

    Edson

    terça-feira, 23 de maio de 2017 13:52

Respostas

  • Boa Tarde Rodrigo,

    Esqueci de perguntar,

    Onde eu colocaria esse código? no form do login ou no form das fases?

    Atenciosamente,

    Edson

    No form das fases, onde tem as picturebox. Pode colocar no método construtor da classe. Ou cria um método separado para isto, e chama ele no construtor da classe e em outro lugar que seja necessário rever a fase atual.
    • Editado Rodrigo CdS quarta-feira, 24 de maio de 2017 16:38
    • Marcado como Resposta Edson535 sexta-feira, 26 de maio de 2017 14:28
    quarta-feira, 24 de maio de 2017 16:37
  • Olá, Edson! Desculpe pela demora na resposta, pois estou enrolado aqui.

       Tenta aplicar as alterações que fiz abaixo - se não puder substituir todo o seu código por este, compare com o seu e aplica as alterações que fiz. Observe que pode ocorrer algum erro, pois não tenho como testar. Escrevi o código de forma que conforme as fases avancem, as fases anteriores sejam desabilitadas.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlServerCe;
    
    namespace Responda
    {
        public partial class Form2 : Form
        {
            string pasta_images = "";
    
            Image img_normal;
            Image img_high;
            Image img_disabled;
            Image img_normal2;
            Image img_high2;
    
            public Form2()
            {
                InitializeComponent();
    
                pasta_images = Application.StartupPath + @"\imagens\";
    
                img_normal = Image.FromFile(pasta_images + "FaseNormal.png");
                img_high = Image.FromFile(pasta_images + "FaseHigt.png");
                img_disabled = Image.FromFile(pasta_images + "FaseDesativado.png");
                img_normal2 = Image.FromFile(pasta_images + "pensandoNormal.png");
                img_high2 = Image.FromFile(pasta_images + "pensandoHigh.png");
    			
    			this.AtualizaHabilitacaoFases(this.GetUltimaFase());
            }
    
            private void Form2_Load(object sender, EventArgs e)
            {
                if (UsuarioLogado.NomeUsuario == "Admin")
                    menuStrip1.Visible = true;
                else 
                {
                    menuStrip1.Visible = false;
                }
    
    			/*
                fase1.BackgroundImage = img_normal;
                fase2.BackgroundImage = img_normal;
                fase3.BackgroundImage = img_normal;
                fase4.BackgroundImage = img_normal;
                fase5.BackgroundImage = img_normal;
    			*/
                btn_voltar.BackgroundImage = img_normal2;
            }
    
    	    /// <summary>
            /// Obtém na tabela de login a última fase jogada pelo usuário.
            /// </summary>
    		private string GetUltimaFase()
    		{
    			SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("select UltimaFase tbl_login where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
    			string ultimaFase;
                try
                {
                    con.Open();
                    ultimaFase = cad.ExecuteScalar();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
                }
    			
    			return ultimaFase;
    		}
    		
    	    /// <summary>
            /// Habilita e desabilita as fases conforme atualização da ultima fase jogada.
            /// </summary>		
    		private void AtualizaHabilitacaoFases(string ultimaFase)
    		{		
    			if(string.IsNullOrEmpty(ultimaFase))
    			{
    				fase1.Enabled = true;
    				fase2.Enabled = false;
    				fase3.Enabled = false;
    				fase4.Enabled = false;
    				fase5.Enabled = false;
    			}
    			else if (ultimaFase == lblFase1.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = true;
    				fase3.Enabled = false;
    				fase4.Enabled = false;
    				fase5.Enabled = false;						
    			}
    			else if (ultimaFase == lblFase2.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = false;
    				fase3.Enabled = true;
    				fase4.Enabled = false;
    				fase5.Enabled = false;	
    			}
    			else if (ultimaFase == lblFase3.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = false;
    				fase3.Enabled = false;
    				fase4.Enabled = true;
    				fase5.Enabled = false;	
    			}
    			else if (ultimaFase == lblFase4.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = false;
    				fase3.Enabled = false;
    				fase4.Enabled = false;
    				fase5.Enabled = true;	
    			}
    			else if (ultimaFase == lblFase5.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = false;
    				fase3.Enabled = false;
    				fase4.Enabled = false;
    				fase5.Enabled = false;
    			}			
    		}
    		
            private void perguntasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                CadastroPerguntas perg = new CadastroPerguntas();
                perg.ShowDialog();
            }
    
            private void rankingToolStripMenuItem_Click(object sender, EventArgs e)
            {
                relPontos rel = new relPontos();
                rel.ShowDialog();
            }
    
            private void cadastroToolStripMenuItem_Click(object sender, EventArgs e)
            {
                CadastroPontos cadPontos = new CadastroPontos();
                cadPontos.ShowDialog();
            }
    
            private void cadastroToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                CadastroUsuario cadastro = new CadastroUsuario();
                cadastro.Show();
            }
    
            private void alterarToolStripMenuItem_Click(object sender, EventArgs e)
            {
                AlterarUsuario alterar = new AlterarUsuario();
                alterar.Show();
            }
    
            private void fase1_MouseEnter(object sender, EventArgs e)
            {
                fase1.BackgroundImage = img_high;
            }
    
            private void fase1_MouseLeave(object sender, EventArgs e)
            {
                fase1.BackgroundImage = img_normal;
            }
    
            private void fase1_EnabledChanged(object sender, EventArgs e)
            {
                if (fase1.Enabled)
                    fase1.BackgroundImage = img_normal;
                else
                    fase1.BackgroundImage = img_disabled;
            }
    	
            private void fase1_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase1.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase1.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();						
            }
    
    		private void fase2_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase2.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase2.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();
    
            }
    
    		private void fase3_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase3.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase3.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();
    
            }
    
    		private void fase4_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase4.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase4.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();
    
            }
    
    		private void fase5_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase5.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase5.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();
    
            }
    
            private void fase2_MouseEnter(object sender, EventArgs e)
            {
                fase2.BackgroundImage = img_high;
            }
    
            private void fase2_MouseLeave(object sender, EventArgs e)
            {
                fase2.BackgroundImage = img_normal;
            }
    
            private void fase2_EnabledChanged(object sender, EventArgs e)
            {
                if (fase2.Enabled)
                    fase2.BackgroundImage = img_normal;
                else
                    fase2.BackgroundImage = img_disabled;
            }
    
            private void fase3_MouseEnter(object sender, EventArgs e)
            {
                fase3.BackgroundImage = img_high;
            }
    
            private void fase3_MouseLeave(object sender, EventArgs e)
            {
                fase3.BackgroundImage = img_normal;
            }
    
            private void fase3_EnabledChanged(object sender, EventArgs e)
            {
                if (fase3.Enabled)
                    fase3.BackgroundImage = img_normal;
                else
                    fase3.BackgroundImage = img_disabled;
            }
    
            private void fase4_MouseEnter(object sender, EventArgs e)
            {
                fase4.BackgroundImage = img_high;
            }
    
            private void fase4_MouseLeave(object sender, EventArgs e)
            {
                fase4.BackgroundImage = img_normal;
            }
    
            private void fase4_EnabledChanged(object sender, EventArgs e)
            {
                if (fase4.Enabled)
                    fase4.BackgroundImage = img_normal;
                else
                    fase4.BackgroundImage = img_disabled;
            }
    
            private void fase5_MouseEnter(object sender, EventArgs e)
            {
                fase5.BackgroundImage = img_high;
            }
    
            private void fase5_MouseLeave(object sender, EventArgs e)
            {
                fase5.BackgroundImage = img_normal;
            }
    
            private void fase5_EnabledChanged(object sender, EventArgs e)
            {
                if (fase5.Enabled)
                    fase5.BackgroundImage = img_normal;
                else
                    fase5.BackgroundImage = img_disabled;
            }
    
            private void btn_voltar_MouseEnter(object sender, EventArgs e)
            {
                btn_voltar.BackgroundImage = img_high2;
            }
    
            private void btn_voltar_MouseLeave(object sender, EventArgs e)
            {
                btn_voltar.BackgroundImage = img_normal2;
            }
    
            private void btn_voltar_Click(object sender, EventArgs e)
            {
                this.Hide();
                Form1 login = new Form1();
                login.ShowDialog();
            }     
        }
    }
    Bom trabalho!

    • Marcado como Resposta Edson535 sexta-feira, 26 de maio de 2017 14:28
    quinta-feira, 25 de maio de 2017 16:27
  • Boa Noite Rodrigo,

    Fiz mais algumas alterações e testes aqui aparentemente deu certo.

    Na string que vc criou eu declarei um valor vazio nela:

    string ultimaFase = ""; 

    E converti o cad.ExecuteScalar pra string:

    ultimaFase = Convert.ToString(cad.ExecuteScalar());

    Nesse if inclui um ||, fiz isso porque quando respondia a ultima fase não ativa a fase1, e o certo é dá um loop, indo e voltando pelas fases

    É que no final das 5 fases os jogadores ganharão um prêmio, e dará início há uma nova rodada.

    if (string.IsNullOrEmpty(ultimaFase) || ultimaFase == lblFase5.Text)
    {
    fase1.Enabled = true;
    fase2.Enabled = false;
    fase3.Enabled = false;
    fase4.Enabled = false;
    fase5.Enabled = false;

    }

    Estou correto ou não?

    Vou fazer mais alguns testes e posto o resultado pra vc.

    Atenciosamente,

    Edson

    Está ótimo! Se está funcionando como você queria, está certo. Não há uma forma "certa" de como programar uma funcionalidade, já que existem n maneiras de se chegar ao mesmo resultado (desde que se chegue ao resultado desejado). O que existe - e você vai conhecer mais sobre isto - são boas práticas na programação.

    Abraço, e sucesso!

    • Marcado como Resposta Edson535 sexta-feira, 26 de maio de 2017 14:28
    sexta-feira, 26 de maio de 2017 11:44
  • Boa Dia Rodrigo,

    Por gentileza, gostaria de sua ajuda mais uma vez.


    Bom o que eu preciso:

    Tenho duas tabelas SQL:

    Pontuacao, com os campos usuario, pontos e data, essa tabela armazena o usuário logado, os pontos que ele ganhou e a data que jogou.

    Premio, com os campos usuariopremiopts_premio data, essa tabela armazena o usuário logado, o premio que ele retirou, os pontos que esse prêmio equivale e a data que ele retirou.

    O que eu gostaria de fazer é somar todos os pontos que ele fez e está armazenada coluna pontos da tabela Pontucao, somar todos os pontos da coluna pts_premios da tabela Premio, e depois fazer a subtração e me retornar o saldo de pontos que esse usuário ainda tem.

    apresentar em um DATAGRIDVIEW se possível.

    Ecemplo das tabelas:

    Tabela Pontuacao

    usuario  pontos  data

    joao        200        25/05/2017

    Eder        250        26/05/2017

    joao        150         28/05/2017

    Eder        100        29/05/2017

    Anna       200        29/05/2017

    Joao        240        30/05/2017

    Tabela Premio

    Usuario    premio    pts_pontos     data

    Joao            boné       20                 22/05/2017

    Eder            boné       20                 23/05/2017

    Joao            camiseta 90                 25/05/2017

    Joao            boné       20                 26/05/2017

    Eder            óculos     100              25/05/2017

    Anna           boné       20                22/05/2017

    Desde já agradeço

    Edson Goveia

    Olá, Edson!

       A consulta pode ser assim (pegue apenas a consulta final, e substitua os nomes das tabelas pelas suas):

    declare @Pontuacao table
    (
    	usuario		varchar(50)
    	, pontos	int
    	, data		datetime
    )
    
    insert into @Pontuacao values
    ('joao', 200, '2017-05-25')
    , ('Eder', 250, '2017-05-26')
    , ('joao', 150, '2017-05-28')
    , ('Eder', 100, '2017-05-29')
    , ('Anna', 200, '2017-05-29')
    , ('Joao', 240, '2017-05-30')
    
    --select * from @Pontuacao
    
    declare @Premio table
    (
    	usuario			varchar(50)
    	, premio		varchar(50)
    	, pts_pontos	int
    	, data			datetime
    )
    
    insert into @Premio values
    ('Joao', 'boné', 20, '2017-05-22')
    , ('Eder', 'boné', 20, '2017-05-23')
    , ('Joao', 'camiseta', 90, '2017-05-25')
    , ('Joao', 'boné', 20, '2017-05-26')
    , ('Eder', 'óculos', 100, '2017-05-25')
    , ('Anna', 'boné', 20, '2017-05-22')
    
    --select * from @Premio
    
    
    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, Premio.Pontos as PontosGastos
    from
    	@Pontuacao as Pontuacao
    	cross apply
    	(
    		select
    			Premio.usuario
    			, sum(Premio.pts_pontos) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos

    Esta query já serve para você simular os resultados. Para preencher um grid, segue o link onde há uma série de exemplos para você consultar. Sugiro utilizar o exemplo com o DataAdapter.

    Mais uma coisa: sugiro você ter uma coluna com o Id do usuário nas suas tabelas, pois utilizar strings como chave não é aconselhável. Bom trabalho!


    • Editado Rodrigo CdS segunda-feira, 5 de junho de 2017 00:28
    • Marcado como Resposta Edson535 quinta-feira, 8 de junho de 2017 14:27
    segunda-feira, 5 de junho de 2017 00:26
  • Boa Noite Rodrigo,

    Desde de já obrigado por estar disposto em me ajudar.

    É o seguinte fiz o teste aqui, deu certo apenas o seguinte:

    Nessa consulta que me passou retorna o total de pontos ganhos (Pontos) e total de pontos dos premios (PontosGastos) por usuário, até aí tudo bem deu certo.

    O que faltou foi a criação de uma coluna com o saldo da subtração da coluna Pontos - PontosGastos

    Pontos - PontosGastos = SaldoPontos

    Atenciosamente,

    Edson

    Segue:

    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, Premio.Pontos as PontosGastos
    	, sum(Pontuacao.pontos) - Premio.Pontos as SaldoPontos
    from
    	@Pontuacao as Pontuacao
    	cross apply
    	(
    		select
    			Premio.usuario
    			, sum(Premio.pts_pontos) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos

    • Marcado como Resposta Edson535 quinta-feira, 8 de junho de 2017 14:27
    quinta-feira, 8 de junho de 2017 11:39
  • Boa Noite Rodrigo,

    Deu certo essa consulta, mas tem um outro detalhe, o resultado que aparece é esse:

    Usuario  Pontos  PontosGastos  SaldoPontos

    Joao       2000     1500              500

    Maria      3000      2000             1000

    Eder        2000      1200             8000

    Mas gostaria que esse Select mostrasse também os Usuarios que que não resgatou nada, por exemplo, ficaria assim:

    Usuario  Pontos  PontosGastos  SaldoPontos

    Joao       2000     1500              500

    Maria      3000      2000             1000

    Eder        2000      1200             8000

    Anna       5000                          5000

    Marcelo    3000                          3000

    Marcos     1400      400               1000

    Marcia      500        200               300

    Adriano      4200                        4200

    Entendeu?

    desde Já Agradeço

    Edson

    Tenta isto:

    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, isnull(Premio.Pontos, 0) as PontosGastos
    	, sum(Pontuacao.pontos) - isnull(Premio.Pontos, 0) as SaldoPontos
    from
    	@Pontuacao as Pontuacao
    	outer apply
    	(
    		select
    			Premio.usuario
    			, sum(Premio.pts_pontos) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos
    Bom trabalho!

    • Marcado como Resposta Edson535 sexta-feira, 9 de junho de 2017 13:51
    sexta-feira, 9 de junho de 2017 12:17
  • Fiz esse procedimento, mas continua não carregado o datagridview

    A consulta funciona perfeitamente, me trás os resultados que eu preciso, só não consigo carregar essa consulta num DataGridView.

    Atenciosamente,

    Edson

    A princípio está tudo certo na codificação. Você viu que a consulta traz os valores corretamente ao debugar o fonte? Se sim, você verificou se o dataTable está preenchido? Pelo que pude verificar do código, se a consulta está retornando o resultado, deveria preencher o grid, a não ser que você tenha algum outro método que é executado depois deste que reseta o datasource.
    • Marcado como Resposta Edson535 sábado, 10 de junho de 2017 14:52
    sexta-feira, 9 de junho de 2017 21:59
  • Fiz esse procedimento, mas continua não carregado o datagridview

    A consulta funciona perfeitamente, me trás os resultados que eu preciso, só não consigo carregar essa consulta num DataGridView.

    Atenciosamente,

    Edson

    A princípio está tudo certo na codificação. Você viu que a consulta traz os valores corretamente ao debugar o fonte? Se sim, você verificou se o dataTable está preenchido? Pelo que pude verificar do código, se a consulta está retornando o resultado, deveria preencher o grid, a não ser que você tenha algum outro método que é executado depois deste que reseta o datasource.

    O erro que dá é nessa inha do código:

                sqlCeDataAdapter.Fill(dataTable);

    O interessante é que na consulta sem o atributo isnull ou coalesce carrega o datagridview certinho, já se eu colocar esse atributo não carrega e dá esse erro.

    Atenciosamente,

    Edson



    • Marcado como Resposta Edson535 sábado, 10 de junho de 2017 14:31
    • Editado Edson535 sábado, 10 de junho de 2017 14:55
    sábado, 10 de junho de 2017 14:30

Todas as Respostas

  • Olá, Edson!

       Considerando a coluna que você falou que iria criar, você pode iniciar todos os picture box desabilitados (Enabled == false), e depois escrever uma sequencia de ifs para definir qual será habilitado:

                // Onde x equivale ao índice da coluna referente ao campo da fase que o jogador está
                this.pictureBox1.Enabled = false;
                this.pictureBox2.Enabled = false;
    
                if (Convert.ToInt32(dt.Rows[0].ItemArray[x]) == 1)
                {
                    this.pictureBox1.Enabled = true;
                }
                else if (Convert.ToInt32(dt.Rows[0].ItemArray[x]) == 2)
                {
                    this.pictureBox2.Enabled = true;
                }

    Se não for isto, responde aí para que possamos te ajudar.

    Bom trabalho!

    quarta-feira, 24 de maio de 2017 12:21
  • Bom dia Rodrigo,

    Mais uma vez muito obrigado por sua atenção.

    Rodrigo vou fazer os testes com esse código hoje a noite, e te respondo logo em seguida.

    Atenciosamente,

    Edson

    quarta-feira, 24 de maio de 2017 13:34
  • Bom dia Edson535

    Ficamos no aguardo de um retorno.

    Atenciosamente,


    Guilherme Macedo S

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 24 de maio de 2017 14:42
    Moderador
  • Boa Tarde Rodrigo,

    Esqueci de perguntar,

    Onde eu colocaria esse código? no form do login ou no form das fases?

    Atenciosamente,

    Edson

    quarta-feira, 24 de maio de 2017 16:22
  • Boa Tarde Rodrigo,

    Esqueci de perguntar,

    Onde eu colocaria esse código? no form do login ou no form das fases?

    Atenciosamente,

    Edson

    No form das fases, onde tem as picturebox. Pode colocar no método construtor da classe. Ou cria um método separado para isto, e chama ele no construtor da classe e em outro lugar que seja necessário rever a fase atual.
    • Editado Rodrigo CdS quarta-feira, 24 de maio de 2017 16:38
    • Marcado como Resposta Edson535 sexta-feira, 26 de maio de 2017 14:28
    quarta-feira, 24 de maio de 2017 16:37
  • Boa Tarde Rodrigo,

    Cara, a gente que não entende de desenvolvimento pena hein, mas se Deus quiser eu vou aprender, estou estudando.

    Tentei implementar aqui a sua sugestão, mas deu um nó na minha cabeça, kkk.

    Criei a coluna UltimaFase na tabela tbl_login, no eventos click das picturebox que representa as fases coloquei o UPDATE pra atualizar a coluna toda vez que entrar, isso eu consegui fazer e está atualizando corretamente.

    O que não estou conseguindo é implementar esse controle que vc me passou.

    Olha só esse é o código do form das fases onde tem essas 5 picturebox e as cinco labels(ST, IN, AD, EX, MA), da imagem que postei acima, vè se pode me ajudar com o código por gentileza:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlServerCe;

    namespace Responda
    {
        public partial class Form2 : Form
        {
            string pasta_images = "";

            Image img_normal;
            Image img_high;
            Image img_disabled;
            Image img_normal2;
            Image img_high2;

            public Form2()
            {
                InitializeComponent();

                pasta_images = Application.StartupPath + @"\imagens\";

                img_normal = Image.FromFile(pasta_images + "FaseNormal.png");
                img_high = Image.FromFile(pasta_images + "FaseHigt.png");
                img_disabled = Image.FromFile(pasta_images + "FaseDesativado.png");
                img_normal2 = Image.FromFile(pasta_images + "pensandoNormal.png");
                img_high2 = Image.FromFile(pasta_images + "pensandoHigh.png");
            }

            private void Form2_Load(object sender, EventArgs e)
            {
                if (UsuarioLogado.NomeUsuario == "Admin")
                    menuStrip1.Visible = true;
                else 
                {
                    menuStrip1.Visible = false;
                }

                fase1.BackgroundImage = img_normal;
                fase2.BackgroundImage = img_normal;
                fase3.BackgroundImage = img_normal;
                fase4.BackgroundImage = img_normal;
                fase5.BackgroundImage = img_normal;
                btn_voltar.BackgroundImage = img_normal2;
            }

            private void perguntasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                CadastroPerguntas perg = new CadastroPerguntas();
                perg.ShowDialog();
            }

            private void rankingToolStripMenuItem_Click(object sender, EventArgs e)
            {
                relPontos rel = new relPontos();
                rel.ShowDialog();
            }

            private void cadastroToolStripMenuItem_Click(object sender, EventArgs e)
            {
                CadastroPontos cadPontos = new CadastroPontos();
                cadPontos.ShowDialog();
            }

            private void cadastroToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                CadastroUsuario cadastro = new CadastroUsuario();
                cadastro.Show();
            }

            private void alterarToolStripMenuItem_Click(object sender, EventArgs e)
            {
                AlterarUsuario alterar = new AlterarUsuario();
                alterar.Show();
            }

            private void fase1_MouseEnter(object sender, EventArgs e)
            {
                fase1.BackgroundImage = img_high;
            }

            private void fase1_MouseLeave(object sender, EventArgs e)
            {
                fase1.BackgroundImage = img_normal;
            }

            private void fase1_EnabledChanged(object sender, EventArgs e)
            {
                if (fase1.Enabled)
                    fase1.BackgroundImage = img_normal;
                else
                    fase1.BackgroundImage = img_disabled;
            }

            private void fase1_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);

                UltimaFase.Value = lblFase1.Text ;
                cad.Parameters.Add(UltimaFase);

                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");

                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);

                }
                finally
                {
                    con.Close();
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();

            }

    private void fase2_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);

                UltimaFase.Value = lblFase2.Text ;
                cad.Parameters.Add(UltimaFase);

                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");

                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);

                }
                finally
                {
                    con.Close();
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();

            }

    private void fase3_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);

                UltimaFase.Value = lblFase3.Text ;
                cad.Parameters.Add(UltimaFase);

                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");

                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);

                }
                finally
                {
                    con.Close();
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();

            }

    private void fase4_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);

                UltimaFase.Value = lblFase4.Text ;
                cad.Parameters.Add(UltimaFase);

                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");

                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);

                }
                finally
                {
                    con.Close();
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();

            }

    private void fase5_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);

                UltimaFase.Value = lblFase5.Text ;
                cad.Parameters.Add(UltimaFase);

                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");

                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);

                }
                finally
                {
                    con.Close();
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();

            }


            private void fase2_MouseEnter(object sender, EventArgs e)
            {
                fase2.BackgroundImage = img_high;
            }

            private void fase2_MouseLeave(object sender, EventArgs e)
            {
                fase2.BackgroundImage = img_normal;
            }

            private void fase2_EnabledChanged(object sender, EventArgs e)
            {
                if (fase2.Enabled)
                    fase2.BackgroundImage = img_normal;
                else
                    fase2.BackgroundImage = img_disabled;
            }

            private void fase3_MouseEnter(object sender, EventArgs e)
            {
                fase3.BackgroundImage = img_high;
            }

            private void fase3_MouseLeave(object sender, EventArgs e)
            {
                fase3.BackgroundImage = img_normal;
            }

            private void fase3_EnabledChanged(object sender, EventArgs e)
            {
                if (fase3.Enabled)
                    fase3.BackgroundImage = img_normal;
                else
                    fase3.BackgroundImage = img_disabled;
            }

            private void fase4_MouseEnter(object sender, EventArgs e)
            {
                fase4.BackgroundImage = img_high;
            }

            private void fase4_MouseLeave(object sender, EventArgs e)
            {
                fase4.BackgroundImage = img_normal;
            }

            private void fase4_EnabledChanged(object sender, EventArgs e)
            {
                if (fase4.Enabled)
                    fase4.BackgroundImage = img_normal;
                else
                    fase4.BackgroundImage = img_disabled;
            }

            private void fase5_MouseEnter(object sender, EventArgs e)
            {
                fase5.BackgroundImage = img_high;
            }

            private void fase5_MouseLeave(object sender, EventArgs e)
            {
                fase5.BackgroundImage = img_normal;
            }

            private void fase5_EnabledChanged(object sender, EventArgs e)
            {
                if (fase5.Enabled)
                    fase5.BackgroundImage = img_normal;
                else
                    fase5.BackgroundImage = img_disabled;
            }

            private void btn_voltar_MouseEnter(object sender, EventArgs e)
            {
                btn_voltar.BackgroundImage = img_high2;
            }

            private void btn_voltar_MouseLeave(object sender, EventArgs e)
            {
                btn_voltar.BackgroundImage = img_normal2;
            }

            private void btn_voltar_Click(object sender, EventArgs e)
            {
                this.Hide();
                Form1 login = new Form1();
                login.ShowDialog();
            }     
        }
    }





    • Editado Edson535 quarta-feira, 24 de maio de 2017 20:44
    quarta-feira, 24 de maio de 2017 20:34
  • Olá, Edson! Desculpe pela demora na resposta, pois estou enrolado aqui.

       Tenta aplicar as alterações que fiz abaixo - se não puder substituir todo o seu código por este, compare com o seu e aplica as alterações que fiz. Observe que pode ocorrer algum erro, pois não tenho como testar. Escrevi o código de forma que conforme as fases avancem, as fases anteriores sejam desabilitadas.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlServerCe;
    
    namespace Responda
    {
        public partial class Form2 : Form
        {
            string pasta_images = "";
    
            Image img_normal;
            Image img_high;
            Image img_disabled;
            Image img_normal2;
            Image img_high2;
    
            public Form2()
            {
                InitializeComponent();
    
                pasta_images = Application.StartupPath + @"\imagens\";
    
                img_normal = Image.FromFile(pasta_images + "FaseNormal.png");
                img_high = Image.FromFile(pasta_images + "FaseHigt.png");
                img_disabled = Image.FromFile(pasta_images + "FaseDesativado.png");
                img_normal2 = Image.FromFile(pasta_images + "pensandoNormal.png");
                img_high2 = Image.FromFile(pasta_images + "pensandoHigh.png");
    			
    			this.AtualizaHabilitacaoFases(this.GetUltimaFase());
            }
    
            private void Form2_Load(object sender, EventArgs e)
            {
                if (UsuarioLogado.NomeUsuario == "Admin")
                    menuStrip1.Visible = true;
                else 
                {
                    menuStrip1.Visible = false;
                }
    
    			/*
                fase1.BackgroundImage = img_normal;
                fase2.BackgroundImage = img_normal;
                fase3.BackgroundImage = img_normal;
                fase4.BackgroundImage = img_normal;
                fase5.BackgroundImage = img_normal;
    			*/
                btn_voltar.BackgroundImage = img_normal2;
            }
    
    	    /// <summary>
            /// Obtém na tabela de login a última fase jogada pelo usuário.
            /// </summary>
    		private string GetUltimaFase()
    		{
    			SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("select UltimaFase tbl_login where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
    			string ultimaFase;
                try
                {
                    con.Open();
                    ultimaFase = cad.ExecuteScalar();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
                }
    			
    			return ultimaFase;
    		}
    		
    	    /// <summary>
            /// Habilita e desabilita as fases conforme atualização da ultima fase jogada.
            /// </summary>		
    		private void AtualizaHabilitacaoFases(string ultimaFase)
    		{		
    			if(string.IsNullOrEmpty(ultimaFase))
    			{
    				fase1.Enabled = true;
    				fase2.Enabled = false;
    				fase3.Enabled = false;
    				fase4.Enabled = false;
    				fase5.Enabled = false;
    			}
    			else if (ultimaFase == lblFase1.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = true;
    				fase3.Enabled = false;
    				fase4.Enabled = false;
    				fase5.Enabled = false;						
    			}
    			else if (ultimaFase == lblFase2.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = false;
    				fase3.Enabled = true;
    				fase4.Enabled = false;
    				fase5.Enabled = false;	
    			}
    			else if (ultimaFase == lblFase3.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = false;
    				fase3.Enabled = false;
    				fase4.Enabled = true;
    				fase5.Enabled = false;	
    			}
    			else if (ultimaFase == lblFase4.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = false;
    				fase3.Enabled = false;
    				fase4.Enabled = false;
    				fase5.Enabled = true;	
    			}
    			else if (ultimaFase == lblFase5.Text)
    			{
    				fase1.Enabled = false;
    				fase2.Enabled = false;
    				fase3.Enabled = false;
    				fase4.Enabled = false;
    				fase5.Enabled = false;
    			}			
    		}
    		
            private void perguntasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                CadastroPerguntas perg = new CadastroPerguntas();
                perg.ShowDialog();
            }
    
            private void rankingToolStripMenuItem_Click(object sender, EventArgs e)
            {
                relPontos rel = new relPontos();
                rel.ShowDialog();
            }
    
            private void cadastroToolStripMenuItem_Click(object sender, EventArgs e)
            {
                CadastroPontos cadPontos = new CadastroPontos();
                cadPontos.ShowDialog();
            }
    
            private void cadastroToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                CadastroUsuario cadastro = new CadastroUsuario();
                cadastro.Show();
            }
    
            private void alterarToolStripMenuItem_Click(object sender, EventArgs e)
            {
                AlterarUsuario alterar = new AlterarUsuario();
                alterar.Show();
            }
    
            private void fase1_MouseEnter(object sender, EventArgs e)
            {
                fase1.BackgroundImage = img_high;
            }
    
            private void fase1_MouseLeave(object sender, EventArgs e)
            {
                fase1.BackgroundImage = img_normal;
            }
    
            private void fase1_EnabledChanged(object sender, EventArgs e)
            {
                if (fase1.Enabled)
                    fase1.BackgroundImage = img_normal;
                else
                    fase1.BackgroundImage = img_disabled;
            }
    	
            private void fase1_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase1.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase1.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();						
            }
    
    		private void fase2_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase2.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase2.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();
    
            }
    
    		private void fase3_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase3.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase3.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();
    
            }
    
    		private void fase4_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase4.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase4.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();
    
            }
    
    		private void fase5_Click(object sender, EventArgs e)
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cad = new SqlCeCommand("update tbl_login set UltimaFase = @UltimaFase where (Usuario = '" + UsuarioLogado.NomeUsuario + "')", con);
                SqlCeParameter UltimaFase = new SqlCeParameter("@UltimaFase", SqlDbType.NVarChar);
    
                UltimaFase.Value = lblFase5.Text ;
                cad.Parameters.Add(UltimaFase);
    
                try
                {
                    con.Open();
                    cad.ExecuteNonQuery();
                    //MessageBox.Show("Alterado com Sucesso!!");
    
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
    
                }
                finally
                {
                    con.Close();
    				this.AtualizaHabilitacaoFases(lblFase5.Text);
                }
                this.Close();
                per1 p1 = new per1();
                p1.ShowDialog();
    
            }
    
            private void fase2_MouseEnter(object sender, EventArgs e)
            {
                fase2.BackgroundImage = img_high;
            }
    
            private void fase2_MouseLeave(object sender, EventArgs e)
            {
                fase2.BackgroundImage = img_normal;
            }
    
            private void fase2_EnabledChanged(object sender, EventArgs e)
            {
                if (fase2.Enabled)
                    fase2.BackgroundImage = img_normal;
                else
                    fase2.BackgroundImage = img_disabled;
            }
    
            private void fase3_MouseEnter(object sender, EventArgs e)
            {
                fase3.BackgroundImage = img_high;
            }
    
            private void fase3_MouseLeave(object sender, EventArgs e)
            {
                fase3.BackgroundImage = img_normal;
            }
    
            private void fase3_EnabledChanged(object sender, EventArgs e)
            {
                if (fase3.Enabled)
                    fase3.BackgroundImage = img_normal;
                else
                    fase3.BackgroundImage = img_disabled;
            }
    
            private void fase4_MouseEnter(object sender, EventArgs e)
            {
                fase4.BackgroundImage = img_high;
            }
    
            private void fase4_MouseLeave(object sender, EventArgs e)
            {
                fase4.BackgroundImage = img_normal;
            }
    
            private void fase4_EnabledChanged(object sender, EventArgs e)
            {
                if (fase4.Enabled)
                    fase4.BackgroundImage = img_normal;
                else
                    fase4.BackgroundImage = img_disabled;
            }
    
            private void fase5_MouseEnter(object sender, EventArgs e)
            {
                fase5.BackgroundImage = img_high;
            }
    
            private void fase5_MouseLeave(object sender, EventArgs e)
            {
                fase5.BackgroundImage = img_normal;
            }
    
            private void fase5_EnabledChanged(object sender, EventArgs e)
            {
                if (fase5.Enabled)
                    fase5.BackgroundImage = img_normal;
                else
                    fase5.BackgroundImage = img_disabled;
            }
    
            private void btn_voltar_MouseEnter(object sender, EventArgs e)
            {
                btn_voltar.BackgroundImage = img_high2;
            }
    
            private void btn_voltar_MouseLeave(object sender, EventArgs e)
            {
                btn_voltar.BackgroundImage = img_normal2;
            }
    
            private void btn_voltar_Click(object sender, EventArgs e)
            {
                this.Hide();
                Form1 login = new Form1();
                login.ShowDialog();
            }     
        }
    }
    Bom trabalho!

    • Marcado como Resposta Edson535 sexta-feira, 26 de maio de 2017 14:28
    quinta-feira, 25 de maio de 2017 16:27
  • Rodrigo meu irmão,

    Muito obrigado mesmo, no final desse projeto, dando tudo certo, vou te pagar uma TUBAÍNA COM GELO E LIMÃO,kkkkkk. Brincadeira.

    Mas pode ter certeza que te darei créditos no projeto. E quem sabe num futuro próximos quando eu aprender um pouco mais programação a gente montar aí uma parceria.

    Sou do Estado de Rondônia, cidade Ariquemes, acho que vc consegue encontrar no mapa do Brasil, kkkkkk.

     

    Não sei nem como agradecer, obrigado por sua gentileza e tempo pra responder.

    Vou fazer os testes aqui, e posto logo a seguir com os resultados.

    Desde já agradeço seu empenho em me ajudar!

    Atenciosamente,

    Edson


    • Editado Edson535 quinta-feira, 25 de maio de 2017 17:30
    quinta-feira, 25 de maio de 2017 17:29
  • Boa Noite Rodrigo,

    Apresentou esse erro:

    quinta-feira, 25 de maio de 2017 23:51
  • Boa Noite Rodrigo,

    Fiz mais algumas alterações e testes aqui aparentemente deu certo.

    Na string que vc criou eu declarei um valor vazio nela:

    string ultimaFase = ""; 

    E converti o cad.ExecuteScalar pra string:

    ultimaFase = Convert.ToString(cad.ExecuteScalar());

    Nesse if inclui um ||, fiz isso porque quando respondia a ultima fase não ativa a fase1, e o certo é dá um loop, indo e voltando pelas fases

    É que no final das 5 fases os jogadores ganharão um prêmio, e dará início há uma nova rodada.

    if (string.IsNullOrEmpty(ultimaFase) || ultimaFase == lblFase5.Text)
    {
    fase1.Enabled = true;
    fase2.Enabled = false;
    fase3.Enabled = false;
    fase4.Enabled = false;
    fase5.Enabled = false;

    }

    Estou correto ou não?

    Vou fazer mais alguns testes e posto o resultado pra vc.

    Atenciosamente,

    Edson

    sexta-feira, 26 de maio de 2017 01:30
  • Boa Noite Rodrigo,

    Fiz mais algumas alterações e testes aqui aparentemente deu certo.

    Na string que vc criou eu declarei um valor vazio nela:

    string ultimaFase = ""; 

    E converti o cad.ExecuteScalar pra string:

    ultimaFase = Convert.ToString(cad.ExecuteScalar());

    Nesse if inclui um ||, fiz isso porque quando respondia a ultima fase não ativa a fase1, e o certo é dá um loop, indo e voltando pelas fases

    É que no final das 5 fases os jogadores ganharão um prêmio, e dará início há uma nova rodada.

    if (string.IsNullOrEmpty(ultimaFase) || ultimaFase == lblFase5.Text)
    {
    fase1.Enabled = true;
    fase2.Enabled = false;
    fase3.Enabled = false;
    fase4.Enabled = false;
    fase5.Enabled = false;

    }

    Estou correto ou não?

    Vou fazer mais alguns testes e posto o resultado pra vc.

    Atenciosamente,

    Edson

    Está ótimo! Se está funcionando como você queria, está certo. Não há uma forma "certa" de como programar uma funcionalidade, já que existem n maneiras de se chegar ao mesmo resultado (desde que se chegue ao resultado desejado). O que existe - e você vai conhecer mais sobre isto - são boas práticas na programação.

    Abraço, e sucesso!

    • Marcado como Resposta Edson535 sexta-feira, 26 de maio de 2017 14:28
    sexta-feira, 26 de maio de 2017 11:44
  • Bom dia Rodrigo,

    Muito obrigado pela orientação.

    Vou marcar como resposta.

    Se por uma caso surgir mais alguma dúvida sobre esse código, posso voltar aqui Rodrigo?

    Deus abençoe vc e sua família!

    Atenciosamente,

    Edson 

    sexta-feira, 26 de maio de 2017 14:28
  • Boa Dia Rodrigo,

    Por gentileza, gostaria de sua ajuda mais uma vez.


    Bom o que eu preciso:

    Tenho duas tabelas SQL:

    Pontuacao, com os campos usuario, pontos e data, essa tabela armazena o usuário logado, os pontos que ele ganhou e a data que jogou.

    Premio, com os campos usuariopremiopts_premio data, essa tabela armazena o usuário logado, o premio que ele retirou, os pontos que esse prêmio equivale e a data que ele retirou.

    O que eu gostaria de fazer é somar todos os pontos que ele fez e está armazenada coluna pontos da tabela Pontucao, somar todos os pontos da coluna pts_premios da tabela Premio, e depois fazer a subtração e me retornar o saldo de pontos que esse usuário ainda tem.

    apresentar em um DATAGRIDVIEW se possível.

    Ecemplo das tabelas:

    Tabela Pontuacao

    usuario  pontos  data

    joao        200        25/05/2017

    Eder        250        26/05/2017

    joao        150         28/05/2017

    Eder        100        29/05/2017

    Anna       200        29/05/2017

    Joao        240        30/05/2017

    Tabela Premio

    Usuario    premio    pts_pontos     data

    Joao            boné       20                 22/05/2017

    Eder            boné       20                 23/05/2017

    Joao            camiseta 90                 25/05/2017

    Joao            boné       20                 26/05/2017

    Eder            óculos     100              25/05/2017

    Anna           boné       20                22/05/2017

    Desde já agradeço

    Edson Goveia

    sábado, 3 de junho de 2017 14:59
  • Boa Dia Rodrigo,

    Por gentileza, gostaria de sua ajuda mais uma vez.


    Bom o que eu preciso:

    Tenho duas tabelas SQL:

    Pontuacao, com os campos usuario, pontos e data, essa tabela armazena o usuário logado, os pontos que ele ganhou e a data que jogou.

    Premio, com os campos usuariopremiopts_premio data, essa tabela armazena o usuário logado, o premio que ele retirou, os pontos que esse prêmio equivale e a data que ele retirou.

    O que eu gostaria de fazer é somar todos os pontos que ele fez e está armazenada coluna pontos da tabela Pontucao, somar todos os pontos da coluna pts_premios da tabela Premio, e depois fazer a subtração e me retornar o saldo de pontos que esse usuário ainda tem.

    apresentar em um DATAGRIDVIEW se possível.

    Ecemplo das tabelas:

    Tabela Pontuacao

    usuario  pontos  data

    joao        200        25/05/2017

    Eder        250        26/05/2017

    joao        150         28/05/2017

    Eder        100        29/05/2017

    Anna       200        29/05/2017

    Joao        240        30/05/2017

    Tabela Premio

    Usuario    premio    pts_pontos     data

    Joao            boné       20                 22/05/2017

    Eder            boné       20                 23/05/2017

    Joao            camiseta 90                 25/05/2017

    Joao            boné       20                 26/05/2017

    Eder            óculos     100              25/05/2017

    Anna           boné       20                22/05/2017

    Desde já agradeço

    Edson Goveia

    Olá, Edson!

       A consulta pode ser assim (pegue apenas a consulta final, e substitua os nomes das tabelas pelas suas):

    declare @Pontuacao table
    (
    	usuario		varchar(50)
    	, pontos	int
    	, data		datetime
    )
    
    insert into @Pontuacao values
    ('joao', 200, '2017-05-25')
    , ('Eder', 250, '2017-05-26')
    , ('joao', 150, '2017-05-28')
    , ('Eder', 100, '2017-05-29')
    , ('Anna', 200, '2017-05-29')
    , ('Joao', 240, '2017-05-30')
    
    --select * from @Pontuacao
    
    declare @Premio table
    (
    	usuario			varchar(50)
    	, premio		varchar(50)
    	, pts_pontos	int
    	, data			datetime
    )
    
    insert into @Premio values
    ('Joao', 'boné', 20, '2017-05-22')
    , ('Eder', 'boné', 20, '2017-05-23')
    , ('Joao', 'camiseta', 90, '2017-05-25')
    , ('Joao', 'boné', 20, '2017-05-26')
    , ('Eder', 'óculos', 100, '2017-05-25')
    , ('Anna', 'boné', 20, '2017-05-22')
    
    --select * from @Premio
    
    
    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, Premio.Pontos as PontosGastos
    from
    	@Pontuacao as Pontuacao
    	cross apply
    	(
    		select
    			Premio.usuario
    			, sum(Premio.pts_pontos) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos

    Esta query já serve para você simular os resultados. Para preencher um grid, segue o link onde há uma série de exemplos para você consultar. Sugiro utilizar o exemplo com o DataAdapter.

    Mais uma coisa: sugiro você ter uma coluna com o Id do usuário nas suas tabelas, pois utilizar strings como chave não é aconselhável. Bom trabalho!


    • Editado Rodrigo CdS segunda-feira, 5 de junho de 2017 00:28
    • Marcado como Resposta Edson535 quinta-feira, 8 de junho de 2017 14:27
    segunda-feira, 5 de junho de 2017 00:26
  • Bom dia Rodrigo,

    Mais uma vez muito obrigado por sua atenção.

    Vou fazer os testes aqui e posto logo a seguir os resultados.

    Atenciosamente,

    Edson

    segunda-feira, 5 de junho de 2017 13:49
  • Boa Noite Rodrigo,

    Desde de já obrigado por estar disposto em me ajudar.

    É o seguinte fiz o teste aqui, deu certo apenas o seguinte:

    Nessa consulta que me passou retorna o total de pontos ganhos (Pontos) e total de pontos dos premios (PontosGastos) por usuário, até aí tudo bem deu certo.

    O que faltou foi a criação de uma coluna com o saldo da subtração da coluna Pontos - PontosGastos

    Pontos - PontosGastos = SaldoPontos

    Atenciosamente,

    Edson

    quinta-feira, 8 de junho de 2017 01:39
  • Boa Noite Rodrigo,

    Desde de já obrigado por estar disposto em me ajudar.

    É o seguinte fiz o teste aqui, deu certo apenas o seguinte:

    Nessa consulta que me passou retorna o total de pontos ganhos (Pontos) e total de pontos dos premios (PontosGastos) por usuário, até aí tudo bem deu certo.

    O que faltou foi a criação de uma coluna com o saldo da subtração da coluna Pontos - PontosGastos

    Pontos - PontosGastos = SaldoPontos

    Atenciosamente,

    Edson

    Segue:

    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, Premio.Pontos as PontosGastos
    	, sum(Pontuacao.pontos) - Premio.Pontos as SaldoPontos
    from
    	@Pontuacao as Pontuacao
    	cross apply
    	(
    		select
    			Premio.usuario
    			, sum(Premio.pts_pontos) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos

    • Marcado como Resposta Edson535 quinta-feira, 8 de junho de 2017 14:27
    quinta-feira, 8 de junho de 2017 11:39
  • Bom dia Rodrigo,

    Mais uma vez muito obrigado!

    Estou estudando umas vídeo aulas pelo youtube, canal João Ribeiro, muito interessante o conteúdo, C# e SQL, muito bem explanado, são 200 vídeo aulas.

    Se você tiver alguns conteúdos interessantes pra me passar eu agradeço.

    Aliás, estou aprendendo com você também.

    Valeu brother, paz, alegria e muito sucesso pra você e sua família, fica com Deus.

    Atenciosamente,

    Edson


    • Editado Edson535 quinta-feira, 8 de junho de 2017 14:34
    quinta-feira, 8 de junho de 2017 14:34
  • Boa Noite Rodrigo,

    Deu certo essa consulta, mas tem um outro detalhe, o resultado que aparece é esse:

    Usuario  Pontos  PontosGastos  SaldoPontos

    Joao       2000     1500              500

    Maria      3000      2000             1000

    Eder        2000      1200             8000

    Mas gostaria que esse Select mostrasse também os Usuarios que que não resgatou nada, por exemplo, ficaria assim:

    Usuario  Pontos  PontosGastos  SaldoPontos

    Joao       2000     1500              500

    Maria      3000      2000             1000

    Eder        2000      1200             8000

    Anna       5000                          5000

    Marcelo    3000                          3000

    Marcos     1400      400               1000

    Marcia      500        200               300

    Adriano      4200                        4200

    Entendeu?

    desde Já Agradeço

    Edson

    quinta-feira, 8 de junho de 2017 23:28
  • Boa Noite Rodrigo,

    Deu certo essa consulta, mas tem um outro detalhe, o resultado que aparece é esse:

    Usuario  Pontos  PontosGastos  SaldoPontos

    Joao       2000     1500              500

    Maria      3000      2000             1000

    Eder        2000      1200             8000

    Mas gostaria que esse Select mostrasse também os Usuarios que que não resgatou nada, por exemplo, ficaria assim:

    Usuario  Pontos  PontosGastos  SaldoPontos

    Joao       2000     1500              500

    Maria      3000      2000             1000

    Eder        2000      1200             8000

    Anna       5000                          5000

    Marcelo    3000                          3000

    Marcos     1400      400               1000

    Marcia      500        200               300

    Adriano      4200                        4200

    Entendeu?

    desde Já Agradeço

    Edson

    Tenta isto:

    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, isnull(Premio.Pontos, 0) as PontosGastos
    	, sum(Pontuacao.pontos) - isnull(Premio.Pontos, 0) as SaldoPontos
    from
    	@Pontuacao as Pontuacao
    	outer apply
    	(
    		select
    			Premio.usuario
    			, sum(Premio.pts_pontos) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos
    Bom trabalho!

    • Marcado como Resposta Edson535 sexta-feira, 9 de junho de 2017 13:51
    sexta-feira, 9 de junho de 2017 12:17
  • Bom dia Rodrigo,

    Obrigado por sua atenção, deu certo aqui, só troquei o isnull por coalesce.

    Atenciosamente,

    Edson

    sexta-feira, 9 de junho de 2017 13:52
  • Boa Tarde Rodrigo

    A consulta deu certo.

    Mais um detalhe

    Nessa consulta eu consigo carregar o datagridview:

    Question
    Votar

    Boa Noite Rodrigo,

    Desde de já obrigado por estar disposto em me ajudar.

    É o seguinte fiz o teste aqui, deu certo apenas o seguinte:

    Nessa consulta que me passou retorna o total de pontos ganhos (Pontos) e total de pontos dos premios (PontosGastos) por usuário, até aí tudo bem deu certo.

    O que faltou foi a criação de uma coluna com o saldo da subtração da coluna Pontos - PontosGastos

    Pontos - PontosGastos = SaldoPontos

    Atenciosamente,

    Edson

    Segue:

    select Pontuacao.usuario , sum(Pontuacao.pontos) as Pontos , Premio.Pontos as PontosGastos , sum(Pontuacao.pontos) - Premio.Pontos as SaldoPontos from @Pontuacao as Pontuacao cross apply ( select Premio.usuario , sum(Premio.pts_pontos) as Pontos from @Premio as Premio where UPPER(Premio.usuario) = UPPER(Pontuacao.usuario) group by Premio.usuario ) as Premio group by Pontuacao.usuario , Premio.Pontos


    sexta-feira, 9 de junho de 2017 17:45
  • Já nessa da um erro 

    

    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, isnull(Premio.Pontos, 0) as PontosGastos
    	, sum(Pontuacao.pontos) - isnull(Premio.Pontos, 0) as SaldoPontos
    from
    	@Pontuacao as Pontuacao
    	outer apply
    	(
    		select
    			Premio.usuario
    			, sum(Premio.pts_pontos) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos

    sexta-feira, 9 de junho de 2017 17:49
  • Esse é código que estou usando pra carregar o DataGridView:

    Essa consulta da certo, carrega o Datagridview.

    Já se eu trocar essa consulta pela outra com o parametro isnull dá o erro.

     private void carregarGrid()
            {
                var sqlCeDataAdapter = new SqlCeDataAdapter("SELECT Pontuacao.Cpf, sum(Pontuacao.Pontuacao) as Pontos, Resgate.Pontos as PontosGastos,sum(Pontuacao.Pontuacao) - Resgate.Pontos as SaldoPontos from Pontuacao as Pontuacao cross 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", @"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                var sqlCeCommandBuilder = new SqlCeCommandBuilder(sqlCeDataAdapter);
                var dataTable = new DataTable();
                sqlCeDataAdapter.Fill(dataTable);
                var bindingSource = new BindingSource();
                bindingSource.DataSource = dataTable;
                dataGridView1.DataSource = bindingSource;
                this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 16);
                this.dataGridView1.DefaultCellStyle.ForeColor = Color.DarkSlateGray;
                dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            }

    Me desculpa pelo código, como estou fazendo testes não me preocupei em identar o código, apenas pra ver o resultado.

    sexta-feira, 9 de junho de 2017 19:00
  • Experimenta substituir isnull por coalesce.
    sexta-feira, 9 de junho de 2017 19:27
  • Fiz esse procedimento, mas continua não carregado o datagridview

    A consulta funciona perfeitamente, me trás os resultados que eu preciso, só não consigo carregar essa consulta num DataGridView.

    Atenciosamente,

    Edson

    • Editado Edson535 sexta-feira, 9 de junho de 2017 20:39
    sexta-feira, 9 de junho de 2017 20:36
  • Fiz esse procedimento, mas continua não carregado o datagridview

    A consulta funciona perfeitamente, me trás os resultados que eu preciso, só não consigo carregar essa consulta num DataGridView.

    Atenciosamente,

    Edson

    A princípio está tudo certo na codificação. Você viu que a consulta traz os valores corretamente ao debugar o fonte? Se sim, você verificou se o dataTable está preenchido? Pelo que pude verificar do código, se a consulta está retornando o resultado, deveria preencher o grid, a não ser que você tenha algum outro método que é executado depois deste que reseta o datasource.
    • Marcado como Resposta Edson535 sábado, 10 de junho de 2017 14:52
    sexta-feira, 9 de junho de 2017 21:59
  • Fiz esse procedimento, mas continua não carregado o datagridview

    A consulta funciona perfeitamente, me trás os resultados que eu preciso, só não consigo carregar essa consulta num DataGridView.

    Atenciosamente,

    Edson

    A princípio está tudo certo na codificação. Você viu que a consulta traz os valores corretamente ao debugar o fonte? Se sim, você verificou se o dataTable está preenchido? Pelo que pude verificar do código, se a consulta está retornando o resultado, deveria preencher o grid, a não ser que você tenha algum outro método que é executado depois deste que reseta o datasource.

    O erro que dá é nessa inha do código:

                sqlCeDataAdapter.Fill(dataTable);

    O interessante é que na consulta sem o atributo isnull ou coalesce carrega o datagridview certinho, já se eu colocar esse atributo não carrega e dá esse erro.

    Atenciosamente,

    Edson



    • Marcado como Resposta Edson535 sábado, 10 de junho de 2017 14:31
    • Editado Edson535 sábado, 10 de junho de 2017 14:55
    sábado, 10 de junho de 2017 14:30
  • Tenta um destes:

    
    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, Premio.Pontos as PontosGastos
    	, sum(Pontuacao.pontos) - Premio.Pontos as SaldoPontos
    from
    	@Pontuacao as Pontuacao
    	outer apply
    	(
    		select
    			Premio.usuario
    			, isnull(sum(Premio.pts_pontos), 0) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos
    
    
    select
    	Pontuacao.usuario
    	, sum(Pontuacao.pontos) as Pontos
    	, Premio.Pontos as PontosGastos
    	, sum(Pontuacao.pontos) - Premio.Pontos as SaldoPontos
    from
    	@Pontuacao as Pontuacao
    	outer apply
    	(
    		select
    			Premio.usuario
    			, sum(case when (Premio.pts_pontos = null) then 0 else Premio.pts_pontos end) as Pontos
    		from
    			@Premio as Premio
    		where
    			UPPER(Premio.usuario) = UPPER(Pontuacao.usuario)
    		group by
    			Premio.usuario
    	) as Premio
    group by
    	Pontuacao.usuario
    	, Premio.Pontos
    Realmente não deveria da erro. Se acontecer erro novamente, por favor, envia uma imagem com a mensagem de erro no momento do debug.

    segunda-feira, 12 de junho de 2017 12:24
  • Bom dia Rodrigo,

    Como sempre prestativo.

    Deus te abençoe sempre, vc e sua família.

    Vou fazer os testes aqui e te retorno.

    Atenciosamente,

    Edson

    segunda-feira, 12 de junho de 2017 13:16