Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Aniversariantes do mês


Vagner Nunes

Pergunta

25 respostass a esta questão

Posts Recomendados

  • 0
Guest Andrews - virtuaplus.com.br - Lo

Você tem que fazer uma seleção entre os dias que deseja. O campo data de nascimento precisar estar como DATA.

Vou colocar só a SELECT. se você precisar do código todo, que inclui a conexão com o banco, etc, me avisa que eu monto pra você.

SELECT nome, setor FROM aniversariantes WHERE DateDiff ('m', dtaniversario, "&Date&" ) = 0

'Selecione nome, setor DE aniversariantes QUANDO a diferença em MESES DA data de aniversario e a data de hoje forem 0.

Andrews

Virtuaplus - Negócios Web

Criação de lojas virtuais

www.virtuaplus.com.br

Link para o comentário
Compartilhar em outros sites

  • 0

Prezado,

Boa tarde.

Poderia me explicar melhor como faço.

Estou utilizando este código abaixo, mas o que eu queria mesmo é que ele mostre por mês, porém no capo data.

Set Aniversario = Server.CreateObject("ADODB.Recordset")
Aniversario.ActiveConnection = MM_Conectar_STRING
Aniversario.Source = "SELECT *  FROM aniversariantes  WHERE mes = 'Agosto'"
Aniversario.CursorType = 0
Aniversario.CursorLocation = 2
Aniversario.LockType = 1
Aniversario.Open()

Desde já agradeço

Link para o comentário
Compartilhar em outros sites

  • 0

você quer os aniversiariantes do mês, certo?

Mas como está a data no seu bd? em que formato?

porque no select acima você esta procurando pelo mes 'agosto', assim mesmo, por extenso...

Por isso antes de qualquer coisa me confirma como está o seu campo data no bd, ok? em qual formato está?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Então Vagner... pra você fazer isso você vai ter que fazer uma consulta ao bd... ou seja, se você quer fazer uma consulta de todos os aniversiariantes do mes de agosto de 2008, você precisa fazer uma query do tipo:

Selecione todos os aniversiariantes onde o campo data esteja entre 01/08/2008 e 31/08/2008, sacou?

Pra contruir essa query você terá que levar em consideração alguns critérios e estes dependerão basicamente da sua vontade... na query abaixo estou pegando a data atual (date) para descobrir em que mes estamos... tb precisamos saber se o mes atual tem trinta ou trinta e um ou 29 ou 28 dias... então vamos lá:

'para saber se o mes atual tem 28, 29, 30 ou 31 dias:
<%
data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1) & "/" & data_q(2)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final &"/"& mesatual &"/"& anoatual
'aqui você deve abrir a conexão com o banco...
sql = " select * from sua_tabela where campo_data between #"&datai&"# and #"&dataf&"#"
'aqui você deve setar o rs...

fiz na correria, não testei... somente um exemplo... deu uma luz?

edt: fonte sobre como pegar o ultimo dia do mes: http://forum.imasters.uol.com.br/index.php?showtopic=116700

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

legal gostei dessa idéia..

sql="SELECT nome, setor FROM aniversariantes WHERE DateDiff ('m', dtaniversario, "&Date&" ) = 0"

vb script: DateDiff ( )

Descrição:

devolve um numero de intervalo entre duas datas.

DiffADate = "A partir de hoje : " & DateDiff("d", Now, "10-12-2002")

As diferenças possiveis a fazer estão restritas pelas seguintes hipóteses :

yyyy -> Ano

q -> Quarto

m -> Mês

y -> Dia do Ano

d -> Dia

w -> Dia da semana

ww -> Semana do ano

h -> Hora

n -> Minuto

s -> Segundo

Link para o comentário
Compartilhar em outros sites

  • 0

Os dados na tabela estão escritos por extenso, certo??

sendo assim, você pode fazer isso

Código:

Select case month(date)
Case 1
nome_mes = "Janeiro"
Case 2
nome_mes = "Fevereiro"
Case 3
nome_mes = "Março"
Case 4
nome_mes = "Abril"
Case 5
nome_mes = "Maio"
Case 6
nome_mes = "Junho"
Case 7
nome_mes = "Julho"
Case 8
nome_mes = "Agosto"
Case 9
nome_mes = "Setembro"
Case 10
nome_mes = "Outubro"
Case 11
nome_mes = "Novembro"
Case 12
nome_mes = "Dezembro"
End Select

sql = "Select * from aniversariantes where dtaniversao='" & nome_mes & "'"

