O Controlo de Calendário da Microsoft 10.0 e versões posteriores utilizam um valor incorreto para a propriedade FirstDay
Número original da BDC: 826761
Nota
Este artigo aplica-se a um ficheiro de base de dados do Microsoft Access (.mdb) ou a um ficheiro de base de dados do Microsoft Access (.accdb). Necessita de competências básicas de macro, programação e interoperabilidade.
Sintomas
No Microsoft Access, é apresentado um dia incorreto para o primeiro dia do Controlo de Calendário. Este problema ocorre quando insere um Controlo de Calendário da Microsoft 10.0 ou uma versão posterior num formulário ou num relatório e, em seguida, define a FirstDay
propriedade do Controlo de Calendário com constantes intrínsecas do Microsoft Visual Basic for Applications (VBA).
Por exemplo, defina a FirstDay
propriedade do Controlo de Calendário para vbMonday ou para vbTuesday. Quando define a FirstDay
propriedade do Controlo de Calendário como vbTuesday, o calendário utiliza quarta-feira como o primeiro dia da semana.
Nota
Quando utiliza as versões anteriores do Controlo de Calendário, pode definir a FirstDay
propriedade corretamente.
Causa
Este problema ocorre porque as constantes intrínsecas dos dias definidos no Microsoft Visual Basic, como vbSunday e vbMonday, não estão associadas ao valor diário correto.
Solução
Para contornar este problema, siga estes passos:
Determine a associação entre os dias, as constantes intrínsecas do VBA e os valores numéricos associados aos valores diários corretos e às constantes intrínsecas do VBA. Para tal, siga estes passos:
Inicie o Access.
Abra a base de dados de exemplo da Northwind.
Na janela Base de Dados, clique em Formulários em Objetos.
Nota
No Access 2007, clique no separador Criar e, em seguida, clique em Estrutura do Formulário no grupo Formulários .
No painel direito, faça duplo clique em Criar formulário na vista Estrutura.
Nota
No Access 2007, ignore este passo.
No menu Inserir , clique em Controlo ActiveX.
Nota
No Access 2007, clique no separador Estrutura e, em seguida, clique em Inserir Controlo ActiveX no grupo Controlos .
Na caixa de diálogo Inserir Controlo ActiveX , clique para selecionar Controlo de Calendário 10.0 ou uma versão posterior na caixa de listagem Selecionar um Controlo ActiveX e, em seguida, clique em OK.
Adicione um botão de comando ao formulário que tem as propriedades definidas da seguinte forma:
Propriedade Valor Name
testFD Caption
Alterar Primeiro Dia No menu Ficheiro , clique em Guardar.
Nota
No Access 2007, clique no Botão do Microsoft Office e, em seguida, clique em Guardar.
Na caixa de diálogo Guardar Como , escreva Formulário1 na caixa Nome do Formulário e, em seguida, clique em OK para guardar o formulário Form1.
No menu Ver , clique em Código.
Nota
No Access 2007, clique no separador Estrutura e, em seguida, clique em Ver Código no grupo Ferramentas .
No visual basic Revisor, escreva ou cole o seguinte código:
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End Sub
Abra o Formulário1 na vista Formulário.
Clique no botão Alterar Primeiro Dia .
Nota
Se a primeira coluna do Controlo de Calendário não estiver definida como Terça-feira, tenha em atenção o dia na primeira coluna.
No visual basic Revisor, clique em Janela Imediata no menu Ver.
Na janela Imediato, escreva ?vbTuesday e, em seguida, prima ENTER.
Repare no valor numérico.
Repita o passo j através do passo o ao substituir vbTuesday por outras constantes intrínsecas do VBA, como vbMondaye vbWednesday.
Tenha em atenção que terá a seguinte tabela para mostrar a associação entre os dias, as constantes intrínsecas do VBA e os valores numéricos associados aos valores diários corretos e constantes intrínsecas do VBA.
Dia da Semana Constante Intrínseca VBA Valor Numérico Associado Segunda-feira vbSunday 1 Terça-feira vbMonday 2 Quarta-feira vbTuesday 3 Quinta-feira vbWednesday 4 Sexta-feira vbThursday 5 Sábado vbFriday 6 Domingo vbSaturday 7
Crie uma enumeração personalizada global mapeada corretamente para os dias da semana. Para tal, siga estes passos:
Na janela Base de Dados, clique em Módulo em Objetos.
Nota
No Access 2007, clique no separador Criar , clique na seta em Macro no grupo Outro e, em seguida, clique em Módulo.
No menu Inserir, clique em Módulo.
Nota
No Access 2007, ignore este passo.
Escreva ou cole o seguinte código no visual basic Revisor:
Option Explicit Public Enum nwFirstDay nwMonday = 1 nwTuesday = 2 nwWednesday = 3 nwThursday = 4 nwFriday = 5 nwSaturday = 6 nwSunday = 7 End Enum
Nota
Crie a enumeração conforme descrito na coluna "Dia da Semana" e na coluna "Valor Numérico Associado" correspondente da tabela que está no passo 1r.
Dê o nome Day_Association Módulo e guarde-o.
Feche o visual basic Revisor.
Substitua as constantes intrínsecas do VBA na sua aplicação pelas constantes que estão na enumeração personalizada descrita no passo 2.
Por exemplo, se o código original for
Calendar0.FirstDay = vbTuesday
modifique o código para utilizar a enumeração personalizada da seguinte forma:
Calendar0.FirstDay = nwTuesday
Execute a aplicação.
Mais Informações
As constantes intrínsecas do VBA não dependem das informações locais do sistema. Por exemplo, num computador que tenha o sistema operativo localizado no idioma alemão, o primeiro dia da semana é segunda-feira. O valor numérico associado à segunda-feira no computador é sempre 0.
Uma vez que o Controlo de Calendário 10.0 ou uma versão posterior é um controlo global do Microsoft ActiveX, não pode controlar os valores numéricos associados às constantes intrínsecas do VBA com base nas especificações do seu computador. Por conseguinte, ocorre o problema mencionado na secção "Sintomas" deste artigo.
Passos para reproduzir o problema
Inicie o Access.
Abra a base de dados de exemplo da Northwind.
Na janela Base de Dados, clique em Formulários em Objetos.
Nota
No Access 2007, clique no separador Criar e, em seguida, clique em Estrutura do Formulário no grupo Formulários .
No painel direito, faça duplo clique em Criar formulário na vista Estrutura.
Nota
No Access 2007, ignore este passo.
No menu Inserir , clique em Controlo ActiveX.
Nota
No Access 2007, clique no separador Estrutura e, em seguida, clique em Inserir Controlo ActiveX no grupo Controlos .
Na caixa de diálogo Inserir Controlo ActiveX , clique para selecionar Controlo de Calendário 10.0 ou uma versão posterior na caixa de listagem Selecionar um Controlo ActiveX e, em seguida, clique em OK.
Adicione um botão de comando ao formulário que tem as propriedades definidas da seguinte forma:
Propriedade Valor Name
testFD Caption
Alterar Primeiro Dia No menu Ver , clique em Código.
Nota
No Access 2007, clique no separador Estrutura e, em seguida, clique em Ver Código no grupo Ferramentas .
No visual basic Revisor, escreva ou cole o seguinte código:
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End Sub
No menu Ficheiro , clique em Guardar.
Nota
No Access 2007, clique no Botão do Microsoft Office e, em seguida, clique em Guardar Como.
Na caixa de diálogo Guardar Como , escreva Formulário1 na caixa Nome do Formulário e, em seguida, clique em OK para guardar o formulário Form1.
Abra o Formulário1 na vista Formulário.
Clique no botão Alterar Primeiro Dia .
Apesar de definir a
FirstDay
propriedade do Controlo de Calendário como vbTuesday, o calendário seleciona Quarta-feira para ser o primeiro dia da semana.
Referências
Para obter mais informações sobre o Controlo de Calendário e as propriedades do Controlo de Calendário, abra Mscal.hlp e, em seguida, procure o tópico adequado. Mscal.hlp está localizado nas seguintes pastas:
Microsoft Access 2002
Unidade de Instalação: \Program Files\Microsoft Office\Office10
Microsoft Office Access 2003
Unidade de Instalação: \Program Files\Microsoft Office\Office11
Nota
A Unidade de Instalação é um marcador de posição para o nome da unidade de instalação.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários