GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Melhorar código
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
-star Rating Vote!  Login/Cadastrar 
Analista Sênior

postado
Ola,
Fiz este codigo para mostrar os compromissos na barra de status ao usuario (chamo ele no timer do menu), mas nao estou gostando do jeito que está, pois, a base é aberta a cada segundo, poderiam dar uma dica de como melhora-lo?
Grato
Luciano
Access2k/xp
'/// v_id variavel global as integer
Function avisa_compromisso()
    Set tbl1 = CurrentDb.OpenRecordset("SELECT tbl_outros_compromisso.id, tbl_outros_compromisso.data_comp, tbl_outros_compromisso.hr_comp, tbl_outros_compromisso.desc_comp, tbl_outros_compromisso.exec_comp, tbl_outros_compromisso.avisa_comp, tbl_outros_compromisso.coraviso_comp " & _
                                       "FROM tbl_outros_compromisso " & _
                                       "WHERE (((tbl_outros_compromisso.data_comp)=#" & Format(Date, "mm/dd/yyyy") & "#) AND ((tbl_outros_compromisso.hr_comp)=#" & Format(Time(), "hh:mm") & " #) AND ((tbl_outros_compromisso.exec_comp)=False) AND ((tbl_outros_compromisso.avisa_comp)=True));")
    If tbl1.EOF = False Then
        If v_id <> tbl1!id Then
            v_id = tbl1!id
            Beep
            txtBarraStatus = SysCmd(acSysCmdClearStatus)
'            lngColor = tbl1!coraviso_comp
'            blRet = SetStatusBackGround(lngColor)
            txtBarraStatus = SysCmd(acSysCmdSetStatus, "Compromisso: " & Format(tbl1!data_comp, "dd/mm/yyyy") & " - " & Format(tbl1!hr_comp, "hh:mm") & " - " & tbl1!desc_comp)
        End If
    Else
        v_id = 0
        txtBarraStatus = SysCmd(acSysCmdClearStatus)
'        blRet = RestoreStatusBackground()
    End If
    tbl1.Close
    Set tbl1 = Nothing
    CurrentDb.Close
End Function

This message has been edited. Last edited by: Luciano,
 
Postagens: 1490 | Registrado: 31 January 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post

Sugestão
:
No primeiro evento timer carregue uma variavel global com a data do próximo compromisso. Com o IF determine a abertura da base naquele horário aproveitando para recarregar a variável global novamente.
Espero que lhe ajude.


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1592 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

postado Hide Post
Boa ideia, vou ver isto no fim de semana.
Luciano
 
Postagens: 1490 | Registrado: 31 January 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

postado Hide Post
Ola Renato,
Estava quase montando o esquema, qdo meu deu um estalo, nao posso fazer sua sugestao, pois, o usuario pode informar compromissos a qq momento, ai fiz assim:
Function avisa_compromisso()
    v_I = DCount("id", "tbl_outros_compromisso", "data_comp=#" & Format(Date, "mm/dd/yyyy") & "# And hr_comp=#" & Format(Time(), "hh:mm") & "# And exec_comp=False And avisa_comp=True")
    If v_I > 0 Then
        Set tbl1 = CurrentDb.OpenRecordset("SELECT tbl_outros_compromisso.id, tbl_outros_compromisso.data_comp, tbl_outros_compromisso.hr_comp, tbl_outros_compromisso.desc_comp, tbl_outros_compromisso.exec_comp, tbl_outros_compromisso.avisa_comp, tbl_outros_compromisso.coraviso_comp " & _
                                           "FROM tbl_outros_compromisso " & _
                                           "WHERE (((tbl_outros_compromisso.data_comp)=#" & Format(Date, "mm/dd/yyyy") & "#) AND ((tbl_outros_compromisso.hr_comp)=#" & Format(Time(), "hh:mm") & " #) AND ((tbl_outros_compromisso.exec_comp)=False) AND ((tbl_outros_compromisso.avisa_comp)=True));")
        If tbl1.EOF = False Then
            v_dthr_1 = Format(tbl1!hr_comp, "hh:mm")
            v_dthr_2 = TimeSerial(Hour(v_dthr_1), Minute(v_dthr_1) + 1, Second(v_dthr_1))
            If v_id <> tbl1!id Then
                v_id = tbl1!id
                txtBarraStatus = SysCmd(acSysCmdClearStatus)
                lngColor = tbl1!coraviso_comp
                blRet = SetStatusBackGround(lngColor)
                txtBarraStatus = SysCmd(acSysCmdSetStatus, "Compromisso: " & Format(tbl1!data_comp, "dd/mm/yyyy") & " - " & Format(tbl1!hr_comp, "hh:mm") & " - " & tbl1!desc_comp)
            End If
            tbl1.Close
            Set tbl1 = Nothing
            CurrentDb.Close
            v_II = 1
        End If
    End If

    If v_II = 1 And (Format(Time(), "hh:mm") >= v_dthr_2) Then
        v_id = 0
        v_II = 0
        txtBarraStatus = SysCmd(acSysCmdClearStatus)
        blRet = RestoreStatusBackground()
    End If
End Function

Ainda nao esta 100%, tem alguns acertos, mas ja ta funcionando.
Pelo menos a base nao é aberta toda hora.
Aceito sugestoes de melhora.
Luciano
 
Postagens: 1490 | Registrado: 31 January 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
 Tópico Anterior | Próximo Tópico Powered by Eve For Enterprise  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Melhorar código

©