Modernize Studio
Idioma: Português
Escreva-nos

Aplicações Visual Basic 6, migradas para a web

Em muitas empresas, programas em Visual Basic 6 continuam a gerir encomendas, produção, marcações e contas, mais de vinte e cinco anos depois da última versão. Migramo-los para aplicações web escritas em C#, mantendo os dados e as regras de negócio, com ou sem o código-fonte original.

Porquê agora

A Microsoft deixou de suportar o ambiente de desenvolvimento Visual Basic 6 a 08/04/2008. O runtime continua incluído no Windows e é suportado durante a vida das versões do Windows que o incluem, entre elas o Windows 11, mas apenas como componente de 32 bits e apenas para regressões graves e problemas de segurança críticos. Os controlos que não fazem parte do Windows, como MSCOMCTL.OCX, MSFLXGRD.OCX e quase todos os OCX de terceiros, têm de ser instalados com a aplicação e não são cobertos pela Microsoft.

Na prática, a dificuldade está nas pessoas e nas ferramentas. A Microsoft não suporta o IDE no Windows de 64 bits, há cada ano menos programadores que conhecem VB6, e cada computador substituído é mais uma instalação com componentes registados à mão.

  1. Ambiente de desenvolvimento Visual Basic 6Fim do suporte da Microsoft
  2. Windows 10Fim do suporte da Microsoft

O que migramos

O programa inteiro, incluindo aquilo de que depende fora do seu próprio código.

  • Formulários e controlos

    Janelas com caixas de texto, caixas de combinação, grelhas, separadores e matrizes de controlos, incluindo MSFlexGrid, ListView e TreeView. Passam a páginas web que mantêm a disposição a que as pessoas estão habituadas.

  • Lógica em módulos e classes

    Cálculos, validações e procedimentos espalhados por ficheiros .bas e .cls e por eventos dos formulários. Passamo-los para serviços no servidor cobertos por testes.

  • Acesso a dados

    Código DAO, RDO e ADO que trabalha com Access, SQL Server, Oracle ou outras bases de dados, incluindo SQL construído juntando texto. Os dados passam para SQL Server ou MySQL, ou ficam onde estão quando outros sistemas dependem deles.

  • Relatórios e impressão

    Crystal Reports, DataReport e impressões desenhadas linha a linha com o objeto Printer. Cada uma passa a um documento PDF com o mesmo conteúdo.

  • Componentes COM e DLL

    DLL ActiveX desenvolvidas internamente, componentes de terceiros e chamadas à API do Windows feitas com Declare. Identificamos cada uma e decidimos se é substituída, reescrita ou se já não é necessária.

  • Ficheiros, definições e equipamentos

    Configuração em ficheiros INI ou no registo, importações de ficheiros de texto e ligações a balanças, impressoras de etiquetas ou equipamentos série através do MSComm. Verificamos quais destes ainda precisam de algo instalado localmente.

Como fica a versão web

Exemplo ilustrativo, dados fictícios

Uma agenda de marcações como poderia ser num programa VB6 no computador da receção, e a mesma semana no browser.

Arraste o manípulo ou use as setas do teclado.

Para onde vai cada parte

Em VB6: Formulários (.frm) e respetivos eventos
Na aplicação web: Páginas web, com a lógica no servidor
Em VB6: Módulos (.bas) e classes (.cls)
Na aplicação web: Serviços em C# cobertos por testes automáticos
Em VB6: Controlos OCX registados em cada computador
Na aplicação web: Componentes web normais, sem nada para instalar
Em VB6: Recordsets ADO ou DAO
Na aplicação web: Consultas parametrizadas sobre SQL Server ou MySQL
Em VB6: Crystal Reports ou DataReport
Na aplicação web: Documentos PDF gerados pelo servidor
Em VB6: Um pacote de instalação para cada posto
Na aplicação web: Um único endereço, aberto no browser

