Ir para conteúdo

POWERED BY:

Arquivado

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

Reinaldo

[Resolvido] DateAdd

Recommended Posts

Tive que postar de novo pq não deu continuidade ao post anterior, o problema é o seguinte estou usando a função Dateadd como segue abaixo, mas a consulta gera um erro: Tipo de dados imcompatível na expressão de critério.

Alguem sabe me dizer pq?

 

dataVenc=DateAdd("d",5,(Date())) ' Data de vencimento somado mais 5 dias

 

 

objRS = Server.CreateObject("ADODB.RecordSet")

sql="Select* from cliente WHERE DATAFINAL = '"&dataVenc&"'"

Set objRS=conn.execute(sql)

datafinal = objRS("DATAFINAL")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente tirar as aspas simples ('"&dataVenc&"'") e separar o * do select "Select*", veja:

 

dataVenc=DateAdd("d",5,(Date())) ' Data de vencimento somado mais 5 dias

objRS = Server.CreateObject("ADODB.RecordSet")
sql="Select * from cliente WHERE DATAFINAL = "&dataVenc&""
Set objRS=conn.execute(sql)
datafinal = objRS("DATAFINAL")

Acho que deve funcionar..

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o campo datafinal é de que tipo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o campo datafinal é de que tipo?

è pessoal nada dar certo, o campo DATAFINAL é do tipo DATA/HoRA.

Tirei as aspas tb e não funcinou. Continua o mesmo erro:Tipo de dados imcompatível na expressão de critério.

Tentei formatar a data como segue abaixo e nda tb. Será que temos mais opções?

CODE
<%

session.LCID=1046

 

DataInicio = cdate(DATE())

'dataVenc=DateAdd("d",5,(DataInicio)) ' Data de vencimento somado mais 5 dias

Function FormataData(Data)

If Data <> "" Then

FormataData = Right("0" & DatePart("d", Data),2) & "" & Right("0" & DatePart("m", Data),2) & "" & DatePart("yyyy", Data)

 

End If

End Function

dataVenc=FormataData(DateAdd("d" , 5, Date()))

 

objRS = Server.CreateObject("ADODB.RecordSet")

sql="Select* from cliente WHERE DATAFINAL = "&dataVenc&""

Set objRS=conn.execute(sql)

 

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera.. só um adendo....

 

Quando vamos fazer uma consulta em um BD, e a consulta possui um parametro que é um campo Data/Hora, devemos colocar o "sustenido" (#) no inicio e no final da string a ser passada, ex:

 

sql="Select* from cliente WHERE DATAFINAL = #"&dataVenc&"#"

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera.. só um adendo....

 

Quando vamos fazer uma consulta em um BD, e a consulta possui um parametro que é um campo Data/Hora, devemos colocar o "sustenido" (#) no inicio e no final da string a ser passada, ex:

 

sql="Select* from cliente WHERE DATAFINAL = #"&dataVenc&"#"

 

Abraços...

Já coloquei tambem o sustenido e não funcionou aparece esse erro: BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas isso NAO É UM ERRO.

 

Essa mensagem apenas mostra que a consulta FOI REALIZADA CORRETAMENTE, porém não trouxe nenhum registro...

 

Coloque um

If NOT Rs.EOF Then

No seu código.. isso irá verificar se a consulta trouxe registros ou nao... se trouxerem, você faz a ação, caso contrário, mostre uma mensagem na tela..

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas isso NAO É UM ERRO.

 

Essa mensagem apenas mostra que a consulta FOI REALIZADA CORRETAMENTE, porém não trouxe nenhum registro...

 

Coloque um

If NOT Rs.EOF Then

No seu código.. isso irá verificar se a consulta trouxe registros ou nao... se trouxerem, você faz a ação, caso contrário, mostre uma mensagem na tela..

 

Abraços...

Pois é broder, realmente isso não é um erro mas eu já tentei de tudo que conheço e continua a mesma coisa, algo está me passando batido veja o codigo mais uma vez.
CODE
<%

session.LCID=1046

 

DataInicio =(DATE())

dataVenc=(DateAdd("d",5, DataInicio))

 

objRS = Server.CreateObject("ADODB.RECORDSET")

sql="Select* from cliente WHERE DATAFINAL = #"&dataVenc&"#"

Set objRS=conn.execute(sql)

 

if Not objRS.eof then

response.Write("Nenum registro foi encontrdo!")

end if

 

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao.. e com esse seu codigo ai acima ele nao faz nada ???

 

Ou Da algum erro ainda ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao.. e com esse seu codigo ai acima ele nao faz nada ???

 

Ou Da algum erro ainda ??

Continua a mesma informação:

 

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara. nao é possivel...

 

Qual o seu BD? Access ??

 

Se for.. me manda o BD e os fontes zipados....

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara. nao é possivel...

 

Qual o seu BD? Access ??

 

Se for.. me manda o BD e os fontes zipados....

 

Abraços...

Por onde faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

manda para davi@carpetao.com.br

 

Abraços....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Analisei seu codigo...

 

Erros encontrados:

 

você até fez o If que te falei, porém de uma forma incorreta.

 

você fez assim:

 

if Not objRS.eof then
response.Write("Nenum registro foi encontrdo!")
end if

<table width="600" border="1" align="center" cellpadding="5" cellspacing="0">
  <tr>
	<td colspan="3" bgcolor="#FFFFFF"><div align="center"><img src="imagem/logo.png" width="197" height="51"></div></td>
  </tr>
  <tr>
	<td colspan="3" bgcolor="#CCCCCC"><div align="center" class="style3">RELAÇÃO DE CLIENTE <%=(objRS("DATAFINAL")) %> </div></td>
  </tr>

Ta ERRADO.

 

O "if Not objRS.eof then" significa " Se ele ENCONTRAR DADOS ".... e você estava usando ele ao inverso...

Por isso ele estava acusando erro, pois ele NAO ENCONTRAVA NADA e você mandava ele exibir os dados logo abaixo...

 

Outra coisa, no access, você deve passar a data no formato mm/dd/aaaa para realizar a consulta, caso contrário ele nao encontra nada...

 

Então faça como eu lhe mostrarei aki abaixo:

 

DataInicio =(DATE())
dataVenc=(DateAdd("d",5, DataInicio)) 
Dia = Mid(dataVenc,1,2)
Mes = Mid(dataVenc,4,2)
Ano = Mid(dataVenc,6,4)
dataVenc1 = Mes & "/" & Dia & "/" & Ano

objRS = Server.CreateObject("ADODB.RECORDSET")
sql="Select* from cliente WHERE DATAFINAL = #"&dataVenc1&"#"
Set objRS=conn.execute(sql)

if Not objRS.eof then

 %>

 
<table width="600" border="1" align="center" cellpadding="5" cellspacing="0">
  <tr>
	<td colspan="3" bgcolor="#FFFFFF"><div align="center"><img src="imagem/logo.png" width="197" height="51"></div></td>
  </tr>
  <tr>
	<td colspan="3" bgcolor="#CCCCCC"><div align="center" class="style3">RELAÇÃO DE CLIENTE <%=(objRS("DATAFINAL")) %> </div></td>
  </tr>
 
  <tr>
	<td><div align="center" class="style3">
	  <div align="center">DATA DE VENCIMENTO </div>
	</div></td>
	<td><div align="center" class="style3">
	  <div align="center">NOME DO CLIENTE </div>
	</div></td>
	<td> <div align="center" class="style3">PERFIL </div></td>
  </tr>
  <tr>  <%
	
  'if datafinal = dataVenc then
  do while not objRS.Eof  %>
	<td><%= objRS("DATAFINAL") %></td>
	<td><%= objRS("NOMECLIENTE") %></td>
	<td> </td>
  </tr>
 <% objRS.MoveNext
loop
'end if
 %>
  <tr class="style1">
	<td colspan="3"><a href="java script:window.print()"></a><a href="mapa.html"><img src="imagem/bt_voltar.jpg" width="98" height="38" border="0"></a></td>
  </tr>
</table>
</body>
</html>
<% 
else
response.Write("Nenum registro foi encontrdo!")

end if %>

É isso ai..

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Analisei seu codigo...

 

Erros encontrados:

 

você até fez o If que te falei, porém de uma forma incorreta.

 

você fez assim:

 

if Not objRS.eof then
response.Write("Nenum registro foi encontrdo!")
end if

<table width="600" border="1" align="center" cellpadding="5" cellspacing="0">
  <tr>
	<td colspan="3" bgcolor="#FFFFFF"><div align="center"><img src="imagem/logo.png" width="197" height="51"></div></td>
  </tr>
  <tr>
	<td colspan="3" bgcolor="#CCCCCC"><div align="center" class="style3">RELAÇÃO DE CLIENTE <%=(objRS("DATAFINAL")) %> </div></td>
  </tr>

Ta ERRADO.

 

O "if Not objRS.eof then" significa " Se ele ENCONTRAR DADOS ".... e você estava usando ele ao inverso...

Por isso ele estava acusando erro, pois ele NAO ENCONTRAVA NADA e você mandava ele exibir os dados logo abaixo...

 

Outra coisa, no access, você deve passar a data no formato mm/dd/aaaa para realizar a consulta, caso contrário ele nao encontra nada...

 

Então faça como eu lhe mostrarei aki abaixo:

 

DataInicio =(DATE())
dataVenc=(DateAdd("d",5, DataInicio)) 
Dia = Mid(dataVenc,1,2)
Mes = Mid(dataVenc,4,2)
Ano = Mid(dataVenc,6,4)
dataVenc1 = Mes & "/" & Dia & "/" & Ano

objRS = Server.CreateObject("ADODB.RECORDSET")
sql="Select* from cliente WHERE DATAFINAL = #"&dataVenc1&"#"
Set objRS=conn.execute(sql)

if Not objRS.eof then

 %>

 
<table width="600" border="1" align="center" cellpadding="5" cellspacing="0">
  <tr>
	<td colspan="3" bgcolor="#FFFFFF"><div align="center"><img src="imagem/logo.png" width="197" height="51"></div></td>
  </tr>
  <tr>
	<td colspan="3" bgcolor="#CCCCCC"><div align="center" class="style3">RELAÇÃO DE CLIENTE <%=(objRS("DATAFINAL")) %> </div></td>
  </tr>
 
  <tr>
	<td><div align="center" class="style3">
	  <div align="center">DATA DE VENCIMENTO </div>
	</div></td>
	<td><div align="center" class="style3">
	  <div align="center">NOME DO CLIENTE </div>
	</div></td>
	<td> <div align="center" class="style3">PERFIL </div></td>
  </tr>
  <tr>  <%
	
  'if datafinal = dataVenc then
  do while not objRS.Eof  %>
	<td><%= objRS("DATAFINAL") %></td>
	<td><%= objRS("NOMECLIENTE") %></td>
	<td> </td>
  </tr>
 <% objRS.MoveNext
loop
'end if
 %>
  <tr class="style1">
	<td colspan="3"><a href="java script:window.print()"></a><a href="mapa.html"><img src="imagem/bt_voltar.jpg" width="98" height="38" border="0"></a></td>
  </tr>
</table>
</body>
</html>
<% 
else
response.Write("Nenum registro foi encontrdo!")

end if %>

É isso ai..

 

Abraços...

Valeu a força, consegui resolver tudo.

abraços!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você VIU como a sua data está saindo ???

 

/2/9//008

Ela tem q ficar no formato padrão

 

02/09/2008

Basta manipular a string da data para ficar no formato correto...

 

Coloque o formato da data para dd/mm/aaaa na maquina onde o ASP roda.. e faça a verificação se o dia ou o mes nao contiver o "0" na frente.... assim a data fica correta.. tipo:

If Len(Dia) = "1" Then
Dia = "0" & Dia
End if

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você VIU como a sua data está saindo ???

 

/2/9//008

Ela tem q ficar no formato padrão

 

02/09/2008

Basta manipular a string da data para ficar no formato correto...

 

Coloque o formato da data para dd/mm/aaaa na maquina onde o ASP roda.. e faça a verificação se o dia ou o mes nao contiver o "0" na frente.... assim a data fica correta.. tipo:

If Len(Dia) = "1" Then
Dia = "0" & Dia
End if

 

Abraços...

Obrigado pela ajuda, já consegui formatar a data esta tudo funcionando corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você VIU como a sua data está saindo ???

 

/2/9//008

Ela tem q ficar no formato padrão

 

02/09/2008

Basta manipular a string da data para ficar no formato correto...

 

Coloque o formato da data para dd/mm/aaaa na maquina onde o ASP roda.. e faça a verificação se o dia ou o mes nao contiver o "0" na frente.... assim a data fica correta.. tipo:

If Len(Dia) = "1" Then
Dia = "0" & Dia
End if

 

Abraços...

Obrigado pela ajuda, já consegui formatar a data esta tudo funcionando corretamente.

 

é irmão vou te encomodar mais uma vez, até ontem estava dando certo hoje quando fui ver pra dar continuidade retorna esse erro da data já fiz tudo aqui que imaginei e nada pode me dar mais essa dica? veja aí:

Erro de sintaxe na data na expressão de consulta 'DATAFINAL = #3//10/2008#'.

 

fiz assim:

 

If Len(Dia) = "1" Then

Dia = "0" & Dia

End if

 

 

If Len(Mes) = "1" Then

Mes = "0" & Mes

End if

 

 

DataInicio =(DATE())

dataVenc=(DateAdd("d",5, DataInicio))

Dia = Mid(dataVenc,1,2)

Mes = Mid(dataVenc,4,2)

Ano = Mid(dataVenc,6,4)

dataVenc1 = Mes & "/" & Dia & "/" & Ano

 

Realmente estou tomando uma surra desse sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo... como você pode verificar o tamanho de uma variavel de você só declara q ela existe depois da função ???

 

Faça assim:

 

Dia = Mid(dataVenc,1,2)
Mes = Mid(dataVenc,4,2)
Ano = Mid(dataVenc,6,4)

If Len(Dia) = "1" Then
Dia = "0" & Dia
End if


If Len(Mes) = "1" Then
Mes = "0" & Mes
End if


DataInicio =(DATE())
dataVenc=(DateAdd("d",5, DataInicio))
dataVenc1 = Mes & "/" & Dia & "/" & Ano

Primeiro declare as variaveis Dia, Mes e ano.... depois faça a verificação nelas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo... como você pode verificar o tamanho de uma variavel de você só declara q ela existe depois da função ???

 

Faça assim:

 

Dia = Mid(dataVenc,1,2)
Mes = Mid(dataVenc,4,2)
Ano = Mid(dataVenc,6,4)

If Len(Dia) = "1" Then
Dia = "0" & Dia
End if


If Len(Mes) = "1" Then
Mes = "0" & Mes
End if


DataInicio =(DATE())
dataVenc=(DateAdd("d",5, DataInicio))
dataVenc1 = Mes & "/" & Dia & "/" & Ano

Primeiro declare as variaveis Dia, Mes e ano.... depois faça a verificação nelas...

Estou observando que se a data for de 1 a 9 o erro aparece, mas se for de 10 a cima mostra normal se tem ou não cadastro no banco.

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.