Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fazeredo2002

Problema com Data.

Recommended Posts

Olá pessoal!

Estou com problema num Update.

 

Se a variável for <> "" o erro não ocorre.

Se a variável for = "" o erro ocorre.

 

Segue o update:

[/code]
SQL = "UPDATE Funcionarios set DtEntrada='"&DtEntrada&"',DtSaida='"&DtSaida&"',Nome='"&Nome&"' where Codigo="&Codigo&""
[code]

Agradeço a ajuda de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro, qual banco você está usando?

qual é o erro que dá?

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro, qual banco você está usando?

qual é o erro que dá?

Olá maninho!

Uso Access

e segue o erro:

 

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.

/bernardes/adm/funcionario_view_alterar.asp, line 77

 

se o campo data não for nulo não dá o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque:

 

where Codigo="&Codigo

e veja seu formato de data para ver se está de acordo com o banco!

Olá maninho!

 

O formato da data está correto. o problema só ocorre quando o campo data está vazio.

 

Obrigado e espero mais ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se lhe ajuda em algo !

 

SQL = "UPDATE Funcionarios set "

IF DtEntrada <> "" THEN SQL = SQL & "DtEntrada ='" & DtEntrada &"', "

IF DtSaida <> "" THEN SQL = SQL & "DtSaida='" & DtSaida & "', "

SQL = SQL & "Nome='"&Nome&"' where Codigo="&Codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

a dica do smith também é boa

os campos de datas são do tipo DATE?

O que tem nas variáveis datas??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se lhe ajuda em algo !

 

SQL = "UPDATE Funcionarios set "

IF DtEntrada <> "" THEN SQL = SQL & "DtEntrada ='" & DtEntrada &"', "

IF DtSaida <> "" THEN SQL = SQL & "DtSaida='" & DtSaida & "', "

SQL = SQL & "Nome='"&Nome&"' where Codigo="&Codigo

 

Valeu Smith!!!!!

 

A sua dica foi muito boa, me deu uma luz e eu consegui resolver.

 

Olha como ficou o código:

[/code]

SQL = "Update Funconarios set "
if DtEntrada <> "" then
SQL = SQL & "DtEntrada='"&DtEntrada&"', "
else
SQL = SQL & "DtEntrada = null, "
end if
if DtSaida <> "" then
SQL = SQL & "DtSaida='"&DtSaida&"', "
else
SQL = SQL & "DtSaida=null, "
end if

SQL = SQL & "Nome='"&Nome&"' where Codigo = "&Codigo&""

