PARAMETRO @DATE NO INSERT DO SQL SERVER

 Tópico anterior Próximo tópico Novo tópico

PARAMETRO @DATE NO INSERT DO SQL SERVER

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#466266 - 30/08/2016 00:22:01

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 30/08/2016 00:58:43 por JCM0867

Ol Pessoal,
Seguinte, tenho um campo date para inserir numa tabela.
Se estiver em branco salvar NULL se no salava a data em si

O que tem de errado aqui ou como devo escrever o cdigo corretamente?

cdCheque.Parameters.AddWithValue([]@CheDataCadastro[], IIf(Trim(CStr(mskCheDataCadastro.Text)) = []/  /[], []NULL[], Format(CDate(mskCheDataCadastro.Text), []MM/dd/yyyy[])))

Quando a data em Branco ele no reconhece:
Trim(CStr(mskCheDataCadastro.Text)) = []/  /[] para salvar NULL
Diz que []  /  /[] no data

Grato




#466267 - 30/08/2016 07:54:21

PAULOOLIVEIRA
RIO CLARO - SP
Cadast. em:Fevereiro/2004


Ola, bom dia!!

Eu ja tive problema com data vazia ou nula no gravar... resolvi colocando o ? na definio da classe... exemplo:

private DateTime? dnasc;
        public DateTime? Dnasc
        {
            get { return dnasc; }
            set { dnasc = value; }
        }

boa sorte!


Paulo Oliveira


Impossivel Deus pecar, o resto a gente da um jeito!

Resposta escolhida #466269 - 30/08/2016 08:36:41

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Experimentou trocar o []NULL[] por DBNull.Value ?

____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#466275 - 30/08/2016 10:44:29

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 30/08/2016 10:46:02 por JCM0867

Ol,
Nenhuma das solues funcionaram.
em VB.net

Ele no reconhece data vazia
tem que retornar Trim(CStr(mskCheDataCadastro.Text)) = []/  /[] como verdadeiro para salvar Null

Por exempo se eu colocar
Trim(CStr(mskCheDataCadastro.Text)) = []01/02/2015[] ele reconhece




#466277 - 30/08/2016 12:09:13

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


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



#466279 - 30/08/2016 12:52:35

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 30/08/2016 12:55:36 por JCM0867

 Anexos estao visíveis somente para usuários registrados

No deu, continua o mesmo erro
Em outras ocasies eu coloquei uma data antiga
se for a data antiga, salva null, mas no acho que essa gambiarra seja uma maneira adequada

O que d impresso que ao invs de ele pegar a primeira opo do iif ele tenta pegar a segunda ocasionando o erro




#466282 - 30/08/2016 14:29:28

FFCOUTO
COM LEVY GASPARIAN
Cadast. em:Março/2005


Configure a propriedade TextMaskFormat de seu MaskedTextBox para ExcludePromptAndLiterals, isso far que qualquer caracter da mscara seja removido da propriedade texto quando no houver dados digitados.

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[]))




Cursos de Excel e VB6:
cursoexcelvba.com.br


#466284 - 30/08/2016 15:19:48

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Se ainda assim no funcionar, tenta separar as aes do If , ao invs 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


____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#466287 - 30/08/2016 15:39:12

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Vc esta passando // ao invs de nothing



#466289 - 30/08/2016 15:57:01

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Eu, particularmente, prefiro usar a funo IsDate() para verificar se o MaskedTextBox contm uma data vlida:
Exemplo:
If Not IsDate(mskCheDataCadastro.Text) Then
    cdCheque.Parameters.AddWithValue([]@CheDataCadastro[], DbNull.Value) .....

Mas, creio que o modo como o FFCOUTO passou deve funcionar.


____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#466290 - 30/08/2016 16:04:05

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Geralmente fao a verificao como o PERCIFILHO e roda legal

O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JCM0867 em 30/08/2016 22:56:03