Como decorre a migração

  1. Análise em 48 horas

    Envia-nos o programa instalado e a respetiva base de dados, mais o código-fonte (.vbp, .frm, .bas, .cls) se o tiver. Em 48 horas respondemos com um relatório escrito: o que o programa faz hoje, onde estão os riscos, como se organizaria a versão web, um preço fixo para um módulo-piloto e uma estimativa para o resto. É gratuito e não o compromete a nada.

  2. Módulo-piloto

    Construímos uma parte da aplicação sobre uma cópia dos seus dados reais, normalmente a parte mais usada. Os seus colaboradores trabalham com ela no dia a dia antes de decidir o resto.

  3. Os mesmos dados, os mesmos resultados

    Registamos o que o programa VB6 produz para um conjunto de casos reais, como preços, totais e documentos gerados, e verificamos a nova aplicação face a esses resultados. Cada regra de negócio que encontramos passa também a um teste automático, repetido antes de cada nova versão. Recebe um relatório com o resultado de cada verificação.

  4. 30 dias em paralelo

    Quando a aplicação completa estiver pronta, o programa VB6 continua em uso ao lado dela durante 30 dias. Qualquer diferença aparece enquanto o programa antigo ainda lá está, e corrigimo-la dentro do preço acordado.

Armadilhas típicas, e como as tratamos

  1. Dependências OCX e ActiveX

    Muitos programas VB6 dependem de controlos que não vêm com o Windows, alguns de fornecedores que já não existem, e a Microsoft classifica ficheiros como GRID32.OCX e THREED32.OCX como não suportados. A análise lista cada dependência, o que faz no programa e o que a substitui.

  2. Variant, propriedades predefinidas e conversões silenciosas

    O VB6 converte sem avisar entre texto, números e datas, e uma linha como Text1 = rs!Total depende de propriedades predefinidas. Uma tradução literal para C# ou VB.NET comporta-se de outra forma nos casos-limite, por exemplo com campos vazios ou datas noutro formato regional. Reescrevemos estes pontos de forma deliberada e cobrimo-los com testes.

  3. On Error Resume Next

    Frequente no código VB6, esconde as falhas e deixa o programa continuar com dados gravados pela metade. Onde o encontramos, apuramos o que o autor queria evitar e tratamos esse caso explicitamente. Caso contrário, a nova aplicação ou pararia com um erro ou repetiria os mesmos erros silenciosos.

  4. Integer de 16 bits e arredondamentos

    Um Integer em VB6 vai só até 32 767, o que está na origem de muitos erros de overflow quando uma tabela cresce. O Currency guarda quatro casas decimais e o Round usa o arredondamento bancário. Reproduzimos o arredondamento que o negócio espera e assinalamos onde o programa antigo errava.

  5. SQL construído juntando texto

    As consultas montadas com & a partir do que o utilizador escreveu ficam expostas a SQL injection e falham com nomes que tenham apóstrofo. Na nova aplicação, todas as consultas usam parâmetros.

  6. Código-fonte em falta ou desatualizado

    Por vezes o código-fonte perdeu-se, ou a cópia guardada não corresponde ao programa em uso. Um programa VB6 compilado não pode ser convertido de volta em código-fonte fiável, por isso partimos do programa em funcionamento, da base de dados e dos ecrãs, e a análise indica que partes têm maior incerteza.

Preço e pagamento

Análise

Gratuita

por escrito, em 48 horas

Módulo-piloto

1000–1500 €

normalmente; 50% no início, 50% na aceitação

Condições de pagamento

Pedimos 50% no arranque e 50% na aceitação. A segunda metade é paga antes da entrada em produção e da entrega do código-fonte. Nos projetos maiores, os pagamentos acompanham as fases acordadas.

A análise é gratuita. Se decidir não avançar, fica com o relatório e não deve nada.

Os preços são fixos e acordados por escrito antes de começarmos. Se o trabalho mudar, enviamos um novo orçamento escrito e só avançamos com a sua aprovação.

Numa migração completa, o nosso objetivo é ficar 40 a 60% abaixo do orçamento habitual de uma agência. É possível porque somos um estúdio pequeno, sem escritórios para pagar nem equipa comercial.

