none
SELECT COM DUAS CONDIÇÕES RRS feed

  • Pergunta

  • Olá pessoal,

    Estou com uma dúvida aqui na minha aplicação, acredito que seja algo simples, mas estou me enrolando. Eu tenho um procedimento no meu BD que faz um select com duas condições:

    ALTER PROCEDURE [dbo].[uspConsultarLaudo]
    
    @NomeLaudo VARCHAR(250),
    @NomeMedicoResponsavel VARCHAR(250)
    
    AS
    BEGIN
    
    SELECT
    CodLaudo,
    NomeLaudo,
    DescricaoLaudo,
    NomeMedicoResponsavel
    
    FROM Laudos
    
    WHERE NomeLaudo LIKE '%' + @NomeLaudo + '%' AND NomeMedicoResponsavel = @NomeMedicoResponsavel
    END
    


    Até ai tudo bem, consigo fazer essa verificação colocando essas duas strings no banco...

    Só preciso saber como faço pra executar esse mesmo comando no visual. Basicamente, eu tenho uma tabela de Laudos com: CodLaudo, NomeLaudo, DescricaoLaudo e NomeMedicoResponsavel, e, quando eu fizer a pesquisa, quero que ele traga só os laudos que estão cadastrados com o nome do médico que está logado no sistema.

    Meu consultar está estruturado assim:

    public NovoLaudoColecao ConsultarLaudo(string consultarNovoLaudoColecao)
            {
                try
                {
                    NovoLaudoColecao novoLaudoColecao = new NovoLaudoColecao();
                    acessoDadosSQLServer.LimparParametros();
                    acessoDadosSQLServer.AdicionarParametros("@NomeLaudo", consultarNovoLaudoColecao);
                    acessoDadosSQLServer.AdicionarParametros("@NomeMedicoResponsavel", consultarNovoLaudoColecao);
                    DataTable dataTableNovoLaudo = acessoDadosSQLServer.ExecutarConsulta(CommandType.StoredProcedure, "uspConsultarLaudo");
    
                    foreach (DataRow linha  in dataTableNovoLaudo.Rows)
                    {
                        NovoLaudo novoLaudo = new NovoLaudo();
                        novoLaudo.CodLaudo = Convert.ToInt32(linha["CodLaudo"]);
                        novoLaudo.NomeLaudo = Convert.ToString(linha["NomeLaudo"]);
                        novoLaudo.DescricaoLaudo = Convert.ToString(linha["DescricaoLaudo"]);
                        novoLaudo.NomeMedicoResponsavel = Convert.ToString(linha["NomeMedicoResponsavel"]);
                        novoLaudoColecao.Add(novoLaudo);
                    }
                    return novoLaudoColecao;
                }
                catch (Exception ex)
                {
    
                    throw new Exception("Exame não encontrado. Detalhe:" + ex.Message);
                }
            }
    


    E o meu evento textchanged está assim:

    private void txtPesquisaLaudo_TextChanged(object sender, EventArgs e)
            {
                var nomeMedico = lblNomeMedicoLaudos.Text;
                var nomeUsuario = Singleton.Instance.UsuarioLogado;
    
                if (txtPesquisaLaudo.Text.Trim().Length >= 3)
                {
                    NovoLaudoNegocios novoLaudoNegocios = new NovoLaudoNegocios();
                    NovoLaudoColecao novoLaudoColecao = new NovoLaudoColecao();
                    novoLaudoColecao = novoLaudoNegocios.ConsultarLaudo(string.Concat(nomeMedico) + string.Concat(txtPesquisaLaudo.Text));
                    dgPesquisaLaudo.DataSource = null;
                    dgPesquisaLaudo.DataSource = novoLaudoColecao;
                    dgPesquisaLaudo.Update();
                    dgPesquisaLaudo.Refresh();
                }
            } 
    

    Eu não estou conseguindo concatenar a pesquisa com o "nome do laudo" com o "nome do médico" deu pra entender?

    Alguém pode me ajudar? Bom dia...


    sexta-feira, 28 de outubro de 2016 11:19