[code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu deus do céu, não estraga o programa

como o tek disse:

exato, NaPraia, a opção dele é ótima, mas seria ideal você tratar tbm os campos vazios|

se você colocar os IFs vai perder um pouco de performance.

SQL = "Update Funconarios set "

if DtEntrada <> "" then

SQL = SQL & "DtEntrada='"&DtEntrada&"', "

else

SQL = SQL & "DtEntrada = null, "

end if

if DtSaida <> "" then

SQL = SQL & "DtSaida='"&DtSaida&"', "

else

SQL = SQL & "DtSaida=null, "

end if

SQL = SQL & "Nome='"&Nome&"' where Codigo = "&Codigo&""

para quê esses ELSEs??????

só para perder performance.

 

faz assim

SQL = "Update Funconarios set "
if DtEntrada <> "" then
SQL = SQL & "DtEntrada='"&DtEntrada&"', "
end if
if DtSaida <> "" then
SQL = SQL & "DtSaida='"&DtSaida&"', "
end if
SQL = SQL & "Nome='"&Nome&"' where Codigo = "&Codigo&""

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu deus do céu, não estraga o programa

como o tek disse:

exato, NaPraia, a opção dele é ótima, mas seria ideal você tratar tbm os campos vazios|

se você colocar os IFs vai perder um pouco de performance.

SQL = "Update Funconarios set "

if DtEntrada <> "" then

SQL = SQL & "DtEntrada='"&DtEntrada&"', "

else

SQL = SQL & "DtEntrada = null, "

end if

if DtSaida <> "" then

SQL = SQL & "DtSaida='"&DtSaida&"', "

else

SQL = SQL & "DtSaida=null, "

end if

SQL = SQL & "Nome='"&Nome&"' where Codigo = "&Codigo&""

para quê esses ELSEs??????

só para perder performance.

 

faz assim

SQL = "Update Funconarios set "
if DtEntrada <> "" then
SQL = SQL & "DtEntrada='"&DtEntrada&"', "
end if
if DtSaida <> "" then
SQL = SQL & "DtSaida='"&DtSaida&"', "
end if
SQL = SQL & "Nome='"&Nome&"' where Codigo = "&Codigo&""

Oi maninho!

você testou o que você fez?

O meu problema era os campos vazios, por isso os "TERRÍVEIS ELSES"!!!

Se o campo DtEntrada estiver com a data 09/05/2008 e você for alterar o registro deixando o campo DtEntrada sem DATA, nulo, não vai alterar.

Por isso que eu pergunto, testou o que você fez ou vamos deixar o sistema mais lento com os "OS TERRÍVEIS ELSES".

Mesmo assim valeu a sua intenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu problema era os campos vazios, por isso os elses!!!

mesmo assim valeu a sua intenção.

para que serve alterar uma data para null???

não vejo sentido para que usar isso?

que tipo que aplicação você faz que precisa?

 

só me ocorre a necessidade de usar se você está cancelando um evento que não tem uma próxima data prevista

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu problema era os campos vazios, por isso os elses!!!

mesmo assim valeu a sua intenção.

para que serve alterar uma data para null???

não vejo sentido para que usar isso?

que tipo que aplicação você faz que precisa?

 

só me ocorre a necessidade de usar se você está cancelando um evento que não tem uma próxima data prevista

 

Digamos que por acidente a pessoa coloca uma data no campo data e depois desiste desta data e apaga o campo, o sistema nao faz a alteração e dá erro. Por isto, eu postei a minha dúvida.

 

Agora galera, pode fechar o post que está resolvido.

 

Valeu a atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No iMasters tópicos de duvidas, por padrão, não são fechados.

 

Os campos de data de seu BD está como String? Uma possibilidade para reduzir o uso do ELSE e maximizar a montagem de sua SQL seria jogar as ' diretamente na sua variável e depois testar +/- assim:

DtEntrada = "'"& DataEntrada &"'"
DtSaida = "'"& DataSaida &"'"
if DtEntrada = "''" then DtEntrada = "Null" end if
if DtSaida = "''" then DtSaida = "Null" end if
SQL = "Update Funconarios set DtEntrada="& DtEntrada &", DtSaida="& DtSaida &", Nome='"& Nome &"' where Codigo = "& Codigo &";"

Onde o trecho com DtEntrada = "'"& DataEntrada &"'" e DtSaida = "'"& DataSaida &"'" são do trecho onde você alimenta normalmente essas variaveis.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No iMasters tópicos de duvidas, por padrão, não são fechados.

 

Os campos de data de seu BD está como String? Uma possibilidade para reduzir o uso do ELSE e maximizar a montagem de sua SQL seria jogar as ' diretamente na sua variável e depois testar +/- assim:

DtEntrada = "'"& DataEntrada &"'"
DtSaida = "'"& DataSaida &"'"
if DtEntrada = "''" then DtEntrada = "Null" end if
if DtSaida = "''" then DtSaida = "Null" end if
SQL = "Update Funconarios set DtEntrada="& DtEntrada &", DtSaida="& DtSaida &", Nome='"& Nome &"' where Codigo = "& Codigo &";"
Onde o trecho com DtEntrada = "'"& DataEntrada &"'" e DtSaida = "'"& DataSaida &"'" são do trecho onde você alimenta normalmente essas variaveis.

 

Abraços!

No meu banco está entrando como data mesmo.

A sua opnião é melhor mesmo.

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por causa das datas invalidas eu deixo o meu banco de dados ensirindo um defaul ('0000-00-00') assim quando eu fazer uma busca por data nula ele aceita, não sei qual banco de dados você utiliza e se tem diferença eu uso MySql

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.