ANIVERSARIANTES
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
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
Olá, a solução é você ter um campo para gravar um status na mesma tabela ou em outra.
Até,
Rogério.
Até,
Rogério.
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...
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...
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
2) Mostra os aniversariantes somente quando a data do sistema for diferente da data do item 1
Alguém poderia mim ajudar com algum exemplo.
[ô]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
bom eu fiz, um exemplo por alto não teste, teste ai e diga se houver erros.
[ô]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.
Grande Marcelo está dando erro na lima Me.Caption
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.
Esta lógica não funciona se o usuário acessar o projeto com mais de um computador...
OLà FEDERHEN, VOCÊ PODERIA MIM AJUDAR COM ESSA LÓGICA.
OBRIGADO PELA AJUDA
OBRIGADO PELA AJUDA
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???
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???
Tópico encerrado , respostas não são mais permitidas