Isso só funcionará se no campo "dtaniversario" estiver escrito o mês por extenso

Caso estiver escrita a data completo, use a função DataDiff

Link para o comentário
Compartilhar em outros sites

  • 0

Prezados,

Tentei, mas sem sucesso, a página da o seguinte erro:

Script error detected at line 32.

Source line: rs.Open SQL, Conexao

Description: Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.

Abaixo está a página que estou tentando abrir.

Obrigado pela ajuda dos senhores....

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/Conectar.asp" -->

<%


data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1) & "/" & data_q(2)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final &"/"& mesatual &"/"& anoatual
'aqui você deve abrir a conexão com o banco...
sql = " select * from aniversariantes where data between #"&datai&"# and #"&dataf&"#"
'aqui você deve setar o rs...

Set rs = Server.CreateObject("ADODB.Recordset") 

rs.Open SQL, Conexao
  If rs.EOF Then ' Se não encontrou registros escreva
      Response.Write("Não há Aniversáriantes Para o Dia de Hoje.")
  Else 'Se encontrou registros escreva
      Response.Write("<b>" & rs.RecordCount & "</b> Usuarios Fazem Aniversario Hoje: <br>")
      Do While NOT rs.EOF ' Faça enquanto existir registros
        Response.Write(rs("nome") & "(<b>" & DateDiff("yyyy",rs("data"),Now) & "</b>)<br>")
      rs.MoveNext
      Loop
  End If

rs.Close
Set rs = Nothing
Conexao.Close
Set Conexao = Nothing
%>


</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Aparentemente é um problema na abertura da sua conexão...

você tem um include ali... eu não sei como ele ta... mas eu tiraria ele fora pra testar... e testaria assim:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%


data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1) & "/" & data_q(2)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final &"/"& mesatual &"/"& anoatual

Set objConn =  Server.CreateObject("ADODB.Connection")
sql = " select * from aniversariantes where data between #"&datai&"# and #"&dataf&"#"
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set rs = objConn.Execute(sql)


  If rs.EOF Then ' Se não encontrou registros escreva
      Response.Write("Não há Aniversáriantes Para o Dia de Hoje.")
  Else 'Se encontrou registros escreva
      Response.Write("<b>" & rs.RecordCount & "</b> Usuarios Fazem Aniversario Hoje: <br>")
      Do While NOT rs.EOF ' Faça enquanto existir registros
        Response.Write(rs("nome") & "(<b>" & DateDiff("yyyy",rs("data"),Now) & "</b>)<br>")
      rs.MoveNext
      Loop
  End If

rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>


</body>
</html>

Lembre-se de alterar o nome do seu BD e/ou o caminho!

se continur não funcionando pode ser pelo fato de estar invertendo alguma data, colocando a mesma no estilo americano... se acontecer isso por favor avise!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Prezado Rafael,

Fiz as modificações, porém agora está dando o seguinte erro:

Script error detected at line 18.

Source line: Set rs = objConn.Execute(sql)

Description: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na data na expressão de consulta 'data between #01/10/2008# and #31/10/2008/10/2008#'.

Segue abaixo os códigos já com as devidas modificações:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%


data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1) & "/" & data_q(2)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final &"/"& mesatual &"/"& anoatual

Set objConn =  Server.CreateObject("ADODB.Connection")
sql = " select * from aniversariantes where data between #"&datai&"# and #"&dataf&"#"
objConn.Open "DBQ=" & Server.MapPath("bd/intranet.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set rs = objConn.Execute(sql)


  If rs.EOF Then ' Se não encontrou registros escreva
      Response.Write("Não há Aniversáriantes Para o Dia de Hoje.")
  Else 'Se encontrou registros escreva
      Response.Write("<b>" & rs.RecordCount & "</b> Usuarios Fazem Aniversario Hoje: <br>")
      Do While NOT rs.EOF ' Faça enquanto existir registros
        Response.Write(rs("nome") & "(<b>" & DateDiff("yyyy",rs("data"),Now) & "</b>)<br>")
      rs.MoveNext
      Loop
  End If

rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>

Link para o comentário
Compartilhar em outros sites

  • 0

o campo dataf esta passando um valor errado:

#31/10/2008/10/2008#'.
sacou? por isso o erro!

porque você esta fazendo isso aqui?

data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1) & "/" & data_q(2)
final = dateadd("d",-1,data_f)

Qual o seu objetivo com isso e porque data_q(2)???

