ID do artigo: 818518 - Última revisão: quinta-feira, 17 de maio de 2007 - Revisão: 1.2

CORRECÇÃO: "não é possível salvar" erro ocorre ao tentar salvar um conjunto de registros ADO para 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

Quando você tenta salvar um conjunto de registros ADO em um arquivo que foi criado por outro usuário do sistema, você receberá a seguinte mensagem de erro:
Erro em tempo de execução '-2147286781 (80030103) ':
Não é possível salvar.
Você recebe essa mensagem de erro se o aplicativo estiver em uma pasta somente leitura, mesmo se o arquivo de conjunto de registros está em uma pasta que tem permissões de gravação para os dois usuários.

Causa

Quando você tenta salvar o conjunto de registros em um arquivo que já existe, o objeto recordset cria um arquivo temporário na pasta do aplicativo. Esta pasta é uma pasta somente leitura. Portanto, o segundo usuário não pode substituir o arquivo de origem.

Resolução

Esse problema é resolvido no Microsoft Data Access Components (MDAC) 2.8. No MDAC 2.8, o ADODB recordset cria o arquivo temporário na mesma pasta do arquivo de destino que foi usado para salvar o conjunto de registros.

Para baixar o Microsoft Data Access Components (MDAC) 2.8, visite o seguinte site da Microsoft:
Observação A Microsoft recomenda que você teste seu aplicativo com o MDAC 2.8 em um ambiente de teste primeiro, para se certificar que você está ciente de quaisquer problemas de compatibilidade antes de decidir usar ou (Atualizar) o MDAC 2.8 versão.

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo. Esse bug foi corrigido no MDAC 2.8.

Mais Informações

Passos para reproduzir o problema

  1. Inicie o Microsoft Visual Basic 6.0.
  2. No menu arquivo , clique em New Project . Na caixa de diálogo New Project , clique em Standard Exe . Por padrão, é criado o Form1.
  3. No menu Project , clique em referências . Clique em Microsoft ActiveX Data Objects 2.7 Library e em seguida, clique em OK .
  4. Adicione dois botões de comando ao formulário.
  5. Right-click Form1, click View Code, and then add the following code:
    Option Explicit
    
    Private Sub Command1_Click()
       Dim cn As New Connection
       Dim rs As New Recordset
    
       On Error GoTo ErrHandler
       cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=YourSQLServer"
       cn.Open
          
       ' Open the RecordSet
       rs.Open "SELECT * FROM CUSTOMERS", cn, adOpenDynamic, adLockPessimistic
       
       ' Persist the RecordSet
       rs.Save "C:\Documents and Settings\NonAdminUserName\My Documents\Customer.dat"
       
       Exit Sub
       
    ErrHandler:
       MsgBox "Error : " & Err.Description
    End Sub
    
    Private Sub Command2_Click()
       Dim rs As New ADODB.Recordset
       
       On Error GoTo ErrHandler:
       
       ' Read the Persisted RecordSet
       rs.Open "C:\Documents and Settings\NonAdminUserName\My Documents\Customer.dat"
       
       ' Save the RecordSet
       rs.Save "C:\Documents and Settings\NonAdminUserName\My Documents\Customer.dat"
       
       Exit Sub
    
    ErrHandler:
       MsgBox "Error Number: " & Err.Number
       MsgBox "Error Description: " & Err.Description
    End Sub
    
    Private Sub Form_Load()
       Command1.Caption = "Persist RecordSet"
       Command2.Caption = "Reload Data"
    End Sub
    
  6. Substitua "YourSQLServer" na seqüência de conexão pelo nome do SQL Server.
  7. Salve o projeto na pasta C:\Arquivos de Programas\Test .
  8. No menu Executar , clique em Iniciar .
  9. Clique em RecordSet persistência e em seguida, clique em Recarregar dados . Não ocorre nenhum erro.
  10. Faça logon no computador como um usuário não administrador (por padrão, a não administradores não têm acesso de gravação para C:\Program Files\ pasta).
  11. Execute novamente o projeto. Você receber a mensagem de erro descrita na seção "Sintomas".

Referências

Para obter mais informações sobre o Microsoft Data Access Technologies, visite o seguinte site da Microsoft:
http://www.microsoft.com/data (http://www.microsoft.com/data)

A informação contida neste artigo aplica-se a:
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Data Access Components
Palavras-chave: 
kbmt kbprogramming kbdataobject kbfix KB818518 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: 818518  (http://support.microsoft.com/kb/818518/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.