ANIVERSARIANTES

JPAULO101 11/06/2010 07:37:37
#344557
Olá pessoal blz. Gostaria de uma ajuda de vocês, é o seguinte tenho uma função no meu projeto que desenvolvo, onde verifica a data de aniversario dos funcionarios, se existe aniversariante hoje o sistema mostra uma mensagem na tela e começa tocar uma musica de parabéns. Até tudo bem, meu problema e que toda vez que abro o sistema fica dando a mensagem e tocando a musica, gostaria de saber se têm como só mostrar a mensagem e tocar a musica apenas uma unica vez, depois se abrir o sistema novamente não mostrar mais.

Agradeço ajuda de todos

Segue código

Function AniversarianteHoje() As Boolean

Dim rs As New ADODB.Recordset, SQL As String
AniversarianteHoje = False

SQL = [Ô]SELECT DataNasc [Ô]
SQL = SQL & [Ô]FROM tblcadfun [Ô]
SQL = SQL & [Ô]WHERE DAY(DataNasc) = [Ô] & Day(Now) & [Ô] [Ô]
SQL = SQL & [Ô]AND MONTH(DataNasc) = [Ô] & Month(Now) & [Ô] [Ô]
SQL = SQL & [Ô] AND Status = [ô]Ativo[ô] ;[Ô]

rs.Open SQL, con
If Not rs.EOF Then AniversarianteHoje = True
rs.Close
Set rs = Nothing

End Function


Sub Aniversario()

Dim Dia As String
Dia = Format(Date)

If AniversarianteHoje = True Then

DirectShow_Load_Media App.Path & [Ô]\Sons\Parabéns.wav[Ô]

DirectShow_Volume 100
DirectShow_Balance 0
DirectShow_Speed 100
DirectShow_Set_Position 0, 0, 0, 0

DirectShow_Play
MsgBox [Ô]Atenção: Existe Aniversariante Hoje dia [Ô] & Dia & [Ô]?[Ô], vbInformation, [Ô]Cadastro de Funcionário[Ô]
End If

End Sub
MARCIO.ROGERIO 11/06/2010 07:56:04
#344558
Olá, a solução é você ter um campo para gravar um status na mesma tabela ou em outra.

Até,

Rogério.
JONATHANSTECKER 11/06/2010 08:21:00
#344560
Na sua tabela: [Ô]tblcadfun[Ô], insira um campo [Ô]Aviso[Ô] e coloque ele como Default = 0.

Na sua rotina de Aniversario inclua uma função de Update no banco onde altere o aviso para 1.
E na mesma rotina coloque mais uma condição, AniversarianteHoje = True e Aviso = 1.

Assim só roda uma vez.

Mas isso só complementendo o que o Marcio falou...
FEDERHEN 11/06/2010 08:34:49
#344563
1) Grave em algum lugar a última data exibida
2) Mostra os aniversariantes somente quando a data do sistema for diferente da data do item 1
JPAULO101 11/06/2010 10:45:41
#344583
Alguém poderia mim ajudar com algum exemplo.
MARCELO.TREZE 11/06/2010 13:32:38
#344612
[ô]use o registro do Windows para armazenar dados.

[ô]Para salvar os dados, use a seguinte sintaxe:

SaveSetting <nome_aplicativo>, <par_1>, <par_2>, <par_3>, <par_4>

[ô]exemplo:

SaveSetting [Ô]Agenda[Ô], [Ô]Registro[Ô], [Ô]Nome[Ô], Text1.Text

[ô]Para recuperar os dados, use a seguinte sintaxe:

Registro = GetSetting (<nome_aplicativo>, <par_1>, <par_2>, <par_3>)

[ô]exemplo

Registro = GetSetting ([Ô]Agenda[Ô], [Ô]Registro[Ô], [Ô]Nome[Ô])

[ô]para excluir, use o seguinte:

DeleteSetting <nome_aplicativo>, <par_1>

[ô]exemplo

DeleteSetting [Ô]Agenda[Ô], [Ô]Registro[Ô]

agora um exemplo em seu programa

Function AniversarianteHoje() As Boolean

Dim rs As New ADODB.Recordset, SQL As String
AniversarianteHoje = False

SQL = [Ô]SELECT DataNasc [Ô]
SQL = SQL & [Ô]FROM tblcadfun [Ô]
SQL = SQL & [Ô]WHERE DAY(DataNasc) = [Ô] & Day(Now) & [Ô] [Ô]
SQL = SQL & [Ô]AND MONTH(DataNasc) = [Ô] & Month(Now) & [Ô] [Ô]
SQL = SQL & [Ô] AND Status = [ô]Ativo[ô] ;[Ô]

rs.Open SQL, con
If Not rs.EOF Then
AniversarianteHoje = True
SaveSetting Me.Caption, [Ô]Aniversariante[Ô], CStr$(Format(Date,[Ô]yyyymmdd[Ô])), [Ô]Informado[Ô]
End If
rs.Close
Set rs = Nothing

End Function



Sub Aniversario()

Dim Dia As String
Dim Niver As String

Dia = Format(Date)
Niver = GetSetting (Me.Caption, [Ô]Aniversariante[Ô], CStr$(Format(Date,[Ô]yyyymmdd[Ô])))
If AniversarianteHoje = True And Niver <> [Ô]Informado[Ô] Then

DirectShow_Load_Media App.Path & [Ô]\Sons\Parabéns.wav[Ô]

DirectShow_Volume 100
DirectShow_Balance 0
DirectShow_Speed 100
DirectShow_Set_Position 0, 0, 0, 0

DirectShow_Play
MsgBox [Ô]Atenção: Existe Aniversariante Hoje dia [Ô] & Dia & [Ô]?[Ô], vbInformation, [Ô]Cadastro de Funcionário[Ô]
End If

End Sub


bom eu fiz, um exemplo por alto não teste, teste ai e diga se houver erros.
JPAULO101 11/06/2010 14:28:10
#344620
Grande Marcelo está dando erro na lima Me.Caption
JPAULO101 11/06/2010 14:39:27
#344621
Tirei o código do modulo e coloque no formulario principal, agora sim Me.Caption funciona, mais quando executo o sistema mostra a seguinte mensagem de erro.
FEDERHEN 11/06/2010 14:50:27
#344623
Esta lógica não funciona se o usuário acessar o projeto com mais de um computador...
JPAULO101 11/06/2010 15:28:12
#344628
OLÁ FEDERHEN, VOCÊ PODERIA MIM AJUDAR COM ESSA LÓGICA.

OBRIGADO PELA AJUDA
TECLA 11/06/2010 15:33:55
#344630
Resposta escolhida
Uma outra idéia seria...

Você criar uma OUTRA TABELA para armazenar o ANO (ex. 2010) e o código do ANIVERSARIANTE (ex. 1002) para identificar que no ano 2010, o aniversariante já recebeu a MENSAGEM e independente do computador que estiver usando, não irá mais recebê-la.

Além do mais, no ano que vem, o aniversariante precisará visualizar a mensagem novamente, ou não???
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas