ID do artigo: 906771 - Última revisão: sexta-feira, 11 de maio de 2007 - Revisão: 1.4

Você não pode usar o Visual Basic 2005 para ler os valores de tipo de dados Moeda volta de um arquivo

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Considere o seguinte cenário:
  • Você usar valores de tipo de dados Moeda dentro de uma estrutura definida pelo usuário.
  • Você usa o Microsoft Visual Basic 6.0 para gravar os valores de tipo de dados de Moeda em um arquivo.
Nesse cenário, você não pode usar o Microsoft Visual Basic 2005 para ler os valores de tipo de dados Moeda novamente o arquivo.

Causa

Esse problema ocorre porque o tipo de dados Moeda é atualizado para o tipo de dados decimal no Visual Basic 2005. Para autônomo decimal tipos de dados, o Visual Basic 2005 E/s Leituras e gravações de dados decimal digite valores como se fossem valores de tipo de dados Moeda OA . Para valores de tipo de dados de Moeda que estão dentro de uma estrutura definida pelo usuário, o Visual Basic 2005 E/s lê e grava os tipos de dados decimal sem tentar convertê-los em um tipo de dados Moeda OA . Isso faz com que Visual Basic 2005 para ler o arquivo que você escreveu usando Visual Basic 6.0 incorretamente.

Como Contornar

Para contornar este problema, use um dos seguintes métodos.

Método 1

Use o Visual Basic 2005 para ler os valores de tipo de dados Moeda fazer do arquivo separadamente, em vez de ler novamente a estrutura definida pelo usuário. Por exemplo, use o código a seguir.
Dim currencyValue As Decimal 
FileGet(1, currencyValue) 
MsgBox(currencyValue)

Método 2

Use um valor Int64 dentro da estrutura definida pelo usuário. Em seguida, use o método Decimal.FromOACurrency para recuperar o valor decimal do tipo de dados do valor Int64 . Para fazer isso, execute as seguintes etapas:
  1. Use o seguinte código para criar uma estrutura que usa um valor Int64 .
    Private Structure TypeWithCurrency
    	Public c As Int64
    End Structure
  2. Use o código a seguir para ler o arquivo e recuperar o valor decimal do tipo de dados do valor Int64 .
    Dim t1 As TypeWithCurrency
    
    FileGet(1, t1)
    FileClose(1)
    
    Dim currencyValue As Decimal = Decimal.FromOACurrency(t1.c)
    MsgBox(currencyValue)
Observação Você não é possível usar o Visual Basic 2005 para gravar os valores para o arquivo e para ler os valores de volta do arquivo usando o método 2. Se você usar o Visual Basic 2005 para gravar os valores para o arquivo, os valores serão no tipo de dados decimal em vez de no tipo de dados Moeda . Método 2 só pode ser usado para modificar o arquivo de uma vez.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Para obter mais informações, visite os seguintes sites da Microsoft Developer Network (MSDN):
Função FileGet
http://msdn2.microsoft.com/en-us/library/3acfheek(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/3acfheek(vs.71).aspx)

Alterações de declaração de estrutura no Visual Basic
http://msdn2.microsoft.com/en-us/library/030kb3e9(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/030kb3e9(vs.71).aspx)

Migrar o código VB6 para VB .NET
http://msdn2.microsoft.com/en-us/library/aa239677(VS.60).aspx (http://msdn2.microsoft.com/en-us/library/aa239677(VS.60).aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Express Edition
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
Palavras-chave: 
kbmt kbbug kbtshoot kbprb KB906771 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 906771  (http://support.microsoft.com/kb/906771/en-us/ )