none
Problema sqlDateTime Overflow RRS feed

  • Pergunta

  • Pessoal, Bom Dia.

    Ao executar minha aplicação, estou recebendo o seguinte erro:

    Server Error in '/' Application.
    SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    
    Exception Details: System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
    
    Source Error:
    
    
    Line 204:            var horasVagasFim = new List<HoraUtil>();
    Line 205:            var horasFalta = new List<InstrutorPrevisaoFalta>();
    Line 206:            var agendamentos = new List<AgendamentoAulaPratica>();
    Line 207:

    Infelizmente até no modo debug não informa nada mais, apenas isso...

    Alguem tem alguma ideia?

    segunda-feira, 8 de outubro de 2012 13:26

Todas as Respostas

  • Lucas, 

    Tenta inicializar suas variáveis DateTime na tela.
    Tem algum local que você informa algum parâmetro pro SQL Server do tipo DateTime?

    Abraços,


    André Baltieri
    MTAC – Microsoft Technical Audience Contributor

    Twitter: @andrebaltieri
    Blog: http://andrebaltieri.net

    segunda-feira, 8 de outubro de 2012 15:43
  • André, Boa Tarde.

    Andei olhando e não encontrei, segue os fontes abaixo (As vezes vc encontra erro que deixei passa batido)

    AgendamentoAulaPraticaModel.cs

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using CFCHabilita.Dados.Contexto;
    using CFCHabilita.Web.Core;
    
    namespace CFCHabilita.Web.Models
    {
        public class AgendamentoAulaPraticaListModel : _FilterModel
        {
            public IQueryable<AgendamentoAulaPratica> List { get; set; }
            public List<HoraUtil> HorasUteis { get; set; }
    
            public DateTime Data { get; set; }
    
            public string Mode { get; set; }
        }
    
        public class AgendamentoAulaPraticaModel : _BaseModel
        {
            public int IdAgendamentoAulaPratica { get; set; }
    
            public int IdMatricula { get; set; }
    
            [DisplayName("CPF do Aluno")]
            public string CPF { get; set; }
    
            [DisplayName("Nome")]
            public string Nome
            {
                get { return Matricula.Cliente.Nome; }
            }
    
            public string Telefone
            {
                get { return Matricula.Cliente.Telefone; }
            }
    
            private Matricula _matricula;
            public Matricula Matricula
            {
                get { return _matricula ?? new Matricula { Categoria = new Categoria(), Cliente = new Cliente() }; }
                set { _matricula = value; }
            }
    
            public string Renach
            {
                get
                {
                    return Matricula.Renach;
                }
            }
    
            [DisplayName("Categoria")]
            public string Categoria
            {
                get { return Matricula.Categoria.Descricao; }
            }
    
            [DisplayName("Instrutor")]
            public int IdInstrutor { get; set; }
    
            [DisplayName("Veículo")]
            public int IdVeiculo { get; set; }
    
            [Required(ErrorMessage = "Você deve uma data.")]
            public string Data { get; set; }
    
            [DisplayName("Hora Início")]
            [Required(ErrorMessage = "Você deve informar a Hora de Início.")]
            public string HoraInicio { get; set; }
    
            [DisplayName("Hora Término")]
            [Required(ErrorMessage = "Você deve informar a Hora Final.")]
            public string HoraFinal { get; set; }
    
            [DisplayName("Presença Confirmada")]
            [DefaultValue(false)]
            public bool PresencaConfirmada { get; set; }
    
            public bool RecarregaLista { get; set; }
    
            public List<Instrutor> Instrutores { get; set; }
            public List<Veiculo> Veiculos { get; set; }
            public List<HoraUtil> HorasUteisInicio { get; set; }
            public List<HoraUtil> HorasUteisFim { get; set; }
    
    
            public IEnumerable<SelectListItem> ListaInstrutores
            {
                get
                {
                    var ret = new List<SelectListItem>();
    
                    var t = new SelectListItem();
                    t.Text = "-- Selecione --";
                    t.Value = "0";
                    ret.Add(t);
    
                    foreach (var item in Instrutores)
                    {
                        var selectListItem = new SelectListItem();
                        selectListItem.Text = item.Nome;
                        selectListItem.Value = item.IdInstrutor.ToString();
    
                        ret.Add(selectListItem);
                    }
    
                    return ret;
                }
            }
    
            public IEnumerable<SelectListItem> ListaVeiculos
            {
                get
                {
                    var ret = new List<SelectListItem>();
    
                    var t = new SelectListItem();
                    t.Text = "-- Selecione --";
                    t.Value = "0";
                    ret.Add(t);
    
                    foreach (var item in Veiculos)
                    {
                        var selectListItem = new SelectListItem();
                        selectListItem.Text = item.Marca + " " + item.Modelo + " - " + item.Placa;
                        selectListItem.Value = item.IdVeiculo.ToString();
    
                        ret.Add(selectListItem);
                    }
    
                    return ret;
                }
            }
    
            public IEnumerable<SelectListItem> ListaHorasUteisIniciais
            {
                get
                {
                    var ret = new List<SelectListItem>();
    
                    var t = new SelectListItem();
                    t.Text = "--";
                    t.Value = "00:00";
                    ret.Add(t);
    
                    foreach (var item in HorasUteisInicio)
                    {
                        var selectListItem = new SelectListItem();
                        selectListItem.Text = item.HoraInicio.ToString("HH:mm");
                        selectListItem.Value = item.HoraInicio.ToString("HH:mm");
    
                        ret.Add(selectListItem);
                    }
    
                    return ret;
                }
            }
    
            public IEnumerable<SelectListItem> ListaHorasUteisFinal
            {
                get
                {
                    var ret = new List<SelectListItem>();
    
                    var t = new SelectListItem();
                    t.Text = "--";
                    t.Value = "00:00";
                    ret.Add(t);
    
                    foreach (var item in HorasUteisFim)
                    {
                        var selectListItem = new SelectListItem();
                        selectListItem.Text = item.HoraFinal.ToString("HH:mm");
                        selectListItem.Value = item.HoraFinal.ToString("HH:mm");
    
                        ret.Add(selectListItem);
                    }
    
                    return ret;
                }
            }
    
            public bool MatriculaEncontrada { get; set; }
        }
    }

    AgendamentoAulaPraticaController.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web.Mvc;
    using CFCHabilita.Dados.Contexto;
    using CFCHabilita.Dados.Repositorio;
    using CFCHabilita.Dominio.Core;
    using CFCHabilita.Web.Models;
    
    namespace CFCHabilita.Web.Controllers
    {
        public class AgendamentoAulaPraticaController : _BaseController
        {
            private readonly Repositorio<AgendamentoAulaPratica> _repositorioAgendamentoAulaPratica;
            private readonly Repositorio<HoraUtil> _repositorioHoraUtil;
            private readonly Repositorio<Matricula> _repositorioMatricula;
            private readonly Repositorio<Instrutor> _repositorioInstrutor;
            private readonly Repositorio<Veiculo> _repositorioVeiculo;
            private readonly Repositorio<InstrutorPrevisaoFalta> _repositorioInstrutorPrevisaoFalta;
    
            public AgendamentoAulaPraticaController()
            {
                _repositorioAgendamentoAulaPratica = new Repositorio<AgendamentoAulaPratica>();
                _repositorioHoraUtil = new Repositorio<HoraUtil>();
                _repositorioMatricula = new Repositorio<Matricula>();
                _repositorioInstrutor = new Repositorio<Instrutor>();
                _repositorioVeiculo = new Repositorio<Veiculo>();
                _repositorioInstrutorPrevisaoFalta = new Repositorio<InstrutorPrevisaoFalta>();
            }
    
            public ActionResult Index(_FilterModel model)
            {
                var modelRetorno = new AgendamentoAulaPraticaListModel();
                modelRetorno.FilterRules = model.FilterRules;
    
                modelRetorno.SearchItems =
                    new[]
                        {
                            new SearchItem
                                {
                                    FieldType = FieldType.Fixed,
                                    Title = "Todos os Registros",
                                    Field = "IdAgendamentoAulaPratica",
                                    DefaultOperation = FilterRuleOperator.NotEqual,
                                    DefaultValue = "0",
                                    DefaultFilter = true
                                },
                            new SearchItem
                                {
                                    FieldType = FieldType.String,
                                    Title = "Nome do Aluno",
                                    Field = "Matricula.Cliente.Nome",
                                    DefaultOperation = FilterRuleOperator.Contains,
                                    FieldClass = "large-field-class"
                                },
                            new SearchItem
                                {
                                    FieldType = FieldType.String,
                                    Title = "CPF do Aluno",
                                    Field = "Matricula.Cliente.CPF",
                                    DefaultOperation = FilterRuleOperator.Contains,
                                    FieldClass = "medium-field-class cpf"
                                },
                            new SearchItem
                                {
                                    FieldType = FieldType.String,
                                    Title = "Nome do Instrutor",
                                    Field = "Instrutor.Nome",
                                    DefaultOperation = FilterRuleOperator.Contains,
                                    FieldClass = "large-field-class"
                                },
                            new SearchItem
                                {
                                    FieldType = FieldType.String,
                                    Title = "CPF do Instrutor",
                                    Field = "Instrutor.CPF",
                                    DefaultOperation = FilterRuleOperator.Contains,
                                    FieldClass = "medium-field-class cpf"
                                },
                            new SearchItem
                                {
                                    FieldType = FieldType.String,
                                    Title = "Placa do Veículo",
                                    Field = "Veiculo.Placa",
                                    DefaultOperation = FilterRuleOperator.Contains,
                                    FieldClass = "small-field-class"
                                }
                        };
    
                var data = Request["data"] == null ? DateTime.Now : Convert.ToDateTime(Request["data"]);
                var dataInicio = data.AddDays((((int)data.DayOfWeek) - 1) * -1);
                var dataTermino = data.Date.AddDays(7 - (int)data.DayOfWeek);
    
                try
                {
    
                    modelRetorno.FilterRules = new[]
                                                   {
                                                       new FilterRule("Data", FilterRuleOperator.GreaterThanOrEqual, dataInicio), 
                                                       new FilterRule("Data", FilterRuleOperator.LessThanOrEqual, dataTermino)
                                                   };
    
                    var list = _repositorioAgendamentoAulaPratica.GetList(modelRetorno.FilterRules);
    
                    modelRetorno.List = list;
                }
                catch (Exception ex)
                {
                    modelRetorno.Error = ex;
                }
    
                modelRetorno.Data = data;
                modelRetorno.Mode = Request["mode"] == null ? "week" : Request["mode"];
                modelRetorno.HorasUteis = _repositorioHoraUtil.GetList(new FilterRule("Ativo", FilterRuleOperator.Equal, true)).ToList();
    
                return View(modelRetorno);
            }
    
            public ActionResult Edit(int id)
            {
                var model = new AgendamentoAulaPraticaModel();
    
                try
                {
                    var agendamentoAulaPratica = _repositorioAgendamentoAulaPratica.GetById(id) ?? new AgendamentoAulaPratica { Data = DateTime.Now, Matricula = new Matricula { Cliente = new Cliente(), Categoria = new Categoria() } };
    
                    model.IdAgendamentoAulaPratica = agendamentoAulaPratica.IdAgendamentoAulaPratica;
    
                    model.IdMatricula = agendamentoAulaPratica.IdMatricula;
                    model.Matricula = agendamentoAulaPratica.Matricula;
                    model.CPF = agendamentoAulaPratica.Matricula.Cliente.CPF;
                    model.Data = agendamentoAulaPratica.Data.ToString("dd/MM/yyyy");
                    model.HoraInicio = DateTime.MinValue != agendamentoAulaPratica.HoraInicio ? agendamentoAulaPratica.HoraInicio.ToString("HH:mm") : "00:00";
                    model.HoraFinal = DateTime.MinValue != agendamentoAulaPratica.HoraTermino ? agendamentoAulaPratica.HoraTermino.ToString("HH:mm") : "00:00";
                    model.PresencaConfirmada = agendamentoAulaPratica.PresencaConfirmada;
                    model.IdInstrutor = agendamentoAulaPratica.IdInstrutor;
                    model.IdVeiculo = (agendamentoAulaPratica.IdVeiculo ?? 0);
                    model.MatriculaEncontrada = model.IdAgendamentoAulaPratica != 0;
                }
                catch (Exception ex)
                {
                    model.Error = ex;
                }
    
                PreencheCombos(model);
                return View(model);
            }
    
            public ActionResult Save(AgendamentoAulaPraticaModel model)
            {
                try
                {
                    var horaInicio = DateTime.Parse(model.HoraInicio);
                    var horaTermino = DateTime.Parse(model.HoraFinal);
    
                    if (horaInicio >= horaTermino)
                        throw new Exception("A hora de início deve ser menor que a hora de término!");
    
                    if (model.HoraInicio == "00:00" || model.HoraFinal == "00:00")
                        throw new Exception("Você deve informar uma hora de início e término!");
    
                    if (model.IdMatricula == 0)
                        throw new Exception("Você deve informar um aluno!");
    
                    if (model.IdInstrutor == 0)
                        throw new Exception("Você deve informar um instrutor!");
    
                    if (model.IdVeiculo == 0)
                        throw new Exception("Você deve informar um veículo!");
    
                    var agendamentoAulaPratica = _repositorioAgendamentoAulaPratica.GetById(model.IdAgendamentoAulaPratica) ?? new AgendamentoAulaPratica();
                    agendamentoAulaPratica.IdAgendamentoAulaPratica = model.IdAgendamentoAulaPratica;
                    agendamentoAulaPratica.IdMatricula = model.IdMatricula;
                    agendamentoAulaPratica.IdInstrutor = model.IdInstrutor;
                    agendamentoAulaPratica.IdVeiculo = model.IdVeiculo;
                    agendamentoAulaPratica.Data = DateTime.Parse(model.Data);
                    agendamentoAulaPratica.HoraInicio = horaInicio;
                    agendamentoAulaPratica.HoraTermino = horaTermino;
                    agendamentoAulaPratica.PresencaConfirmada = model.PresencaConfirmada;
    
                    _repositorioAgendamentoAulaPratica.Save(agendamentoAulaPratica);
    
                    ModelState.Clear();
                    model.IdAgendamentoAulaPratica = agendamentoAulaPratica.IdAgendamentoAulaPratica;
                    model.RecarregaLista = true;
                }
                catch (Exception ex)
                {
                    model.Error = ex;
                }
    
                FindMatricula(model);
                PreencheCombos(model);
                return View("Edit", model);
            }
    
            private void PreencheCombos(AgendamentoAulaPraticaModel model)
            {
                model.Instrutores = _repositorioInstrutor.GetList(new FilterRule("Ativo", FilterRuleOperator.Equal, true)).ToList();
                model.Veiculos = _repositorioVeiculo.GetList(new FilterRule("Ativo", FilterRuleOperator.Equal, true)).ToList();
    
                var dataSelecionada = Convert.ToDateTime(model.Data);
                var horasVagasInicio = new List<HoraUtil>();
                var horasVagasFim = new List<HoraUtil>();
                var horasFalta = new List<InstrutorPrevisaoFalta>();
                var agendamentos = new List<AgendamentoAulaPratica>();
    
                if (model.IdInstrutor != 0)
                {
                    horasFalta = _repositorioInstrutorPrevisaoFalta.GetList().Where(p => p.Data == dataSelecionada && p.IdInstrutor == model.IdInstrutor).ToList();
    
                    if (model.IdVeiculo != 0)
                    {
                        horasVagasInicio = _repositorioHoraUtil.GetList(new FilterRule("Ativo", FilterRuleOperator.Equal, true)).Where(h => h.DiaSemana == (int)dataSelecionada.DayOfWeek + 1).ToList();
                        horasVagasFim = _repositorioHoraUtil.GetList(new FilterRule("Ativo", FilterRuleOperator.Equal, true)).Where(h => h.DiaSemana == (int)dataSelecionada.DayOfWeek + 1).ToList();
                        agendamentos = _repositorioAgendamentoAulaPratica.GetList().Where(a => a.Data == dataSelecionada && a.IdAgendamentoAulaPratica != model.IdAgendamentoAulaPratica && a.IdInstrutor == model.IdInstrutor && a.IdVeiculo == model.IdVeiculo).ToList();
                    }
                }
    
                foreach (var horaFalta in horasFalta)
                    horasVagasInicio = horasVagasInicio.Where(h => GetTime(h.HoraFinal) <= GetTime(horaFalta.HoraInicio) || GetTime(h.HoraInicio) >= GetTime(horaFalta.HoraTermino)).ToList();
    
                foreach (var agenda in agendamentos)
                    horasVagasInicio = horasVagasInicio.Where(h => GetTime(h.HoraFinal) <= GetTime(agenda.HoraInicio) || GetTime(h.HoraInicio) >= GetTime(agenda.HoraTermino)).ToList();
    
                if (model.HoraInicio != null && model.HoraInicio != "00:00")
                {
                    foreach (var horaFalta in horasFalta)
                        horasVagasFim = horasVagasFim.Where(h =>
                            (GetTime(model.HoraInicio) < GetTime(horaFalta.HoraInicio) && GetTime(h.HoraFinal) <= GetTime(horaFalta.HoraInicio))
                            ||
                            (GetTime(model.HoraInicio) >= GetTime(horaFalta.HoraTermino))
                        ).ToList();
    
                    foreach (var agenda in agendamentos)
                        horasVagasFim = horasVagasFim.Where(h =>
                            (GetTime(model.HoraInicio) < GetTime(agenda.HoraInicio) && GetTime(h.HoraFinal) <= GetTime(agenda.HoraInicio))
                            ||
                            (GetTime(model.HoraInicio) >= GetTime(agenda.HoraTermino))
                        ).ToList();
    
                    horasVagasFim = horasVagasFim.Where(h => GetTime(h.HoraFinal) > GetTime(model.HoraInicio)).ToList();
                }
    
                model.HorasUteisInicio = horasVagasInicio;
                model.HorasUteisFim = horasVagasFim;
            }
    
            private DateTime GetTime(string time)
            {
                return Convert.ToDateTime(DateTime.MinValue.ToString("dd/MM/yyyy") + " " + time + ":00");
            }
    
            private DateTime GetTime(DateTime time)
            {
                return Convert.ToDateTime(DateTime.MinValue.ToString("dd/MM/yyyy") + " " + time.ToString("HH:mm") + ":00");
            }
    
            public ActionResult VerificaData(AgendamentoAulaPraticaModel model)
            {
                try
                {
                    ModelState.Clear();
    
                    FindMatricula(model);
                }
                catch (Exception ex)
                {
                    model.Error = ex;
                }
    
                PreencheCombos(model);
                return View("Edit", model);
            }
    
            public ActionResult GetMatricula(AgendamentoAulaPraticaModel model)
            {
                try
                {
                    ModelState.Clear();
    
                    FindMatricula(model);
                }
                catch (Exception ex)
                {
                    model.Error = ex;
                }
    
                PreencheCombos(model);
                return View("Edit", model);
            }
    
            private void FindMatricula(AgendamentoAulaPraticaModel model)
            {
                var matricula = _repositorioMatricula.GetList().Where(m => m.Cliente.CPF == model.CPF && m.IdSituacao == 7).OrderByDescending(m => m.Data).FirstOrDefault();
    
                if (matricula == null)
                    throw new Exception("Matricula não encontrada!");
    
                model.IdMatricula = matricula.IdMatricula;
                model.IdInstrutor = model.IdInstrutor == 0 ? matricula.IdInstrutorPadrao ?? model.IdInstrutor : model.IdInstrutor;
                model.IdVeiculo = model.IdVeiculo == 0 ? matricula.IdVeiculoPadrao ?? model.IdVeiculo : model.IdVeiculo;
                model.Matricula = matricula;
                model.MatriculaEncontrada = true;
            }
    
            public void Delete(int id)
            {
                _repositorioAgendamentoAulaPratica.Delete(id);
            }
        }
    }
    

    Edit.cshtml

    @model CFCHabilita.Web.Models.AgendamentoAulaPraticaModel
    @{
        Layout = "~/Views/Shared/_LayoutFrame.cshtml";
    }
    <script language="javascript" type="text/javascript">
        $(document).ready(function () {
            $(".editContent").css("height", "0px");
            $(".editContent").css("height", ($(document).height() - 67) + "px");
    
            var configDatePicker = {
                dateFormat: "dd/mm/yy",
                buttonImageOnly: true,
                buttonImage: "/Imagens/calendar.png",
                showOn: "button"
            };
    
            $("#CPF").focus();
            $("#CPF").mask("999.999.999-99");
            
            $("#Data").mask("99/99/9999");
            $("#Data").datepicker(configDatePicker);
    
            @if (Model.RecarregaLista)
            {
                @:$("#FormPesquisaLista", $("#mainFrame", parent.top.document)[0].contentDocument)[0].submit();
            }
    
            $("#IdInstrutor").attr("disabled", "disabled");
            $("#IdVeiculo").attr("disabled", "disabled");
            $("#Data").attr("disabled", "disabled");
            $("#HoraInicio").attr("disabled", "disabled");
            $("#HoraFinal").attr("disabled", "disabled");
    
            @if (Model.MatriculaEncontrada)
            {
                <text>
                
                $("#IdInstrutor").attr("disabled", "");
                $("#IdVeiculo").attr("disabled", "");
                $("#IdInstrutor").focus();
    
                if ($("#IdInstrutor").attr("value") != "0")
                    $("#IdVeiculo").focus();
    
                if ($("#IdInstrutor").attr("value") != "0" && $("#IdVeiculo").attr("value") != "0")
                {
                    $("#Data").attr("disabled", "");
                    $("#Data").focus();
                    
                    if ($("#Data").attr("value") != "__/__/____"){
                        $("#HoraInicio").attr("disabled", "");
                        $("#HoraInicio").focus();
    
                        if ($("#HoraInicio").attr("value") != "00:00"){
                            $("#HoraFinal").attr("disabled", "");
                            $("#HoraFinal").focus();
                        }
                    }
                }
    
                </text>
            }
        });
        
        function GetMatricula(){
            if ($("#CPF")[0].value == "")
            {
                $("#Nome")[0].innerHTML = "&nbsp;";
                $("#Telefone")[0].innerHTML = "&nbsp;";
                $("#Renach")[0].innerHTML = "&nbsp;";
                $("#Categoria")[0].innerHTML = "&nbsp;";
                return;
            }
    
            $("#formAgendamento")[0].action = "/AgendamentoAulaPratica/GetMatricula";
            $("#formAgendamento")[0].submit();
        }
        
        function VerificaData(origem) {
            if (origem == "Data") {
                if ($("#Data").attr("value") == "" || $("#Data").attr("value") == "__/__/____")
                    return;
            }
    
            $("#formAgendamento")[0].action = "/AgendamentoAulaPratica/VerificaData";
            $("#formAgendamento")[0].submit();
        }
    </script>
    @using (Html.BeginForm("Save", "AgendamentoAulaPratica", FormMethod.Post, new Dictionary<string, object> { { "id", "formAgendamento" } }))
    {
        @Html.ValidationSummary(true)
        @Html.HiddenFor(model => model.IdMatricula)
        @Html.HiddenFor(model => model.IdAgendamentoAulaPratica)
        <div style="height: 46px; background-color: #ffffff; border-bottom: 1px solid #555;">
            <table border="0" cellpadding="3" cellspacing="0" style="width: 100%;">
                <tr>
                    <td style="width: 100%;">
                    </td>
                    <td>
                        @Html.ImageButton("Novo", "Novo Registro", "button", "new-16.png", new Dictionary<string, object> { { "onclick", "$(this).parents('form:first')[0].action = $(this).parents('form:first')[0].action.replace('Save', 'Edit?id=0'); $(this).parents('form:first')[0].submit();" }, { "style", "width: 55px" } })
                    </td>
                    <td>
                        @Html.ImageButton("Gravar", "Gravar as Alterações", "submit", "save.png", new Dictionary<string, object> { { "style", "width: 55px" } })
                    </td>
                    <td>
                        @Html.ImageButton("Voltar", "Voltar", "button", "back.png", new Dictionary<string, object> { { "onclick", "CloseEdit();" }, { "style", "width: 55px" } })
                    </td>
                </tr>
            </table>
        </div>
        <div class="editContent">
            <div style="float: left; clear: both; margin-bottom: 5px;">
                <div style="float: left">
                    @Html.LabelFor(model => model.CPF)
                </div>
                <div style="float: left; clear: both;">
                    @Html.TextBoxFor(model => model.CPF, new Dictionary<string, object> { { "style", "width: 96px;" }, { "onchange", "GetMatricula();" } })
                    @Html.ValidationMessageFor(model => model.CPF)
                </div>
            </div>
            <div style="float: left;">
                <div style="float: left;">
                    @Html.LabelFor(model => model.Nome)
                </div>
                <div style="float: left; clear: both;">
                    @Html.LabelFieldFor(model => model.Nome, new Dictionary<string, object> { { "style", "width: 250px" } })
                </div>
            </div>
            <div style="float: left; margin-bottom: 5px; clear: both;">
                <div style="float: left;">
                    @Html.LabelFor(model => model.Telefone)
                </div>
                <div style="float: left; clear: both;">
                    @Html.LabelFieldFor(model => model.Telefone, new Dictionary<string, object> { { "style", "width: 96px" } })
                </div>
            </div>
            <div style="float: left; margin-bottom: 5px;">
                <div style="float: left;">
                    @Html.LabelFor(model => model.Renach)
                </div>
                <div style="float: left; clear: both;">
                    @Html.LabelFieldFor(model => model.Renach, new Dictionary<string, object> { { "style", "width: 96px" } })
                </div>
            </div>
            <div style="float: left; margin-bottom: 5px;">
                <div style="float: left;">
                    @Html.LabelFor(model => model.Categoria)
                </div>
                <div style="float: left; clear: both;">
                    @Html.LabelFieldFor(model => model.Categoria, new Dictionary<string, object> { { "style", "width: 50px" } })
                </div>
            </div>
            <div style="float: left; margin-bottom: 5px; margin-right: 3px;">
                <div style="float: left;">
                    @Html.LabelFor(model => model.PresencaConfirmada)
                </div>
                <div style="float: left; clear: both; text-align: center;">
                    @Html.CheckBoxFor(model => model.PresencaConfirmada)
                </div>
            </div>
            <div style="float: left; margin-bottom: 5px;">
                <div style="float: left; padding-bottom: 3px;">
                    @Html.LabelFor(model => model.IdInstrutor)
                </div>
                <div style="float: left; clear: both;">
                    @Html.DropDownListFor(model => model.IdInstrutor, Model.ListaInstrutores, new Dictionary<string, object> { { "style", "width: 255px" }, { "onchange", "VerificaData();" } })
                </div>
            </div>
            <div style="float: left; margin-bottom: 5px;">
                <div style="float: left; padding-bottom: 3px;">
                    @Html.LabelFor(model => model.IdVeiculo)
                </div>
                <div style="float: left; clear: both;">
                    @Html.DropDownListFor(model => model.IdVeiculo, Model.ListaVeiculos, new Dictionary<string, object> { { "style", "width: 255px" }, { "onchange", "VerificaData();" } })
                </div>
            </div>
            <div style="float: right; margin-bottom: 5px; width: 100px;">
                <div id="datepicker">
                </div>
            </div>
            <div style="float: left; clear: both; margin-bottom: 5px; width: 100px;">
                <div style="float: left">
                    @Html.LabelFor(model => model.Data)
                </div>
                <div style="float: left; clear: both;">
                    @Html.TextBoxFor(model => model.Data, new Dictionary<string, object> { { "style", "width: 76px;" }, { "onchange", "VerificaData('Data');" } })
                </div>
            </div>
            <div style="float: left; margin-bottom: 5px; margin-right: 3px;">
                <div style="float: left; padding-bottom: 3px;">
                    @Html.LabelFor(model => model.HoraInicio)
                </div>
                <div style="float: left; clear: both;">
                    @Html.DropDownListFor(model => model.HoraInicio, Model.ListaHorasUteisIniciais, new Dictionary<string, object> { { "style", "width: 65px" }, { "onchange", "VerificaData();" } })
                </div>
            </div>
            <div style="float: left; margin-bottom: 5px; margin-right: 3px;">
                <div style="float: left; padding-bottom: 3px;">
                    @Html.LabelFor(model => model.HoraFinal)
                </div>
                <div style="float: left; clear: both;">
                    @Html.DropDownListFor(model => model.HoraFinal, Model.ListaHorasUteisFinal, new Dictionary<string, object> { { "style", "width: 65px" } })
                </div>
            </div>
        </div>
    }
    

    Se possível, da uma olhada pra min..

    segunda-feira, 8 de outubro de 2012 15:57
  • Lucas,

    A data mínima aceita no SQL Server é 01/01/1753 e no .Net é 01/01/0001, na qual se tentar gravar essa data (01/01/0001) no SQL, lhe será retornado um erro. 

    Faça esse tratamento, e veja se salvará no banco corretamente.


    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 8 de outubro de 2012 16:50
  • Lucas,

    Eu verifiquei isso, e no meu Datapicker ta sendo passado a data atual... Acredito que errei em algo no *.cs mas não acho..

    Pode verificar pra min e ver se acha algum erro?

    segunda-feira, 8 de outubro de 2012 16:52
  • Apenas olhando o código fica muito difícil encontrar o erro, ainda mais em um código grande.

    Mais fácil você chamar uma Procedure para fazer essa inserção no banco, mas antes da inserção, faça uma rotina que imprima na console do banco a data que você está tentando salvar. Provável que lhe seja exibido algo menor que 01/01/1753, que nesse caso, lhe será exibido o erro que você relatou.


    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 8 de outubro de 2012 16:58
  • A Data retornada realmente ta sendo menor...

    Veja se nessa parte eu fiz correto:

    model.Data = agendamentoAulaPratica.Data.ToString("dd/MM/yyyy");
    
    -------------------------------------------------
    
    agendamentoAulaPratica.Data = DateTime.Parse(model.Data);
    
    ----------------------------------------------
    
    var dataSelecionada = Convert.ToDateTime(model.Data);
    
    ----------------------------------------------
    
     private DateTime GetTime(string time)
            {
                return Convert.ToDateTime(DateTime.MinValue.ToString("dd/MM/yyyy") + " " + time + ":00");
            }
    
            private DateTime GetTime(DateTime time)
            {
                return Convert.ToDateTime(DateTime.MinValue.ToString("dd/MM/yyyy") + " " + time.ToString("HH:mm") + ":00");
            }
    
            public ActionResult VerificaData(AgendamentoAulaPraticaModel model)
            {
                try

    E em Model

    public DateTime Data { get; set; }

    E no Edit (Resumidamente)

     $("#Data").mask("99/99/9999");
            $("#Data").datepicker(configDatePicker);
    
            @if (Model.RecarregaLista)
            {
                @:$("#FormPesquisaLista", $("#mainFrame", parent.top.document)[0].contentDocument)[0].submit();
            }
    
            $("#IdInstrutor").attr("disabled", "disabled");
            $("#IdVeiculo").attr("disabled", "disabled");
            $("#Data").attr("disabled", "disabled");
            $("#HoraInicio").attr("disabled", "disabled");
            $("#HoraFinal").attr("disabled", "disabled");
    
            @if (Model.MatriculaEncontrada)
            {
                <text>
                
                $("#IdInstrutor").attr("disabled", "");
                $("#IdVeiculo").attr("disabled", "");
                $("#IdInstrutor").focus();
    
                if ($("#IdInstrutor").attr("value") != "0")
                    $("#IdVeiculo").focus();
    
                if ($("#IdInstrutor").attr("value") != "0" && $("#IdVeiculo").attr("value") != "0")
                {
                    $("#Data").attr("disabled", "");
                    $("#Data").focus();
                    
                    if ($("#Data").attr("value") != "__/__/____"){
                        $("#HoraInicio").attr("disabled", "");
                        $("#HoraInicio").focus();
    
                        if ($("#HoraInicio").attr("value") != "00:00"){
                            $("#HoraFinal").attr("disabled", "");
                            $("#HoraFinal").focus();
                        }
                    }
                }

    Ai estão as partes onde declarei a data

    segunda-feira, 8 de outubro de 2012 17:02
  • Coloque um breakpoint em cada uma desas linhas, onde você interage com o valor da Data, e veja onde ela está ficando abaixo de 01/01/1753, para poder constatar quem está alterando o valor da data para um valor errado.

    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 8 de outubro de 2012 17:08
  • Lucas

    Coloquei os breakpoint e passo direto...Rodei no modo Debug e consegui a seguinte informação:

    An error occurred while executing the command definition. See the inner exception for details.

    O erro partiu dessa linha:

    horasFalta = _repositorioInstrutorPrevisaoFalta.GetList().Where(p => p.Data == dataSelecionada && p.IdInstrutor == model.IdInstrutor).ToList();

    *Vi agora que no breakpoint que coloquei esse deu stop também..

    var dataSelecionada = Convert.ToDateTime(model.Data);

    Ele me retornou como valor:  +        dataSelecionada    {01/01/0001 00:00:00}    System.DateTime

    Pode me ajudar a partir daqui?


    segunda-feira, 8 de outubro de 2012 17:18
  • Em seu AgendamentoAulaPraticaController 

    public ActionResult Edit(int id)
            {
                var model = new AgendamentoAulaPraticaModel();
    
                try
                {
                    var agendamentoAulaPratica = _repositorioAgendamentoAulaPratica.GetById(id) ?? new AgendamentoAulaPratica { Data = DateTime.Now, Matricula = new Matricula { Cliente = new Cliente(), Categoria = new Categoria() } };
    
                    model.IdAgendamentoAulaPratica = agendamentoAulaPratica.IdAgendamentoAulaPratica;
    
                    model.IdMatricula = agendamentoAulaPratica.IdMatricula;
                    model.Matricula = agendamentoAulaPratica.Matricula;
                    model.CPF = agendamentoAulaPratica.Matricula.Cliente.CPF;
                    model.Data = agendamentoAulaPratica.Data.ToString("dd/MM/yyyy");
                    model.HoraInicio = DateTime.MinValue != agendamentoAulaPratica.HoraInicio ? agendamentoAulaPratica.HoraInicio.ToString("HH:mm") : "00:00";
                    model.HoraFinal = DateTime.MinValue != agendamentoAulaPratica.HoraTermino ? agendamentoAulaPratica.HoraTermino.ToString("HH:mm") : "00:00";
                    model.PresencaConfirmada = agendamentoAulaPratica.PresencaConfirmada;
                    model.IdInstrutor = agendamentoAulaPratica.IdInstrutor;
                    model.IdVeiculo = (agendamentoAulaPratica.IdVeiculo ?? 0);
                    model.MatriculaEncontrada = model.IdAgendamentoAulaPratica != 0;
                }
                catch (Exception ex)
                {
                    model.Error = ex;
                }
    
                PreencheCombos(model);
                return View(model);
            }

    Na linha onde você colocou

    model.Data = agendamentoAulaPratica.Data.ToString("dd/MM/yyyy");

    Não consegui identificar quando você setou a Data. 

    Acho que esse agendamentoAulaPratica.Data já está chegando sem valor.

    Dê uma olhada com um breakpoint.



    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 8 de outubro de 2012 17:24
  • Segue o link da aplicação:

    http://www.brasilialins.com.br

    Usuario: debora
    Senha: 12345

    Ao entrar, acesse: Clientes -> Agendamento Aula Pratica

    Insira o CPF: 396.192.748.06 | Na hora que ele for dar refresh ele irá resultar em erro... A data ainda seria escolhida nesse form..

    segunda-feira, 8 de outubro de 2012 17:27
  • Não há esse item no menu Clientes.

    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 8 de outubro de 2012 17:35
  • Perdão, mandei o nome erro, ao invés de Agenda Aula Prática, acesse Agenda Semanal em Clientes
    segunda-feira, 8 de outubro de 2012 17:44
  • Há alguma restrição específica para você ter usado o MinValue  ?

    private DateTime GetTime(string time)
            {
                return Convert.ToDateTime(DateTime.MinValue.ToString("dd/MM/yyyy") + " " + time + ":00");
            }
    
            private DateTime GetTime(DateTime time)
            {
                return Convert.ToDateTime(DateTime.MinValue.ToString("dd/MM/yyyy") + " " + time.ToString("HH:mm") + ":00");
            }


    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 8 de outubro de 2012 17:55
  • Esse problema é pq vc não está setando a data para sua consulta 

    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    terça-feira, 9 de outubro de 2012 17:57
    Moderador
  • pode me most como faco?
    quinta-feira, 11 de outubro de 2012 08:33
  • quando vc for fazer sua consulta vc deve passar as datas para ela

    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    quinta-feira, 11 de outubro de 2012 14:13
    Moderador