GRAVANDO VALORES NULL NA TABELA
Olá, Ocelot, tudo tranquilo?
Se você [Ô]pegou[Ô] o projeto, tem uma classe BackWork. Lá está todo o código que faz o CRUD.
Tem o método Insert() e o GetInsertCommand(). Deve ser aà que está o problema.
Mas o colega FFCouto [Ô]matou a charada[Ô]. Estive debugando o código e realmente a data retornada é 01/01/0001.
Só que não sei como fazer a [Ô]adaptação[Ô] para o meu código funcionar, ou seja, converter o valor retornado para nulo para poder gravar na tabela como nulo.
Conforme já postei, eu atribui o nullable para a classe:
E na tabela, também já defini o campo como <datetime> e <allow null=true>;
Se você [Ô]pegou[Ô] o projeto, tem uma classe BackWork. Lá está todo o código que faz o CRUD.
Tem o método Insert() e o GetInsertCommand(). Deve ser aà que está o problema.
Mas o colega FFCouto [Ô]matou a charada[Ô]. Estive debugando o código e realmente a data retornada é 01/01/0001.
Só que não sei como fazer a [Ô]adaptação[Ô] para o meu código funcionar, ou seja, converter o valor retornado para nulo para poder gravar na tabela como nulo.
Conforme já postei, eu atribui o nullable para a classe:
private DateTime? _dataPagamento;
[Browsable(true)]
[DisplayName([Ô]Pagamento[Ô])]
[DataObjectField(false, false, true)]
public DateTime? DataPagamento
{
get { return _dataPagamento; }
set { _dataPagamento = value; }
}
E na tabela, também já defini o campo como <datetime> e <allow null=true>;
Você deve verificar o local onde você está usando essa classe e verificar como se está atribuindo essa DataPagamento. Se você está usando algum controle de data/hora é bem provável que o retorno dele quando null é o valor mÃnimo da data. Nesse caso, só resta uma coisa a se fazer:
Qualquer outro problema poste o código.
obj.DataPagamento = (controleDataPagto.Value == DateTime.MinValue) ? null : (DateTime?)controleDataPagto.Value;
Qualquer outro problema poste o código.
Meus amigos, quem me conhece sabe que eu NÃO desisto tão fácil das coisas. Quando eu quero eu vou fundo na questão.
E consegui quase em cima da hora. Mais alguns minutos e eu teria que deixar para amanhã, afinal de contas daqui a pouco encerra o expediente.
No final das contas a solução era simples: Modifiquei umas linhas no código do método GetInsertCommand:
Agora sim, deu o resultado que eu esperava.
Agradeço a todos que se esforçaram ao máximo em me ajudar.
Valeu moçada, até a próxima (que vai ser em breve, podem ter certeza).
E consegui quase em cima da hora. Mais alguns minutos e eu teria que deixar para amanhã, afinal de contas daqui a pouco encerra o expediente.
No final das contas a solução era simples: Modifiquei umas linhas no código do método GetInsertCommand:
if (pro.GetValue(this) == null)
{
_return.Parameters.AddWithValue([Ô]@[Ô] + pro.Name, DBNull.Value);
}
else
{
_return.Parameters.AddWithValue([Ô]@[Ô] + pro.Name, pro.GetValue(this));
}
Agora sim, deu o resultado que eu esperava.
Agradeço a todos que se esforçaram ao máximo em me ajudar.
Valeu moçada, até a próxima (que vai ser em breve, podem ter certeza).
Bom dia a todos!!!
Colega FFCOUTO, eu não estou utilizando nenhum controle de data/hora. Simplesmente esses valores estão em um DataGridView, como não existe data de pagamento (o tÃtulo ainda não foi pago) então ele fica vazio. Daà quando vou gravar na tabela, preciso gravar o campo como nulo. Mas conforme respondi, já resolvi a questão, fazendo uma adaptação no método que insere os dados. Mesmo assim muito obrigado pela disposição em me ajudar, e como só posso pontuar uma pessoa, vou lhe pontuar pois se empenhou bastante nas respostas.
Obrigado e até mais.
Colega FFCOUTO, eu não estou utilizando nenhum controle de data/hora. Simplesmente esses valores estão em um DataGridView, como não existe data de pagamento (o tÃtulo ainda não foi pago) então ele fica vazio. Daà quando vou gravar na tabela, preciso gravar o campo como nulo. Mas conforme respondi, já resolvi a questão, fazendo uma adaptação no método que insere os dados. Mesmo assim muito obrigado pela disposição em me ajudar, e como só posso pontuar uma pessoa, vou lhe pontuar pois se empenhou bastante nas respostas.
Obrigado e até mais.
Tópico encerrado , respostas não são mais permitidas