Usuário com melhor resposta
Argumento DateTime não aceita variável como parâmetro

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
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!!!
- Marcado como Resposta William John Adam TrindadeModerator quarta-feira, 10 de abril de 2013 14:08
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- Editado Davi Murilo segunda-feira, 8 de abril de 2013 13:03
- Sugerido como Resposta Samuel Rodrigues dos Anjos terça-feira, 9 de abril de 2013 23:46
-
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
-
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!!!
- Marcado como Resposta William John Adam TrindadeModerator quarta-feira, 10 de abril de 2013 14:08
-
-
-