none
Argumento DateTime não aceita variável como parâmetro RRS feed

  • Pergunta

  • Criei um método com vários argumentos, entre eles um argumento do tipo DateTime. Então, fiz um swtch...case e carrego uma variável do tipo DateTime, com as condições do swtch..case,conforme abaixo.

    DateTime? _dtprazo = null;

                switch(rblTarefa.SelectedIndex)
                {
                    case 1:
                        _dtprazo = DateTime.Now;
                        break;
                    case 2:
                        _dtprazo = DateTime.Now.AddDays(3);
                        break;
                    case 3:
                        _dtprazo = DateTime.Now.AddDays(3);
                        break;
                    case 4:
                        _dtprazo = DateTime.Now.AddDays(3);
                        break;
                    case 5:
                        _dtprazo = DateTime.Now.AddDays(3);
                        break;
                }

                    

    string mensagem = "Cadastro inserido com sucesso";
                try
                {
                    dados.insereCadastro(int.Parse(Session["CodUsuario"].ToString()), edtPj.Text, _dtprazo, rblTarefa.SelectedValue, rblAudiencia.SelectedValue);

                    ClientScript.RegisterClientScriptBlock(this.GetType(), "MensagemDeAlert", "alert('" + mensagem + "');", true);
                }
                catch (Exception ex)
                {
                    lblErro.Text = "Não foi possível inserir um novo cadastro: \n" + ex.Message;
                }

    Dá erro, mas se eu trocar o _dataprazo por DateTime.Now, por exemplo, aí funciona, mas eu preciso da variável, para alimentar essa data dentro das condições. Fiz outro exemplo, com variável em outro WebForm e funcionou. O que está errado nesse exemplo? O erro está abaixo:

    The best overloaded method match for 'WFJuridico.InsereDados.EntradaDados.insereCadastro(int, string, System.DateTime, string, string)' has some invalid arguments


    segunda-feira, 8 de abril de 2013 12:51

Respostas

  • Olá pnet,

    É isso mesmo,

    Mude a assinatura do seu método para :

    WFJuridico.InsereDados.EntradaDados.insereCadastro(int, string, System.DateTime?, string, string)

    ou passe como parametro o seguinte:

    _dtPrazo.Value

    Abraço!!!

    segunda-feira, 8 de abril de 2013 13:07

Todas as Respostas

  • Bom dia

    O fato que seu metodo de inserção quer um tipo DateTime  e não DateTime? , para reverter isso há 3 formas

    1º Converta _dtaPrazo para Convert.ToDateTime(_dtaPrazo)

    ou

    2º Deixe o metodo de inserção insereCadastrado com o parametro DateTime?

    ou

    3º Deixe a variavel _daPrazo como DateTime apenas sem o ? dessa forma DateTime _dtPrazo = DateTime.MinValue como inicial .

    Espero ter ajudado.


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br


    segunda-feira, 8 de abril de 2013 13:02
  • Olá pnet,

    Você está usando um DateTime nullable na declaração da variável...

    Verifique se na assinatura do seu método, o parametro DateTime é nullable também.

    Se NÃO for nullable, você pode usar o seguinte:

    _dtPrazo.Value

    Abraço!!!

    • Sugerido como Resposta Israel Vilela segunda-feira, 8 de abril de 2013 13:11
    segunda-feira, 8 de abril de 2013 13:05
  • Olá pnet,

    É isso mesmo,

    Mude a assinatura do seu método para :

    WFJuridico.InsereDados.EntradaDados.insereCadastro(int, string, System.DateTime?, string, string)

    ou passe como parametro o seguinte:

    _dtPrazo.Value

    Abraço!!!

    segunda-feira, 8 de abril de 2013 13:07
  • Olá pnet,

    Deu certo?

    Abraço!!!

    terça-feira, 9 de abril de 2013 00:30
  • Desfiz o nulable e deu certo. Faltou atenção de minha parte. Resolvido.
    terça-feira, 9 de abril de 2013 20:04
  • Só não esquece de marcar como resposta pnet... blz!!!

    Isso é importante pra quem responde!!

    Abraço!!


    (Se a isto ajudou a resolver o problema, por favor, marque como resposta)

    terça-feira, 9 de abril de 2013 20:32