none
Colocar mensagem se query retorna verdadeiro ou falso RRS feed

  • Pergunta

  • Olá.

    Tenho no meio de um código uma query sql que faz uma pesquisa no na base de dados e retorna apenas dados de processos com situação "NÃO" e com diferença de data início/fim maior que 7 dias. 

    O que preciso:

    Que ao inicializar o programa ao dar o Load, o sistema faça essa consulta na base e me avise na tela se há situações verdadeiras de acordo com os parâmetros que coloquei na sql. Porém não sei se isso é mais fácil via sql ou no próprio código do form e como faço.

    Assim está meu código atualmente (porém ele retorna sempre verdadeiro, mesmo não sendo):

     //Faz a leitura na base de dados e verifica se há movimentações atrasadas a serem feitas no sistema, caso sim, lança aviso na tela.
            {
                string strConnSdE = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\dbSigae.mdb;Persist Security Info=True;";
                string strSQLsDE = "SELECT MovNroProcesso, MovMatricula, MovNome, MovDataSIS, MovData FROM CadMovimentacao WHERE MovConclusao = 'NÃO' AND MovDataSIS - MovData >= 7";
                //Cria conexão com a BD:
                OleDbConnection dbConnection = new OleDbConnection(strConnSdE);
                //Cria comando que starta a query:
                OleDbCommand cmdQuery = new OleDbCommand(strSQLsDE, dbConnection);
                try
                {
                    //Abre o banco:
                    dbConnection.Open();
                    //Executa a query:
                    
                    cmdQuery.ExecuteNonQuery();
                   
                    MessageBox.Show("Há movimentações em atraso.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                       
            }
                catch (OleDbException ex)
                {
                    MessageBox.Show("Erro: " + ex.Message);
                }
    
                finally
                {
                    dbConnection.Close();
                }
            }
        
            }

    sexta-feira, 3 de novembro de 2017 18:37

Respostas

  • Olá Helinton!

    Você precisa na verdade retornar um valor na query chamando um "ExecuteScalar" aí depois você compara se o valor retornado é o valor esperado.. Caso positivo, você mostra a mensagem..

    Exemplo:

    string strSQLsDE = "SELECT 1 FROM CadMovimentacao WHERE MovConclusao = 'NÃO' AND MovDataSIS - MovData >= 7";
    
    // E depois...
    var resultado = cmdQuery.ExecuteScalar();
    if (resultado != null && resultado != DBNull.Value && Convert.ToInt32(resultado) == 1)
    {
    	// Mostra msg
    }

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    segunda-feira, 6 de novembro de 2017 13:34
    Moderador

Todas as Respostas