Como é fácil para converter uma aplicação do Visual FoxPro 6 para Visual FoxPro 9?

StackOverflow https://stackoverflow.com/questions/2417817

  •  19-09-2019
  •  | 
  •  

Pergunta

Há algum problema de conversão de um aplicativo Visual FoxPro 6 para Visual FoxPro 9; ou isso é para a frente?

Qualquer armadilhas que eu deveria prestar atenção para fora durante o processo?

Foi útil?

Solução

sim ... dependendo de uma variedade de elementos em seu projeto. Eu atualmente têm aplicativos em ambas VFP9 SP1 e SP2 VFP9 (com HotFix3 para relatar)

Algumas questões para ajudar a executar sob VFP9 com formato mais antigo SQL consultas

SET MOTOR COMPORTAMENTO 70 Você provavelmente vai querer ficar com 70. algumas das melhorias em 8 e 9 vigor um truque maravilhoso que foi utilizado na consulta precoce no grupo preguiçoso por cláusulas ... único grupo pelas poucas colunas que se preocupava, especialmente quando se juntar a um lookup tabela que você sabia que têm sempre o mesmo valor de qualquer maneira. Em 8 e 9, ele requer que você para qualificar o grupo por, por todas as funções não-agregadas ... Nesse caso, você pode ter que basta alterar essas colunas "constante" para MAX (SomeField) como SomeField. O max nunca mudaria se o seu grupo foi baseada em uma chave de ID de qualquer maneira.

Outros problemas conhecidos a partir da consulta foi com SELECT SUM (). Se você fez uma consulta, e não houve registros de que combinavam com a consulta, a coluna SUM () iria voltar como NULL, e você terá um tipo de dados inesperado quando você estava esperando um número. Uma captura rápida foi adicionar sempre um COUNT (*) como ActualRecords que sempre retornam um número. Em seguida, você pode verificar se os "Result.ActualRecords = 0" fazer algo para notificar o usuário, abort relatório, seja qual for, continue contrário.

A comunicação é, obviamente, reforçada a partir de 6 e tem alguns bons recursos, especialmente mutiple regiões de relatórios tabela ligada sem ter que fazer "impressão quando" e sobreposição controles sob certas condições. Isso é ótimo para mesas de multi-relacionados que você quer em um relatório final.

ONE UPDATE na Grupo SQL SUM () por questão. Descobri que se você fizer um

SELECIONAR NVL (SUM (qualquer que seja), 0) como FinalColumn, se você se deparar com uma soma sem registros de qualificação, a NVL () terá que valor nulo e forçá-lo a zero e, assim, evitar problemas NULL subseqüentes .. . Da mesma forma, se aplica a coisas como MIN (), MAX (), AVG (), etc.

Esses são apenas alguns dos grandes aquele olhar para fora em mim ...

Outras dicas

Eu diria que é bastante indolor em geral. Como mencionado por Drapp você precisará rever quaisquer instruções SQL SELECT para pesar os prós e contras de que altera o GROUP BY cláusulas, ou se seria mais fácil de usar SET ENGINEBEHAVIOUR. A comunicação pode ser feita trabalho como VFP6 usando SET REPORTBEHAVIOUR.

Além disso VFP9 faz alguns testes estrutura de tabela quando você abre um DBF que VFP6 não. Como resultado, você pode achar que arquivos de abertura de DBF em VFP9 irá lançar um erro 2065 porque a contagem de registro de cabeçalho não é igual a contagem de registro real, enquanto eles trabalham muito bem na versão anterior. Este comportamento pode ser controlado com o comando SET TABLEVALIDATE.

Eu tenho lidado com um par de VFP 6 problemas de aplicativos da semana e eles têm sido frustrante que Parreira porque os problemas podem ser facilmente resolvidos com VFP 9 SP2.

Uma outra coisa que ter cuidado sobre é se seus dados são acessados ??pelo driver ODBC VFP 6. Se você usar qualquer do novo banco de dados de recursos implementados no VFP 7 a VFP 9 como eventos de banco de dados, ou os novos tipos de dados, como varchar seus dados serão convertidos para um formato que o driver ODBC não pode manipular. O novo driver VFP OLE DB é usado em vez disso, e algumas ferramentas não consegue lidar com a funcionalidade OLE DB.

Você vai encontrar a nova maneira relatório designer de mais poderoso, mas a GDI + utilizado para a prestação vai exigir alguns ajustes de tamanho de campo em relatórios para se livrar das estrelas de estouro. Você pode evitar isso usando o SET REPORTBEHAVIOR como notas de Alan, mas você realmente vai querer tirar vantagem da capacidade de relatório de pré-visualização.

Uma outra coisa que você pode se queimar é sobre os AFIELDS () comando cria mais elementos na matriz. Assim que você pode ter de ajustar algum código para lidar com as linhas adicionais na matriz criado.

Se você tiver qualquer problema, por favor poste aqui e vamos ajudá-lo.

Rick Schummer

Muitas boas respostas aqui já. Ter convertido um aplicativo vfp6 recentemente, eu diria que o processo foi relativamente indolor, especialmente para o benefício que vem de usar editor de VFP9, etc.

Um item não apontou ... Verifique todos os seus relatórios, e certifique-se a opção de relatório "Save ambiente da impressora" é desligada, a menos que a impressora listado lá é realmente o que você quer codificado em seus arquivos de relatório.

Eu tenho que correr em algumas questões atualizando nossa fonte de VFP9. A maioria deles, em vez menor, apesar de tudo.

A primeira coisa que você precisa fazer é rever o que há de novo documentação para VFP7, VFP8 e VFP9. Eu sei que isso parece ser uma dor, mas deve ser sua primeira parada ao atualizar um projeto. Documentação para VFP6 e até pode ser encontrada no MSDN .

Muitas novas propriedades e métodos foram adicionados ao classes. Se um desses conflitos com propriedades personalizadas / métodos, você vai correr em erros.

Além disso, você vai precisar para se tornar consciente de Vista UAC requisitos e como lidar com eles . Programas compilados com VFP8 ou abaixo são executados em modo de "compatibilidade". Com programas VFP9 são compilados com um manifesto de aplicativo Vista, ou seja, o requestedExecutionLevel no manifesto do aplicativo é definido para asInvoker. VFP8 e abaixo não incluem isso no manifesto (ou não incluir um manifesto em tudo), daí o modo de compatibilidade.

Isto significa que ao executar o programa no Vista, várias coisas vão falhar ou causar erros.

  1. A tentativa de gravação para HKEY_LOCAL_MACHINE no registro falhará.
  2. A tentativa de escrever um arquivo para% programfiles% ou qualquer pasta protegida irá gerar um erro. Programas só devem escrever para pastas comuns .

Você tem a opção de atualizar o Aplicação manifesto, mas não necessariamente recomendar, a menos que seu programa absolutamente requer privilégios administrativos.

Finalmente, há uma série de incompatibilidades Vista - alguns que tratam especificamente Aero - que foram fixadas com VFP9 SP2. Então, se você estiver indo para estar usando VFP9, certifique-se de usar o Service Pack 2.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top