Pergunta

Eu escrevi algum código VBA em um livro do Excel para recuperar dados de um banco de dados no mesmo diretório em um desktop. Ele funciona muito bem em minha máquina e várias outras máquinas com o Windows XP, mas quando nós testamos esta em uma máquina Vista, encontramos o seguinte erro:

Não foi possível localizar ISAM instalável

Eu fiz um monte de pesquisa on-line, mas não consigo encontrar uma resposta concreta. A seqüência de conexão parece estar bem, e, como eu mencionei, ele funciona em várias máquinas.

Alguém tem alguma idéia do que poderia estar causando isso? Minha seqüência de conexão é a seguinte:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ptdb\Program Tracking Database.mdb;

Graças

Nenhuma solução correta

Outras dicas

Coloque aspas simples ao redor do Extended Properties:

OleDbConnection oconn = 
    new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';");

Experimente, ele realmente funciona.

Tente colocar aspas simples em torno da fonte de dados:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb';

O problema tende a ser espaço em branco que tem significado para o analisador.

Se você tivesse outros atributos (por exemplo, propriedades estendidas), seus valores podem também têm de ser colocados entre aspas simples:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb'; Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';

Você poderia igualmente bem usar aspas duplas; no entanto, você provavelmente vai ter que escapar deles, e acho que mais de um Dor no algoritmo do que usar singles.

Você verificou este http://support.microsoft.com/kb/209805 ? Em particular, se você tem Msrd3x40.dll.

Você também pode gostar de verificar se você tem a versão mais recente do Jet: http: // support. microsoft.com/kb/239114

Basta usar Jet OLEDB: na cadeia de ligação. ele resolveu para mim.

Um exemplo é abaixo:

"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Database.mdb;Jet OLEDB:Database Password=b10w"

acabo encontrou um problema muito semelhante.

Como você, meu seqüência de conexão apareceu correta - e de fato, exatamente a mesma seqüência de conexão estava trabalhando em outros cenários

.

O problema acabou por ser uma falta de recursos. 19 vezes fora de 20, gostaria de ver o "Não foi possível localizar ISAM instalável", mas uma ou duas vezes (sem qualquer alteração de código em tudo), que iria produzir "Out of memória" em vez.

A reinicialização da máquina "resolvido" o problema (por agora ...?). Isso aconteceu usando Jet versão 4.0.9505.0 no Windows XP.

Eu usei isso para atualizar um arquivo xlsx excel 12

        System.Data.OleDb.OleDbConnection MyConnection;
        System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
        MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\Programming\\Spreadsheet-Current.xlsx';Extended Properties='Excel 12.0;HDR=YES;';");
        MyConnection.Open();
        myCommand.Connection = MyConnection;
        string sql = "Update [ArticlesV2$] set [ID]='Test' where [ActualPageId]=114";// 
        myCommand.CommandText = sql;
        myCommand.ExecuteNonQuery();
        MyConnection.Close();

Use essa seqüência de conexão

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
      "Data Source=" + strFileName + ";" + "Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\"";

Este problema ocorre porque a máquina não pode encontrar o (método motorista seqüencial indexado) do ISAM correta registrado que o Access precisa.

É provavelmente porque a máquina não têm MSACeesss instalado? Gostaria de ter certeza que você tem a última versão do Jet, e se ainda não funcionar, encontrar o arquivo Msrd3x40.dll de uma das outras máquinas, copiá-lo de um lugar para a máquina e chamada regsvr32 Vista sobre ele (no modo de administrador ) que deve resolver o problema para você.

Use a seqüência de conexão abaixo para ler de um arquivo XLSX:

string ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Dados Fonte = "+ <> +"; Extensão Propriedades = Excel 8.0; ";

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