GRAVANDO VALORES NULL NA TABELA

PERCIFILHO 09/05/2016 15:03:31
#461934
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:
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>;
FFCOUTO 09/05/2016 16:13:00
#461936
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:

obj.DataPagamento = (controleDataPagto.Value == DateTime.MinValue) ? null : (DateTime?)controleDataPagto.Value;


Qualquer outro problema poste o código.
PERCIFILHO 09/05/2016 16:16:48
#461937
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:

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).
PERCIFILHO 10/05/2016 07:31:21
#461945
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.
Página 2 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas