Usuário com melhor resposta
Visualização de calendário

Pergunta
-
Estou com problemas para visualizar uma calendário dentro de um sistema VB que roda no windows vista.
Os campos do calendário aparecem cinza sem mostrar os numeros.
O caldendário usa uma biblioteca chamada mscal.ocx que ja foi registrada corretamente, porém mesmo assim o calendário nao é exibido.
Respostas
-
Olá crisfralves, abaixo segue um tutorial que lhe explica de como você contornar erros e problemas em uma VB:
B - Problemas , problemas , problemas...
O VB é uma linguagem fácil de aprender e usar. Basta você se dedicar e em algumas horas pode estar já criando o seu primeiro programa. Com mais algum tempo você já estará apto a mandar imprimir o seu cartão com a inscrição - Programador Visual Basic e sair por ai oferecendo os seus serviços...
Mas , como nem tudo é um mar de rosas , mais cedo ou mais tarde você vai começar a se deparar com as mazelas da linguagem Visual Basic ; os problemas irão surgir quando você menos espera ; aquele programa que parecia tão fácil de criar e distribuir e que você prometeu entregar em um semana , o esta deixando maluco...(por isto nunca prometa algo que você não esta apto a cumprir...)
Erros de runtime ; erros inesperados e não documentado ; você instala e testa na sua máquina e tudo funciona , no cliente a história é outra : o sistema trava ou se recusa a funcionar . Problemas com o código , problemas com o Crystal Reports , problemas com os controels OCX , problemas com as DLL´s ; roda no Win98 mas não roda no Windows 2000 ou vice e versa...
Você já ouviu falar no termo : DLL Hell´s ( o inferno das DLL´s) ? O Sistema Windows é uma sopa de DLL´s que precisam estar corretamente registradas para funcionar ; Invariavelmente estas DLL´s são atualizadas : as vezes esta atualização acontece sem mesmo você se dar conta : aquele programa inocente que você baixou da internet e que instalou para ver como funciona , silenciosamente atualizou aquele OCX que o seu programa usava , mas a atualização não foi completa ; conclusão seu sistema vai começar a apresentar problemas...
Neste artigo eu não pretendo dar uma receita mágica que vai resolver estes problemas , quero apenas mostrar algumas saidas que podem , dependendo do seu caso , ajudá-lo a sair bem desta história... Vamos aos 'causos':
1 - Você desenvolveu um sistema no VB , testou e compilou ; gerou a instalação ; foi no cliente e instalou. Na hora de rodar o danado , você não consegue. O programa simplesmente se recusa a rodar dando a fatídica mensagem "Unexpected error" . O que você deve fazer ?
Basicamente temos 3 coisas a fazer :
- Primeiro tente reinstalar o programa talvez algum controle não foi atualizado , preste atenção as mensagens durante a instalação
- Instale a última versão dos arquivos de runtime para o VB5 ou VB6 , assim você vai obter as DLL´s OLE atualizadas.
- Instale e registre as últimas versões dos controles comuns - Common Controls.
Vamos ver como atingir nosso objetivo:
Para rodar programas escritos no VB o computador precisa ter :
- as DLLs de runtime: msvbvm50.dll (VB5) e msvbvm60.dll (VB6)
- Um conjunto compatível de DLLs OLE - (OLEAUT32.DLL , e outras...)
- As versões corretas dos controles OCX usados no programa.
Vejamos como podemos chegar a este ponto:
- Se o programa não roda de jeito nenhum talvez os arquivos de runtime estejam ausentes , quem sabe se você os instalar o problema desapareça , abaixo eu listo algums links onde você pode encontrar os arquivos msvbvm50.dll ( VB5 ) , msvbvm60.dll ( VB6 ) e o conjunto das DLLs OLE :
- Os arquivos você pode baixar a partir de
- Pegue o MSVBVM50.EXE para o VB5 no site da Microsoft veja o artigo Q180071 FILE: Msvbvm50.exe Installs Visual Basic 5.0 Run-Time Files
- Pegue o arquivo VBRun60sp4.EXE para o VB6 também do site da Microsoft ; veja o artigo: Q235420 FILE: VBRun60sp4.exe Installs Visual Basic 6.0 SP4 Run-Time Files.
Nota: Você pode fazer o download dos arquivos e DLL também a partir de : http://www.simtel.net/vbrun.php.
- Muitos programas precisam do arquivo - Common Controls : Comctl32.ocx e Comdlg32.ocx. Verifique se eles estão presentes na pasta \Windows\System ou \Winnt\System32 ; Se eles não estiver presentes . Veja abaixo uma tabela relacionando os controles e suas versões com os links para download:
Controles fornecidos com Common controls UpDown & Animation Coolbar Common dialogs comctl32.ocx comct232.ocx comct332.ocx comdlg32.ocx VB5 no service pack Data 16/01/1997 16/01/97 Não fornecido 16/01/97 Versão 5.00.3714 5.00.3714 5.00.3714 TypeLib V 1.1 V 1.0 V 1.1 VB5 Control Creation Edition
DownloadData 28/02/1997 Não fornecido Não fornecido 27/02/1997 Versão 5.00.3828 5.00.3714 TypeLib V 1.2 V 1.1 VB5 SP3
DownloadData 19/07/1997 19/07/1997 29/07/1997 19/07/1997 Versão 5.01.4319 5.01.4319 5.01.4329 5.01.4319 TypeLib V 1.2 V 1.0 V 1.0 V 1.1 VB6
DownloadData 23/06/1998 23/06/1998 23/06/1998 23/06/1998 Versão 6.00.8022 6.00.8022 6.00.8169 6.00.8169 TypeLib V 1.3 V 1.1 V 1.1 V 1.2 VB6 SP5 Data 22/05/2000 24/06/1998 06/12/2000 22/05/2000 Versão 6.00.8105 6.00.8022 6.07.8988 6.00.8418 TypeLib V 1.3 V 1.1 V 1.1 V 1.2 Para registrar/cancelar registro de uma OCX faça o seguinte :
I- Registrar uma OCX : digite a seguinte linha de comando no prompt : regsvr32 controle.ocx
II- Para cancelar o registro : digite a seguinte linha de comando no prompt : regsvr32 -u controle.ocx
- Uma das causas mais prováveis para as mensagens de erro : "Unexpected error" ou "Error 50003" é que uma versão incorreta de um controle comum esta registrada.
Quer um exemplo ? Existem pelo menos quatro versões do controle comctl32.ocx e dusa versões dos controles : comdlg32.ocx , comct232.ocx e comct332.ocx. Todas as versões para cada componente possui o mesmo GUID (um número de identificação do controle no sistema) mas eles não são compatíveis. ( aqui a Microsoft pisou na bola ...
)
Sabe o que isto acarreta ? Um programa no VB irá funcionar com um conjunto de controles com versão anterior se ele foi compilado com estas versões . Se você instalar as novas versões e qualquer um dos controles permanecer na versão anterior , o programa não vai rodar se você compilá-lo após esta atualização parcial.
Faça o download do controle (veja a tabela acima com os links) mas preste atenção nos procedimentos :
- Descompacte os arquivos em um local separado
- Não sobreponha as versões antigas dos controles diretamente
- Cancele o registro dos controles antigos e mova-os para uma pasta temporária
- Copie os novos controles para a pasta do sistema e registre-os.
Nota :
- - Os arquivos OCX podem ser colocados em qualquer pasta , embora a pasta padrão seja (\windows\system) e existirem diferentes versões do mesmo controle em pastas diferentes somente a mais recente versão registrada estará disponível.
- - No Windows NT se você mover uma OCX o registro do Windows será atualizado para refletir a nova localização. Se o arquivo for excluido o registro irá apontar para a lixeira
- - O VB6 possui um novo controle comum chamado MSCOMCTL.OCX . Mas ele geralmente não causa problemas pois possui um GUID diferente.
- Se até agora nada deu certo talvez você tenha que reparar as DLLS OLE. Que tal checar as versões das DLLs OLE ? Você pode comparar as versões no artigo da Microsoft :
- Se o registro do Windows do computador estiver 'sujo' talvez limpá-lo resolva o problema. Para fazer isto você pode usar o programa RegClean que vem com o windows ou usar um programa como o COMclean que faz a mesma coisa.( com a vantagem de ter sido escrito em VB)
Fonte: http://www.macoratti.net/vb_pau.htm
Esperamos ter lhe ajudado. Mais dúvidas, lhe ajudaremos em que pudermos.
Obrigado por sua atenção e paciência.
Atenciosamente,
_____________________________________________
Abraão Marques - Microsoft Student to Business em Infra-estrutura de T.I / Microsoft Community Contributor, Moderador
- Sugerido como Resposta Abraão Marques sexta-feira, 30 de setembro de 2011 18:04
- Marcado como Resposta Richard Juhasz segunda-feira, 3 de outubro de 2011 15:34
Todas as Respostas
-
Crisfralves,
Pode ser problema com a versão do Windows, tente executar este arquivo em modo de compatibilidade.
Executar o Assistente de Compatibilidade de Programa
-
Para abrir o Assistente de Compatibilidade de Programa, clique no botão Iniciar
, em Painel de Controle, em Programas e, depois, em Usar um programa mais antigo com esta versão do Windows.
-
Siga as instruções do assistente.
Se não conseguir instalar um programa, insira o disco de instalação do programa e, usando o assistente, vá para o arquivo de instalação do programa, normalmente chamado de Setup.exe, Install.exe ou algo semelhante. O assistente não foi projetado para trabalhar em programas que possuem extensão de nome de arquivo .msi.
Para alterar manualmente as configurações de compatibilidade de um programa, clique com o botão direito do mouse no ícone do programa, clique em Propriedades e, em seguida, clique na guia Compatibilidade.
Selecione o sistema operacional Windows XP.
Abaixo segue referência.
http://windows.microsoft.com/pt-BR/windows-vista/Make-older-programs-run-in-this-version-of-Windows
Faça um teste e post o resultado.
Abraços,
Leonardo Côco .:. MCP / MCDST / MCTS / MCSA / ITILF .:. Se a resposta foi útil classifique-a.- Sugerido como Resposta Abraão Marques quinta-feira, 29 de setembro de 2011 19:30
- Não Sugerido como Resposta Abraão Marques sexta-feira, 30 de setembro de 2011 17:54
-
-
-
Olá crisfralves, abaixo segue um tutorial que lhe explica de como você contornar erros e problemas em uma VB:
B - Problemas , problemas , problemas...
O VB é uma linguagem fácil de aprender e usar. Basta você se dedicar e em algumas horas pode estar já criando o seu primeiro programa. Com mais algum tempo você já estará apto a mandar imprimir o seu cartão com a inscrição - Programador Visual Basic e sair por ai oferecendo os seus serviços...
Mas , como nem tudo é um mar de rosas , mais cedo ou mais tarde você vai começar a se deparar com as mazelas da linguagem Visual Basic ; os problemas irão surgir quando você menos espera ; aquele programa que parecia tão fácil de criar e distribuir e que você prometeu entregar em um semana , o esta deixando maluco...(por isto nunca prometa algo que você não esta apto a cumprir...)
Erros de runtime ; erros inesperados e não documentado ; você instala e testa na sua máquina e tudo funciona , no cliente a história é outra : o sistema trava ou se recusa a funcionar . Problemas com o código , problemas com o Crystal Reports , problemas com os controels OCX , problemas com as DLL´s ; roda no Win98 mas não roda no Windows 2000 ou vice e versa...
Você já ouviu falar no termo : DLL Hell´s ( o inferno das DLL´s) ? O Sistema Windows é uma sopa de DLL´s que precisam estar corretamente registradas para funcionar ; Invariavelmente estas DLL´s são atualizadas : as vezes esta atualização acontece sem mesmo você se dar conta : aquele programa inocente que você baixou da internet e que instalou para ver como funciona , silenciosamente atualizou aquele OCX que o seu programa usava , mas a atualização não foi completa ; conclusão seu sistema vai começar a apresentar problemas...
Neste artigo eu não pretendo dar uma receita mágica que vai resolver estes problemas , quero apenas mostrar algumas saidas que podem , dependendo do seu caso , ajudá-lo a sair bem desta história... Vamos aos 'causos':
1 - Você desenvolveu um sistema no VB , testou e compilou ; gerou a instalação ; foi no cliente e instalou. Na hora de rodar o danado , você não consegue. O programa simplesmente se recusa a rodar dando a fatídica mensagem "Unexpected error" . O que você deve fazer ?
Basicamente temos 3 coisas a fazer :
- Primeiro tente reinstalar o programa talvez algum controle não foi atualizado , preste atenção as mensagens durante a instalação
- Instale a última versão dos arquivos de runtime para o VB5 ou VB6 , assim você vai obter as DLL´s OLE atualizadas.
- Instale e registre as últimas versões dos controles comuns - Common Controls.
Vamos ver como atingir nosso objetivo:
Para rodar programas escritos no VB o computador precisa ter :
- as DLLs de runtime: msvbvm50.dll (VB5) e msvbvm60.dll (VB6)
- Um conjunto compatível de DLLs OLE - (OLEAUT32.DLL , e outras...)
- As versões corretas dos controles OCX usados no programa.
Vejamos como podemos chegar a este ponto:
- Se o programa não roda de jeito nenhum talvez os arquivos de runtime estejam ausentes , quem sabe se você os instalar o problema desapareça , abaixo eu listo algums links onde você pode encontrar os arquivos msvbvm50.dll ( VB5 ) , msvbvm60.dll ( VB6 ) e o conjunto das DLLs OLE :
- Os arquivos você pode baixar a partir de
- Pegue o MSVBVM50.EXE para o VB5 no site da Microsoft veja o artigo Q180071 FILE: Msvbvm50.exe Installs Visual Basic 5.0 Run-Time Files
- Pegue o arquivo VBRun60sp4.EXE para o VB6 também do site da Microsoft ; veja o artigo: Q235420 FILE: VBRun60sp4.exe Installs Visual Basic 6.0 SP4 Run-Time Files.
Nota: Você pode fazer o download dos arquivos e DLL também a partir de : http://www.simtel.net/vbrun.php.
- Muitos programas precisam do arquivo - Common Controls : Comctl32.ocx e Comdlg32.ocx. Verifique se eles estão presentes na pasta \Windows\System ou \Winnt\System32 ; Se eles não estiver presentes . Veja abaixo uma tabela relacionando os controles e suas versões com os links para download:
Controles fornecidos com Common controls UpDown & Animation Coolbar Common dialogs comctl32.ocx comct232.ocx comct332.ocx comdlg32.ocx VB5 no service pack Data 16/01/1997 16/01/97 Não fornecido 16/01/97 Versão 5.00.3714 5.00.3714 5.00.3714 TypeLib V 1.1 V 1.0 V 1.1 VB5 Control Creation Edition
DownloadData 28/02/1997 Não fornecido Não fornecido 27/02/1997 Versão 5.00.3828 5.00.3714 TypeLib V 1.2 V 1.1 VB5 SP3
DownloadData 19/07/1997 19/07/1997 29/07/1997 19/07/1997 Versão 5.01.4319 5.01.4319 5.01.4329 5.01.4319 TypeLib V 1.2 V 1.0 V 1.0 V 1.1 VB6
DownloadData 23/06/1998 23/06/1998 23/06/1998 23/06/1998 Versão 6.00.8022 6.00.8022 6.00.8169 6.00.8169 TypeLib V 1.3 V 1.1 V 1.1 V 1.2 VB6 SP5 Data 22/05/2000 24/06/1998 06/12/2000 22/05/2000 Versão 6.00.8105 6.00.8022 6.07.8988 6.00.8418 TypeLib V 1.3 V 1.1 V 1.1 V 1.2 Para registrar/cancelar registro de uma OCX faça o seguinte :
I- Registrar uma OCX : digite a seguinte linha de comando no prompt : regsvr32 controle.ocx
II- Para cancelar o registro : digite a seguinte linha de comando no prompt : regsvr32 -u controle.ocx
- Uma das causas mais prováveis para as mensagens de erro : "Unexpected error" ou "Error 50003" é que uma versão incorreta de um controle comum esta registrada.
Quer um exemplo ? Existem pelo menos quatro versões do controle comctl32.ocx e dusa versões dos controles : comdlg32.ocx , comct232.ocx e comct332.ocx. Todas as versões para cada componente possui o mesmo GUID (um número de identificação do controle no sistema) mas eles não são compatíveis. ( aqui a Microsoft pisou na bola ...
)
Sabe o que isto acarreta ? Um programa no VB irá funcionar com um conjunto de controles com versão anterior se ele foi compilado com estas versões . Se você instalar as novas versões e qualquer um dos controles permanecer na versão anterior , o programa não vai rodar se você compilá-lo após esta atualização parcial.
Faça o download do controle (veja a tabela acima com os links) mas preste atenção nos procedimentos :
- Descompacte os arquivos em um local separado
- Não sobreponha as versões antigas dos controles diretamente
- Cancele o registro dos controles antigos e mova-os para uma pasta temporária
- Copie os novos controles para a pasta do sistema e registre-os.
Nota :
- - Os arquivos OCX podem ser colocados em qualquer pasta , embora a pasta padrão seja (\windows\system) e existirem diferentes versões do mesmo controle em pastas diferentes somente a mais recente versão registrada estará disponível.
- - No Windows NT se você mover uma OCX o registro do Windows será atualizado para refletir a nova localização. Se o arquivo for excluido o registro irá apontar para a lixeira
- - O VB6 possui um novo controle comum chamado MSCOMCTL.OCX . Mas ele geralmente não causa problemas pois possui um GUID diferente.
- Se até agora nada deu certo talvez você tenha que reparar as DLLS OLE. Que tal checar as versões das DLLs OLE ? Você pode comparar as versões no artigo da Microsoft :
- Se o registro do Windows do computador estiver 'sujo' talvez limpá-lo resolva o problema. Para fazer isto você pode usar o programa RegClean que vem com o windows ou usar um programa como o COMclean que faz a mesma coisa.( com a vantagem de ter sido escrito em VB)
Fonte: http://www.macoratti.net/vb_pau.htm
Esperamos ter lhe ajudado. Mais dúvidas, lhe ajudaremos em que pudermos.
Obrigado por sua atenção e paciência.
Atenciosamente,
_____________________________________________
Abraão Marques - Microsoft Student to Business em Infra-estrutura de T.I / Microsoft Community Contributor, Moderador
- Sugerido como Resposta Abraão Marques sexta-feira, 30 de setembro de 2011 18:04
- Marcado como Resposta Richard Juhasz segunda-feira, 3 de outubro de 2011 15:34