Preços sem IVA.

Estimar o preço

Uma migração real, verificada por testes

A Northwind é a base de dados de exemplo que a Microsoft distribuía com o Access, não um cliente nosso. Migrámos uma cópia pública para SQLite e PostgreSQL, comparámos cada tabela e cada consulta com o original através de testes automáticos e construímos sobre o resultado uma aplicação web funcional. O caso de estudo apresenta os números, e o relatório de equivalência enumera cada verificação.

A Northwind é uma base de dados Access, mas para Visual Basic 6 seguimos o mesmo método: migrar, comparar os resultados com os do original sobre os mesmos dados e manter os dois programas em paralelo.

Relatório de equivalência (em inglês) · Pré-visualização clicável e análise de exemplo (demonstração)

Perguntas frequentes

Não temos o código-fonte. Conseguem migrar o programa na mesma?

Muitas vezes, sim. Partimos do programa em uso, da base de dados e de capturas de ecrã ou gravações da forma como as pessoas o usam. A análise indica que partes conseguimos reproduzir com segurança e quais precisam de informação sua.

Porque não converter o código automaticamente para VB.NET ou C#?

As ferramentas de conversão produzem código que compila, mas que mantém a estrutura de secretária, depende muitas vezes de bibliotecas de compatibilidade e arrasta os problemas antigos. Para uma aplicação web reconstruímos os ecrãs e migramos a lógica, usando o código VB6 como especificação do que o programa faz.

O nosso programa VB6 vai deixar de funcionar no Windows 11?

Por si só, não: a Microsoft suporta o runtime do VB6 no Windows 11. O que costuma falhar é tudo o que está à volta, como ficheiros OCX não registados, pacotes de instalação perdidos, drivers de bases de dados antigos e o IDE, que a Microsoft não suporta no Windows de 64 bits.

O nosso programa comunica com uma balança ou uma impressora de etiquetas. Uma aplicação web consegue fazer isso?

Normalmente, sim, mas é a única parte que pode exigir um pequeno programa instalado no computador ligado ao equipamento. Verificamos isto durante a análise e incluímo-lo no preço.

Podemos migrar uma parte de cada vez?

Sim. O módulo-piloto é a primeira parte, e o resto pode seguir por fases. Sempre que possível, o programa VB6 e a aplicação web partilham a mesma base de dados durante a transição.

Em que linguagem será escrita a nova aplicação?

Normalmente em C# com ASP.NET Core, que qualquer programador .NET consegue manter. PHP com MySQL é uma opção, se for com isso que o seu fornecedor de informática trabalha.

Contacto

Escolha o canal que mais lhe convier. Respondemos por e‑mail, em português, no prazo de um dia útil.

Por e‑mail

riccardo@modernizestudio.com
Escrever um e‑mail

Envie-nos o programa e a respetiva base de dados, com dados de teste se preferir, ou uma breve descrição do que faz. Respondemos no prazo de um dia útil.

Envie-nos o seu ficheiro

Se o programa for em Access, Excel, VB6, Delphi ou numa versão antiga de .NET, recebe uma análise escrita gratuita no prazo de 48 horas após o envio do ficheiro.

  1. Faça uma cópia do ficheiro, se preferir com dados de teste.
  2. Anexe-a ao formulário ou a um e‑mail, de preferência num arquivo protegido por palavra-passe, enviando a palavra-passe à parte. Se o pedir, assinamos antes um acordo de confidencialidade.
  3. Em 48 horas: a análise e um preço fixo para um módulo piloto.

Trabalhamos a partir de Itália.

Enviar uma mensagem

Opcional. Uma base de dados, um livro do Excel, capturas de ecrã ou um caderno de encargos, até 10 MB. Para ficheiros maiores, indique na mensagem uma ligação para os descarregar.

Escreva-nos

O botão abre o seu programa de e‑mail com a mensagem já preparada. Nada é enviado até carregar em «Enviar» nesse programa.

Escreva-nos