none
Converter DateTime para DateTimePicker RRS feed

  • Pergunta

  • Preciso buscar no banco de dados uma lista de notas filtrando pela data inicio, data final e o código do funcionário (oferecida pelo usuário). Porém estou com dificuldade em pesquisar pela data, o erro é ao conveter de DateTime para DatetimePicker

    Banco de Dados:
           
      public List<Nota> BuscarNotas(int funcionarioid, DateTime dataemissaoi, DateTime dataemissaof)
            {
                List<Nota> oNotas = new List<Nota>();
                using (MySqlConnection conexao = ConexaoBD.getInstancia().getConexao())
                {
                    try
                    {
                        conexao.Open();
                        MySqlCommand comando = new MySqlCommand();
                        comando = conexao.CreateCommand();
    
    
                        comando.CommandText = "select NotaID, ClienteID, NumeroNota, DataEmissao, Status, ValorPago, Desconto, DataPagamentoFinal from nota where BETWEEN DataEmissao = @DataEmissaoI AND DataEmissao = @DataEmissaoF and FuncionarioID  = @FuncionarioID;";
                        comando.Parameters.AddWithValue("ClienteID", funcionarioid).ToString();
                        comando.Parameters.AddWithValue("DataEmissaoI", dataemissaoi).ToString();
                        comando.Parameters.AddWithValue("DataEmissaoF", dataemissaof).ToString();
                        MySqlDataReader reader = comando.ExecuteReader();
                        while (reader.Read())
                        {
                            //Objeto Cliente
                            Nota oNota = new Nota();
                            oNota.NotaID = Convert.ToInt32(reader["NotaID"].ToString());
                            oNota.FuncionarioID = Convert.ToInt32(reader["ClienteID"].ToString());
                            oNota.NumeroNota = reader["NumeroNota"].ToString();
                            oNota.DataEmissao = Convert.ToDateTime(reader["DataEmissao"].ToString());
                            oNota.Status = (Status)Convert.ToInt16(reader["Status"].ToString());
                            if ((reader["DataPagamentoFinal"] != DBNull.Value))
                                oNota.DataPagamentoFinal = Convert.ToDateTime(reader["DataPagamentoFinal"].ToString());
                            if ((reader["ValorPago"] != DBNull.Value))
                                oNota.ValorPago = Convert.ToDecimal(reader["ValorPago"].ToString());
                            if ((reader["Desconto"] != DBNull.Value))
                                oNota.Desconto = Convert.ToDecimal(reader["Desconto"].ToString());
    
                            oNotas.Add(oNota);
                        }
                    }
                    catch (MySqlException ex)
                    {
                        throw new System.Exception(ex.ToString());
                    }
                    finally
                    {
                        conexao.Close();
                    }
                }
                return oNotas;
            }
    
    



    Chamando no Négocio:
            public List<Nota> BuscarNotas(int funcionarioid, DateTime dataemissaoi, DateTime dataemissaof)
            {
                return _bd.BuscarNotas(funcionarioid,dataemissaoi,dataemissaof);
            }
    
    


    E por fim, chamando no formulário


         
       private void Txt_CodigoFuncionario_TextChanged(object sender, EventArgs e)
            {
                if (txt_CodigoFuncionario.Text.Trim().Equals(String.Empty))
                {
                    PrepararLista(lista);
                    return;
                }
                else
                {
    
                    List<Nota> listaFuncionario = new List<Nota>();
                    listaFuncionario = new RelatorioNG().BuscarNotas(Convert.ToInt32(txt_CodigoFuncionario.Text.Trim()), Convert.ToDateTime(data_Inicial), Convert.ToDateTime(data_Final));
                    lista = new List<Nota>();
                    foreach (var item in listaFuncionario)
                    {
                        Nota novaNota = new Nota();
                        novaNota.NotaID = item.NotaID;
                        novaNota.NumeroNota = item.NumeroNota;
                        novaNota.DataEmissao = item.DataEmissao;
                        novaNota.Status = item.Status;
    
                        lista.Add(novaNota);
                    }
    
                    PrepararLista(lista);
                }
                MascaraCampoNumero.AplicarEventos(txt_CodigoFuncionario);
            }


    quarta-feira, 23 de outubro de 2019 02:25

Todas as Respostas

  • Rayanne,

       Se você usar o padrão "ANSI" dificílmente errará. Exemplo:

    dateTimePicker1.Value.ToString("yyyy/MM/dd")

    ========================================================
    How to convert DateTimepicker value to date datatype?

    https://stackoverflow.com/questions/33796845/how-to-convert-datetimepicker-value-to-date-datatype
    ========================================================
    Passing a dateFrom datetimepicker to datetime without time!!( crutial no time in value allowd)  

    https://social.msdn.microsoft.com/forums/en-US/07989134-4952-4908-ad6a-e53a40058e3e/passing-a-datefrom-datetimepicker-to-datetime-without-time-crutial-no-time-in-value-allowd
    ========================================================
    DateTime picker C# format

    https://stackoverflow.com/questions/13711358/datetime-picker-c-sharp-format
    ========================================================
    How to convert string to dateTimePicker fromate in C#?

    https://www.codeproject.com/questions/337693/how-to-convert-string-to-datetimepicker-fromate-in
    ========================================================


    []'s,
    Fabio I.
    • Editado Fabio I quarta-feira, 23 de outubro de 2019 11:02
    quarta-feira, 23 de outubro de 2019 11:01
  • Fabio, desculpe, ainda sim fiquei confusa. Eu insiro 
    dateTimePicker1.Value.ToString("yyyy/MM/dd")
    no select do meu banco de dados?
    quarta-feira, 23 de outubro de 2019 15:22
  • Rayanne,

       O seu Banco de dados vair trazer a informação certa, mas no formato dele. Você precisa manipular a informação na recepção. A mesma coisa ocorre quando você envia ao Banco de Dados uma data desta forma: "12/11/2019". O Banco de dados não sabe exatamente se é "dd/MM/yyyy" ou "MM/dd/yyyy", então é melhor sempre trabalhar com o ano na frente (padrão ANSI): "yyyy/MM/dd" e somente no memonto de exibir, você coloca no parão brasileiro "dd/MM/yyyy".

       Exemplos:
       novaNota.DataEmissao = item.DataEmissao.Value.ToString("yyyy/MM/dd");
          if ((reader["DataPagamentoFinal"] != DBNull.Value))
             oNota.DataPagamentoFinal = reader["DataPagamentoFinal"].ToString("yyyy/MM/dd");

    []'s,
    Fabio I.
    quinta-feira, 24 de outubro de 2019 10:52