Respostas

  • Felipe bom dia!

    no seu método consulta laudo, você esta passando apenas um parâmetro que é a consultaNovoLaudoColecao, porem os eu procedimento espera receber dois parâmetros.

    Você esta passando o mesmo valor para os dois parâmetros...

    faz assim:

    public NovoLaudoColecao ConsultarLaudo(string NomeLaudo, string NomeMedico)
    

    e passe os parametros:

    acessoDadosSQLServer.AdicionarParametros("@NomeLaudo", NomeLaudo); 
    acessoDadosSQLServer.AdicionarParametros("@NomeMedicoResponsavel", NomeMedico);

    testa ai e me fala...

    Thyago Gonçalves


    • Marcado como Resposta Felipe STW sexta-feira, 28 de outubro de 2016 12:24
    sexta-feira, 28 de outubro de 2016 11:39

Todas as Respostas

  • Felipe bom dia!

    no seu método consulta laudo, você esta passando apenas um parâmetro que é a consultaNovoLaudoColecao, porem os eu procedimento espera receber dois parâmetros.

    Você esta passando o mesmo valor para os dois parâmetros...

    faz assim:

    public NovoLaudoColecao ConsultarLaudo(string NomeLaudo, string NomeMedico)
    

    e passe os parametros:

    acessoDadosSQLServer.AdicionarParametros("@NomeLaudo", NomeLaudo); 
    acessoDadosSQLServer.AdicionarParametros("@NomeMedicoResponsavel", NomeMedico);

    testa ai e me fala...

    Thyago Gonçalves


    • Marcado como Resposta Felipe STW sexta-feira, 28 de outubro de 2016 12:24
    sexta-feira, 28 de outubro de 2016 11:39
  • Seu método não deveria ter parâmetros separados para laudo e nome do médico?

    Assim:

    public NovoLaudoColecao ConsultarLaudo(string nomeLaudo, string nomeMedico)
            {
                try
                {
                    NovoLaudoColecao novoLaudoColecao = new NovoLaudoColecao();
                    acessoDadosSQLServer.LimparParametros();
                    acessoDadosSQLServer.AdicionarParametros("@NomeLaudo", nomeLaudo);
                    acessoDadosSQLServer.AdicionarParametros("@NomeMedicoResponsavel", nomeMedico);
                    DataTable dataTableNovoLaudo = acessoDadosSQLServer.ExecutarConsulta(CommandType.StoredProcedure, "uspConsultarLaudo");
    
                    foreach (DataRow linha  in dataTableNovoLaudo.Rows)
                    {
                        NovoLaudo novoLaudo = new NovoLaudo();
                        novoLaudo.CodLaudo = Convert.ToInt32(linha["CodLaudo"]);
                        novoLaudo.NomeLaudo = Convert.ToString(linha["NomeLaudo"]);
                        novoLaudo.DescricaoLaudo = Convert.ToString(linha["DescricaoLaudo"]);
                        novoLaudo.NomeMedicoResponsavel = Convert.ToString(linha["NomeMedicoResponsavel"]);
                        novoLaudoColecao.Add(novoLaudo);
                    }
                    return novoLaudoColecao;
                }
                catch (Exception ex)
                {
    
                    throw new Exception("Exame não encontrado. Detalhe:" + ex.Message);
                }
            }

    E pra consultar:

    novoLaudoColecao = novoLaudoNegocios.ConsultarLaudo(nomeMedico, txtPesquisaLaudo.Text);

    Apenas pra constar, o String.Concat é usado com dois parâmetros, que são as duas strings que se deseja concatenar. Ex: String.Concat("João ", "Pedro")


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    sexta-feira, 28 de outubro de 2016 11:42
  • PERFEITO Thyago!

    Tudo certo, simples e objetivo!

    Muito obrigado, bom dia!

    sexta-feira, 28 de outubro de 2016 12:24