Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
>
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.
coloque:
where Codigo="&Codigo
e veja seu formato de data para ver se está de acordo com o banco!
>
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.
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
a dica do smith também é boa
os campos de datas são do tipo DATE?
O que tem nas variáveis datas??
exato, NaPraia, a opção dele é ótima, mais seria ideal você tratar tbm os campos vazios
>
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]
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&""
>
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.
>
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
>
>
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.
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 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!
Já tentou assim:
<% If IsNull(rs("campo")) then %>
'Escreve aqui'
<% Else %>
'Escreve aqui'
<% End if %>
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
primeiro, qual banco você está usando?
qual é o erro que dá?