Tenho um programa VBA escrito no Access 2010. Ele cria e preenche uma tabela a partir de um arquivo de texto. Anteriormente, havia menos de 20.000 registros no total. Com o conjunto de dados atual, recebo um estouro quando ele tenta adicionar o 32.769º registro (32 K +1). Tentei interrompê-lo depois de adicionar o registro 32.768 e funcionou bem (sem erro de estouro). Depois de aumentar o máximo para 32.769, recebo o erro de estouro. Existe um número máximo de registros que podem ser adicionados via VBA? Estou usando as chamadas DAO padrão - CreateDatabase, OpenDatabase, OpenRecordset, etc. Estou copiando tabelas existentes de outro banco de dados para criar as tabelas. Em seguida, uma cadeia .AddNew, xxx = yyy ... e .Update para adicionar os registros. Estou usando um sistema operacional Windows 7 de 64 bits. Alguém sugeriu usar ADO em vez de DAO, mas não consegui descobrir como fazer isso. Parece que a primeira coisa é importar ou adicionar uma referência a System.Data.OleDb.dll. Não consegui encontrar isso. Qualquer ajuda seria apreciada. Posso acabar reescrevendo tudo em C#.
Fil
Responder1
O problema é mais do que provável que você esteja usando um número inteiro para especificar a linha. Tente usar um longo. Isso deve levar você um pouco mais longe antes que morra.
Responder2
Duplas não vão ajudar, os longos devem servir. Ainda deve haver algum lugar que esteja usando um número inteiro se você estiver obtendo um estouro em 32769. Verifique seu código cuidadosamente para números inteiros, variantes e verificáveis não esmaecidos. Certifique-se de ter Option Explicit no topo de todos os seus módulos também, porque pode ser que você tenha escrito um nome de variável de maneira diferente de onde está esmaecido; nesse caso, será uma variante inteira e não longa se você começar com pequeno números.