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.
Ao se conectar a uma planilha do Excel usando o método OpenRecordset de DAO, alguns valores em uma coluna do Excel podem ser retornados como NULL quando o valor subjacente não é um nulo. Isso normalmente ocorre quando numérico e tipos de dados de texto estão misturados dentro da mesma coluna do Excel.
Esse problema é causado por uma limitação do driver ISAM do Excel em que uma vez que ele determina o tipo de dados de uma coluna do Excel, ela retornará um nulo para qualquer valor que não é do tipo de dados o driver ISAM tem padrão para essa coluna do Excel. O driver ISAM do Excel determina o tipo de dados de uma coluna do Excel examinando os valores reais no primeiro algumas linhas e, em seguida, escolhe um tipo de dados que representa a maioria dos valores do seu amostragem.
Há duas soluções alternativas para esse comportamento:
Garantir que os dados no Excel são inseridos como texto. Apenas reformatar a coluna do Excel para texto não será fazer isso. Você deve inserir novamente os valores existentes depois de reformatar a coluna do Excel. No Excel, você pode usar F5 inserir novamente os valores existentes na célula selecionada.
Você pode adicionar a opção IMEX = 1; para o Excel conectar seqüência de caracteres no método OpenDatabase. Por exemplo:
Set Db = OpenDatabase("C:\Temp\Book1.xls", _
False, True, "Excel 8.0; HDR=NO; IMEX=1;")
Observação: configuração IMEX = 1 informa o driver para usar o modo importação. Nesse estado, o registro configuração ImportMixedTypes = Text será ser notado. Isso força mistos dados a ser convertido em texto. Para isso funcione de forma confiável, você também pode ter que modificar a configuração do Registro, TypeGuessRows = 8. O ISAM analisa as oito primeiras linhas de driver por padrão e de amostragem que determina o tipo de dados. Se este oito linha amostragem é todos os numérica, em seguida, definir IMEX = 1 não converterá o tipo de dados padrão para texto; ele permanecerá numérico.
Você deve ter cuidado que IMEX = 1 não ser usados indiscriminadamente. Isso é importar modo, portanto, os resultados podem ser imprevisíveis se você tentar fazer acrescenta ou atualizações de dados nesse modo.
As configurações possíveis de IMEX são:
0 is Export mode
1 is Import mode
2 is Linked mode (full update capabilities)
a chave do registro onde as configurações descritas acima estão localizadas é:
Consulte a seção Referências deste artigo para obter informações sobre quando a planilha do Excel tem cabeçalhos de coluna de texto com dados numéricos.
Para duplicar esse problema, primeiro crie uma pasta de trabalho do Excel com uma planilha de Sheet1 padrão. Na primeira coluna de Sheet1, insira os seguintes valores - 123, aaa, 456, bbb, 789. Salvar esta pasta de trabalho no seu diretório C:\Temp e denomine Book1.XLS.
No Visual Basic, crie um novo projeto Standard EXE e execute as seguintes etapas:
Fazer uma referência a biblioteca de objetos do Microsoft DAO 3.5. No Visual Basic 6.0, isso será Microsoft DAO 3.51 Object Library.
Adicione um CommandButton ao formulário novo.
Coloque o código seguinte na seção de declaração geral do formulário:
Dim Db As Database
Dim Rs As Recordset
Private Sub Command1_Click()
Set Rs = Db.OpenRecordset("Sheet1$")
'This will print the spreadsheet Text values as Nulls.
Do While Not Rs.EOF
Debug.Print Rs(0)
Rs.MoveNext
Loop
End Sub
Private Sub Form_Load()
'HDR refers to the Excel header row.
Set Db = OpenDatabase("C:\Temp\Book1.xls", _
False, True, "Excel 8.0; HDR=NO;")
End Sub
Private Sub Form_Unload(Cancel As Integer)
Db.Close
Set Db = Nothing
End Sub
executar o projeto pressionando a tecla F5 e observe que, na janela Verificação imediata os valores de texto são impressos como nulo. Se a maioria dos valores da planilha do Excel eram texto, o resultado do código acima seria ser revertido. Ou seja, os valores numéricos seriam voltar como nulos.
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: 194124
(http://support.microsoft.com/kb/194124/en-us/
)
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
Diga-nos o porque e o que podemos fazer para melhorar esta informação
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.