PARAMETRO @DATE NO INSERT DO SQL SERVER
Olá Pessoal,
Seguinte, tenho um campo date para inserir numa tabela.
Se estiver em branco salvar NULL se não salava a data em si
O que tem de errado aqui ou como devo escrever o código corretamente?
cdCheque.Parameters.AddWithValue([Ô]@CheDataCadastro[Ô], IIf(Trim(CStr(mskCheDataCadastro.Text)) = [Ô]/ /[Ô], [Ô]NULL[Ô], Format(CDate(mskCheDataCadastro.Text), [Ô]MM/dd/yyyy[Ô])))
Quando a data em Branco ele não reconhece:
Trim(CStr(mskCheDataCadastro.Text)) = [Ô]/ /[Ô] para salvar NULL
Diz que [Ô] / /[Ô] não é data
Grato
Seguinte, tenho um campo date para inserir numa tabela.
Se estiver em branco salvar NULL se não salava a data em si
O que tem de errado aqui ou como devo escrever o código corretamente?
cdCheque.Parameters.AddWithValue([Ô]@CheDataCadastro[Ô], IIf(Trim(CStr(mskCheDataCadastro.Text)) = [Ô]/ /[Ô], [Ô]NULL[Ô], Format(CDate(mskCheDataCadastro.Text), [Ô]MM/dd/yyyy[Ô])))
Quando a data em Branco ele não reconhece:
Trim(CStr(mskCheDataCadastro.Text)) = [Ô]/ /[Ô] para salvar NULL
Diz que [Ô] / /[Ô] não é data
Grato
Ola, bom dia!!
Eu ja tive problema com data vazia ou nula no gravar... resolvi colocando o ? na definição da classe... exemplo:
private DateTime? dnasc;
public DateTime? Dnasc
{
get { return dnasc; }
set { dnasc = value; }
}
boa sorte!
Eu ja tive problema com data vazia ou nula no gravar... resolvi colocando o ? na definição da classe... exemplo:
private DateTime? dnasc;
public DateTime? Dnasc
{
get { return dnasc; }
set { dnasc = value; }
}
boa sorte!
Experimentou trocar o [Ô]NULL[Ô] por DBNull.Value ?
Olá,
Nenhuma das soluções funcionaram.
é em VB.net
Ele não reconhece data vazia
tem que retornar [txt-color=#0000f0]Trim(CStr(mskCheDataCadastro.Text)) = [Ô]/ /[Ô] [/txt-color]como verdadeiro para salvar Null
Por exempo se eu colocar
Trim(CStr(mskCheDataCadastro.Text)) = [Ô]01/02/2015[Ô] ele reconhece
Nenhuma das soluções funcionaram.
é em VB.net
Ele não reconhece data vazia
tem que retornar [txt-color=#0000f0]Trim(CStr(mskCheDataCadastro.Text)) = [Ô]/ /[Ô] [/txt-color]como verdadeiro para salvar Null
Por exempo se eu colocar
Trim(CStr(mskCheDataCadastro.Text)) = [Ô]01/02/2015[Ô] ele reconhece
Se adata for vazia passe como nothing, ai fica assim:
MY_COMAND.Parameters.Add(New MySqlParameter([Ô]@Data_Cad[Ô], IIf(Me.Data_Cad = Nothing, System.DBNull.Value, Me.Data_Cad)))
Isso é mysql, mas deve ser igual.
A Palavra chave é essa: System.DBNull.Value
MY_COMAND.Parameters.Add(New MySqlParameter([Ô]@Data_Cad[Ô], IIf(Me.Data_Cad = Nothing, System.DBNull.Value, Me.Data_Cad)))
Isso é mysql, mas deve ser igual.
A Palavra chave é essa: System.DBNull.Value
Não deu, continua o mesmo erro
Em outras ocasiões eu coloquei uma data antiga
se for a data antiga, salva null, mas não acho que essa gambiarra seja uma maneira adequada
O que dá impressão é que ao invés de ele pegar a primeira opção do iif ele tenta pegar a segunda ocasionando o erro
Em outras ocasiões eu coloquei uma data antiga
se for a data antiga, salva null, mas não acho que essa gambiarra seja uma maneira adequada
O que dá impressão é que ao invés de ele pegar a primeira opção do iif ele tenta pegar a segunda ocasionando o erro
Configure a propriedade TextMaskFormat de seu MaskedTextBox para ExcludePromptAndLiterals, isso fará que qualquer caracter da máscara seja removido da propriedade texto quando não houver dados digitados.
Depois substitua o trecho
por
Depois substitua o trecho
IIf(Trim(CStr(mskCheDataCadastro.Text)) = [Ô]/ /[Ô], [Ô]NULL[Ô], Format(CDate(mskCheDataCadastro.Text), [Ô]MM/dd/yyyy[Ô])))
por
IIf(String.IsNullOrWhiteSpace(mskCheDataCadastro.Text), DBNull.Value, Format(CDate(mskCheDataCadastro.Text), [Ô]MM/dd/yyyy[Ô]))
Se ainda assim não funcionar, tenta separar as ações do If , ao invés de utilizar o IIf, talvez funcione.
If(Trim(CStr(mskCheDataCadastro.Text)) = [Ô]/ /[Ô] Then
cdCheque.Parameters.AddWithValue([Ô]@CheDataCadastro[Ô], DbNull.Value)
Else
cdCheque.Parameters.AddWithValue([Ô]@CheDataCadastro[Ô], Format(CDate(mskCheDataCadastro.Text), [Ô]MM/dd/yyyy[Ô]))
End If
Vc esta passando // ao invés de nothing
Eu, particularmente, prefiro usar a função IsDate() para verificar se o MaskedTextBox contém uma data válida:
Exemplo:
If Not IsDate(mskCheDataCadastro.Text) Then
cdCheque.Parameters.AddWithValue([Ô]@CheDataCadastro[Ô], DbNull.Value) .....
Mas, creio que o modo como o FFCOUTO passou deve funcionar.
Exemplo:
If Not IsDate(mskCheDataCadastro.Text) Then
cdCheque.Parameters.AddWithValue([Ô]@CheDataCadastro[Ô], DbNull.Value) .....
Mas, creio que o modo como o FFCOUTO passou deve funcionar.
Geralmente faço a verificação como o PERCIFILHO e roda legal
Tópico encerrado , respostas não são mais permitidas