E SE A DATA NAO EXISTE???

MARCOS 04/03/2013 11:52:10
#419864
Pessoal,
Vez ou outra eu me deparo com problemas especificos
ao codificar.Para não perder tempo,eu busco uma alternativa
e sigo em frente.Mas,particularmente não gosto disto!

é uma situação simples,mas comum:

Digamos que eu tenho um campo tipo Data ( Access) . No meu caso trata-se
de um simples formulário de cadastro.Este campo Data não é obrigatório e
o usuário preenche se quizer.

Minha dúvida:

Ao executar um [Ô]INSERT[Ô] nesta tabela, se o campo estiver vazio o Access exibe uma
mensagem de erro, informando que o Tipo de dados é incompativel (Pois o campo esta vazio).
Nestes casos,como se deve proceder???
Que tipo de informação é correto inserir neste campo????


ALTAIR148 04/03/2013 12:28:03
#419865
Tente passar o campo como nulo e não como vazio, ex:

Dim command As New MySql.Data.MySqlClient.MySqlCommand([Ô]INSERT  INTO tb_funcionarios ( Fun_DataAdmissao) VALUES (@Fun_DataAdmissao[Ô]), Conexao.GetConexao)
if Not IsDate(Fun_DataAdmissao.text) then [ô]Se caso o campo não for do tipo data ele vai passar nulo
Command.Parameters.AddWithValue([Ô]@Fun_DataAdmissao[Ô], DBNull.Value) [ô] Assim ele vai passar nulo e não em branco e acredito que como nulo ele deve aceitar.
else
Command.Parameters.AddWithValue([Ô]@Fun_DataAdmissao[Ô], Fun_DataAdmissao.text) [ô] caso o campo estiver preenchido com uma data válida ele grava o campo.
end if
command.ExecuteNonQuery
Command.Dispose
Conexao.Desconectar


Lembrando que não seria bem assim que você deve fazer esse tratamento, é apenas para se ter uma idéia de como faz, também não testei nada, mas acredito que deve ser mais ou menos isso.
MARCOS 04/03/2013 14:09:21
#419873
Altair,
Agradeço sua colaboração.

Mas o Access continua recusando e exibindo mensagem de erro , informando que o tipo de
dados é incompativel.

Algum colega pode esclarecer??????
LLAIA 04/03/2013 15:19:02
#419880
Vai na estrutura da tabela e coloque para False a propriedade Required do campo, ou coloque como valor default null. (Acho que este só por DDL, não lembro agora)
MARCOS 04/03/2013 17:36:01
#419893
LLAIA,
Tentei as duas coisas.
Mesmo assim o Campo tipo DateTime do Access não aceita valores vazios
provenientes de meu TxtData.Text.

Algum colega,sabe como posso lidar com isso????
LLAIA 04/03/2013 17:59:24
#419896
é por SQL? Passe null:

insert into tabela (campoData) values (null)
PERCIFILHO 05/03/2013 08:49:26
#419916
Como está o seu código? Posta aí pra gente analisar.

Até mais.
PEGUDO 05/03/2013 09:15:04
#419919
Cara,
E se você fizer um tratamento que verifique se a data foi preenchida ou não.
Exemplo:

Dim Preenchida = Function(qualData As String) As Boolean
If qualData = Nothing Then Return False Else Return True
End Function

If Preenchida(txtData.Text) Then
[txt-color=#007100] [ô]Caso retorne True, a data foi preenchida
[ô]string SQL com a data incluída[/txt-color]
Else
[txt-color=#007100] [ô]Caso retorne False, a data não foi digitada.
[ô]string SQL sem a data incluída. Se o campo Required do Access estiver como False
[ô]Então o campo será preenchido com um valor nulo[/txt-color]
End if

Faça o teste aí e veja se te ajuda em alguma coisa.
Espero ter ajudado.
FELLIPEASSIS 06/03/2013 17:16:23
#420050
trabalhar com acess é um problema pq não tem recursos em SQL pq no sqlserver
faço assim
if @datacad is not null
begin
-- aqui a execuçao
end
LLAIA 06/03/2013 17:19:52
#420051
Resposta escolhida
Citação:

:
LLAIA,
Tentei as duas coisas.
Mesmo assim o Campo tipo DateTime do Access não aceita valores vazios
provenientes de meu TxtData.Text.

Algum colega,sabe como posso lidar com isso????




Se vc passar assim
[Ô][Ô]
para o banco de dados para uma data ser nula vai dá problema. Vc tem que tratar sua textBox e ver se for
[Ô][Ô]
, passar a palavra null na query.
Tópico encerrado , respostas não são mais permitidas