SALVAR DATA NULL
Boa noite amigos
Depois de um milhão de vezes tentei salvar datas no Firebird com Visual Studio 2012
Para incluir novo tudo OK
.Parameters.Add(New FbParameter([Ô]@DtaNasc[Ô], FbDbType.Date)).Value = IIf(txtDtaNasc.Text = [Ô][Ô], DBNull.Value, txtDtaNasc.Text)
Com INSERT INTO salva a data ou em Null, OK.
Agora para o UPDATE esta difÃcil.
.CommandText = ([Ô]UPDATE Cad_Usuario SET Registro = [ô][Ô] & txtRegistro.Text & [Ô][ô], Nome = [ô][Ô] & txtNome.Text & [Ô][ô], Ende = [ô][Ô] & txtEnde.Text & [Ô][ô], DtaNasc = [Ô] & IIf(txtDtaNasc.Text = [Ô][Ô], [Ô]Null[Ô], [Ô][ô][Ô] & Format(txtDtaNasc.Text, [Ô]yyyy/mm/dd[Ô] & [Ô][ô][Ô])) & [Ô], FoneCel = [ô][Ô] & txtFoneCel.Text & [Ô][ô] WHERE UsuarioID = [Ô] & vUsuarioID)
Estou usando assim mais só grava Null ao digitar uma data do erro
(conversion error from [Ô]yyyy/mm/dd[Ô])
Grato
Nilton
Sabe a diferença entre [Ô]null[Ô] e null? Você está tentando salvar a string [Ô]null[Ô] no lugar do tipo null. Qualquer valor entre aspas é entendido como string. Então basta tirar as aspas e vai funcionar.
Mas você não teria esses problemas se estivesse usando comandos parametrizados, que é o que todo programador profissional usa.
Mas você não teria esses problemas se estivesse usando comandos parametrizados, que é o que todo programador profissional usa.
Mas você não teria esses problemas se estivesse usando comandos parametrizados, que é o que todo programador profissional usa.
Com certeza
Estou migrando do VB6, & Visual Studio 2012
Citação::
Mas você não teria esses problemas se estivesse usando comandos parametrizados, que é o que todo programador profissional usa.
Com certeza
Estou migrando do VB6, & Visual Studio 2012
Visual Studio 2012 com qual versão do framework? Se for anterior ou igual ao 3.5 nem continua, vai estar perdendo tempo. Migrar não quer dizer copiar todo o código exatamente como era na versão anterior com adaptações sintáticas. Se vai migrar, já faça uso de todas as vantagens que a nova tecnologia oferece e dê sempre preferência à versão mais atual possÃvel. Visual Studio 2012, já não tem mais nem suporte. O Visual Studio 2015 Community, é gratuito e está disponÃvel para download. Ele faz uso da versão mais atual do Framework e você consegue fazer uso de todas as inúmeras vantagens de plugins e extensões disponÃveis. A migração de um projeto(que na verdade é mais para re-escrever o projeto) pode ser feita em poucas horas dependendo do tamanho dele. Se for um projeto pequeno(coisa de umas 30-40 tabelas e telas) é trabalho de uns dois dias sozinho.
Grato
KERPLUNK, descupe minha ignoracia ,quando voce diz comandos parametrizados poderia me passar um exemplo, eu uso comando simples pois foi assim que eu aprendei podemos sempre aprender coisa novas
NILTON_VIANNA, por que você não usa o DbNull.Value também no Update?
IIf(txtDtaNasc.Text = [Ô][Ô], DbNull.Value, Format(txtDtaNasc.Text, [Ô]yyyy/mm/dd[Ô]))
JOAOBENEVIDES, o que o Kerplunk tem insistido para o pessoal fazer, é usar comando com parâmetros para incluir ou alterar dados na tabela, isso evita muitos problemas como já vimos em alguns tópicos anteriores.
Assim, um exemplo bem básico que eu peguei de um código antigo quando ainda não usava OOP. (Hoje não faço mais assim)
Aprendi muita coisa com os vÃdeos do Kerplunk e tudo o que eu fazia com muitas horas escrevendo códigos, hoje faço em minutos e com menos chance de errar.
Eis um exemplo de comando Insert usando parâmetros:
IIf(txtDtaNasc.Text = [Ô][Ô], DbNull.Value, Format(txtDtaNasc.Text, [Ô]yyyy/mm/dd[Ô]))
JOAOBENEVIDES, o que o Kerplunk tem insistido para o pessoal fazer, é usar comando com parâmetros para incluir ou alterar dados na tabela, isso evita muitos problemas como já vimos em alguns tópicos anteriores.
Assim, um exemplo bem básico que eu peguei de um código antigo quando ainda não usava OOP. (Hoje não faço mais assim)
Aprendi muita coisa com os vÃdeos do Kerplunk e tudo o que eu fazia com muitas horas escrevendo códigos, hoje faço em minutos e com menos chance de errar.
Eis um exemplo de comando Insert usando parâmetros:
conectar()
cmdClientes = New OleDbCommand([Ô]Insert Into Clientes(codigo,nome,observacoes)Values(@codigo,@nome,@observacoes)[Ô], conexao)
cmdClientes.Connection = conexão
cmdClientes.Parameters.AddWithValue([Ô]@codigo[Ô], IIf(TxtCodigo.Text = [Ô][Ô], DBNull.Value, TxtCodigo.Text))
cmdClientes.Parameters.AddWithValue([Ô]@nome[Ô], IIf(TxtNome.Text = [Ô][Ô], DBNull.Value, TxtNome.Text))
cmdClientes.Parameters.AddWithValue([Ô]@observacoes[Ô], IIf(TxtObservacoes.Text = [Ô][Ô], DBNull.Value, TxtObservacoes.Text))
cmdClientes.ExecuteNonQuery()
Desconectar()
Valeu PERCIFILHO vou testar
e para o UPDATE ??
Só vai mudar o comando, os parâmetros são os mesmos:
conectar()
cmdClientes = New OleDbCommand([Ô]Update Cientes Set codigo=@codigo,nome=@nome,observacoes=@observações Where codigo = [Ô] & codigo)[Ô], conexao)
cmdClientes.Connection = conexão
cmdClientes.Parameters.AddWithValue([Ô]@codigo[Ô], IIf(TxtCodigo.Text = [Ô][Ô], DBNull.Value, TxtCodigo.Text))
cmdClientes.Parameters.AddWithValue([Ô]@nome[Ô], IIf(TxtNome.Text = [Ô][Ô], DBNull.Value, TxtNome.Text))
cmdClientes.Parameters.AddWithValue([Ô]@observacoes[Ô], IIf(TxtObservacoes.Text = [Ô][Ô], DBNull.Value, TxtObservacoes.Text))
cmdClientes.ExecuteNonQuery()
Desconectar()
PERCIFILHO, Perfect Help
Obrigado
Tópico encerrado , respostas não são mais permitidas