O erro ta por aí... da uma repensada na lógica ou explica um pouquinho melhor o que você esta tentando fazer com a dataf, ok?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Prezado Rafael,

As linhas foi você quem me passou: data_f = "1" & "/" & data_q(1) & "/" & data_q(2)...

Segue abaixo código que você me enviou se você rolar a barra desde lá do começa você irá ver. Eu só estou querendo mostrar o aniversariante do mês.

'para saber se o mes atual tem 28, 29, 30 ou 31 dias:
<%
data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1) & "/" & data_q(2)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final &"/"& mesatual &"/"& anoatual
'aqui você deve abrir a conexão com o banco...
sql = " select * from sua_tabela where campo_data between #"&datai&"# and #"&dataf&"#"
'aqui você deve setar o rs...

Link para o comentário
Compartilhar em outros sites

  • 0

Prezado,

Fiz algumas modificações e agora aparece sempre "Não há Aniversáriantes Para o Dia de Hoje", mas fiz algumas entradas com as datas de hoje.

Segue código modificado abaixo:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%

data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final &"/"& mesatual &"/"& anoatual

Set objConn =  Server.CreateObject("ADODB.Connection")
sql = " select * from aniversariantes where data between "&datai&" and "&dataf&""
objConn.Open "DBQ=" & Server.MapPath("bd/intranet.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set rs = objConn.Execute(sql)


  If rs.EOF Then ' Se não encontrou registros escreva
      Response.Write("Não há Aniversáriantes Para o Dia de Hoje.")
  Else 'Se encontrou registros escreva
      Response.Write("<b>" & rs.RecordCount & "</b> Usuarios Fazem Aniversario Hoje: <br>")
      Do While NOT rs.EOF ' Faça enquanto existir registros
        Response.Write(rs("nome") & "(<b>" & DateDiff("yyyy",rs("data"),Now) & "</b>)<br>")
      rs.MoveNext
      Loop
  End If

rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>

Link para o comentário
Compartilhar em outros sites

  • 0

Debug sua datai, dataf e seu select, desta forma:

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final &"/"& mesatual &"/"& anoatual

Set objConn =  Server.CreateObject("ADODB.Connection")
sql = " select * from aniversariantes where data between "&datai&" and "&dataf&""
objConn.Open "DBQ=" & Server.MapPath("bd/intranet.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'começando o debug
response.write "datai = " & datai & "<BR>"
response.write "dataf = " & dataf & "<BR>"
response.write "sql = " & sql & "<BR>"
response.end
'fim debug
Set rs = objConn.Execute(sql)

depois posta aqui os resultados, ok?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Prezado,

Fiz as modificações orientadas, porém agora a tela mostra esse erro abaixo:

datai = 01/10/2008

dataf = 31/10/2008/10/2008

sql = select * from aniversariantes where data between 01/10/2008 and 31/10/2008/10/2008

Segue abaixo código da página completa:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%

data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final &"/"& mesatual &"/"& anoatual

Set objConn =  Server.CreateObject("ADODB.Connection")
sql = " select * from aniversariantes where data between "&datai&" and "&dataf&""
objConn.Open "DBQ=" & Server.MapPath("bd/intranet.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'começando o debug
response.write "datai = " & datai & "<BR>"
response.write "dataf = " & dataf & "<BR>"
response.write "sql = " & sql & "<BR>"
response.end
'fim debug
Set rs = objConn.Execute(sql)

  If rs.EOF Then ' Se não encontrou registros escreva
      Response.Write("Não há Aniversáriantes Para o Dia de Hoje.")
  Else 'Se encontrou registros escreva
      Response.Write("<b>" & rs.RecordCount & "</b> Usuarios Fazem Aniversario Hoje: <br>")
      Do While NOT rs.EOF ' Faça enquanto existir registros
        Response.Write(rs("nome") & "(<b>" & DateDiff("yyyy",rs("data"),Now) & "</b>)<br>")
      rs.MoveNext
      Loop
  End If

rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>

Link para o comentário
Compartilhar em outros sites

  • 0

tente assim:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%

data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final

Set objConn =  Server.CreateObject("ADODB.Connection")
sql = " select * from aniversariantes where data between "&datai&" and "&dataf&""
objConn.Open "DBQ=" & Server.MapPath("bd/intranet.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'começando o debug
response.write "datai = " & datai & "<BR>"
response.write "dataf = " & dataf & "<BR>"
response.write "sql = " & sql & "<BR>"
response.end
'fim debug
Set rs = objConn.Execute(sql)

  If rs.EOF Then ' Se não encontrou registros escreva
      Response.Write("Não há Aniversáriantes Para o Dia de Hoje.")
  Else 'Se encontrou registros escreva
      Response.Write("<b>" & rs.RecordCount & "</b> Usuarios Fazem Aniversario Hoje: <br>")
      Do While NOT rs.EOF ' Faça enquanto existir registros
        Response.Write(rs("nome") & "(<b>" & DateDiff("yyyy",rs("data"),Now) & "</b>)<br>")
      rs.MoveNext
      Loop
  End If

rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Agora está aparecendo o seguinte:

datai = 01/10/2008

dataf = 31/10/2008

sql = select * from aniversariantes where data between 01/10/2008 and 31/10/2008

Página abaixo:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%

data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final

Set objConn =  Server.CreateObject("ADODB.Connection")
sql = " select * from aniversariantes where data between "&datai&" and "&dataf&""
objConn.Open "DBQ=" & Server.MapPath("bd/intranet.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'começando o debug
response.write "datai = " & datai & "<BR>"
response.write "dataf = " & dataf & "<BR>"
response.write "sql = " & sql & "<BR>"
response.end
'fim debug
Set rs = objConn.Execute(sql)

  If rs.EOF Then ' Se não encontrou registros escreva
      Response.Write("Não há Aniversáriantes Para o Dia de Hoje.")
  Else 'Se encontrou registros escreva
      Response.Write("<b>" & rs.RecordCount & "</b> Usuarios Fazem Aniversario Hoje: <br>")
      Do While NOT rs.EOF ' Faça enquanto existir registros
        Response.Write(rs("nome") & "(<b>" & DateDiff("yyyy",rs("data"),Now) & "</b>)<br>")
      rs.MoveNext
      Loop
  End If

rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>

Link para o comentário
Compartilhar em outros sites

  • 0

ok... agora deve estar funcionando... "anule" o debug colocando uma aspas simples antes dele! assim:

nesse trecho:

'começando o debug
response.write "datai = " & datai & "<BR>"
response.write "dataf = " & dataf & "<BR>"
response.write "sql = " & sql & "<BR>"
response.end
'fim debug
você deixa assim:
'começando o debug
'response.write "datai = " & datai & "<BR>"
'response.write "dataf = " & dataf & "<BR>"
'response.write "sql = " & sql & "<BR>"
'response.end
'fim debug

teste e poste aqui os resultados, ok?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Voltou a mostras que não existe aniversariante no dia, porém existe aniversariantes cadastrados neste dia.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%

data = dateadd("m",1,date)
data_q = split(data,"/")
data_f = "1" & "/" & data_q(1)
final = dateadd("d",-1,data_f)

mesatual = datepart ("m", date)
anoatual = datepart ("yyyy", date)
datai = "01" &"/"& mesatual &"/"& anoatual
dataf = final

Set objConn =  Server.CreateObject("ADODB.Connection")
sql = " select * from aniversariantes where data between "&datai&" and "&dataf&""
objConn.Open "DBQ=" & Server.MapPath("bd/intranet.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'começando o debug
'response.write "datai = " & datai & "<BR>"
'response.write "dataf = " & dataf & "<BR>"
'response.write "sql = " & sql & "<BR>"
'response.end
'fim debug
Set rs = objConn.Execute(sql)

  If rs.EOF Then ' Se não encontrou registros escreva
      Response.Write("Não há Aniversáriantes Para o Dia de Hoje.")
  Else 'Se encontrou registros escreva
      Response.Write("<b>" & rs.RecordCount & "</b> Usuarios Fazem Aniversario Hoje: <br>")
      Do While NOT rs.EOF ' Faça enquanto existir registros
        Response.Write(rs("nome") & "(<b>" & DateDiff("yyyy",rs("data"),Now) & "</b>)<br>")
      rs.MoveNext
      Loop
  End If

rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>
<%
ver.Close()
Set ver = Nothing
%>

Link para o comentário
Compartilhar em outros sites

  • 0

não tinha visto... mas o seu select está errado... quando o campo do bd é no formato data, você tem que abraçar as variaveis com # na query...

troque esse trecho:

sql = " select * from aniversariantes where data between "&datai&" and "&dataf&""
por esse aqui
sql = " select * from aniversariantes where data between #"&datai&"# and #"&dataf&"#"

poste aqui os resultados...

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...