Estou a receber uma mensagem de erro: "Operação deve usar uma consulta" actualizável; quando tento executar o meu SQL. Do meu ponto de vista, isto acontece quando os joins são utilizados em consultas de actualização/apagamento no MS Access. Contudo, I'estou um pouco confuso porque tenho outra consulta quase idêntica na minha base de dados, que funciona bem.
Esta é a minha pergunta incómoda:
UPDATE [GS] INNER JOIN [Views] ON
([Views].Hostname = [GS].Hostname)
AND ([GS].APPID = [Views].APPID)
SET
[GS].APPID = [Views].APPID,
[GS].[Name] = [Views].[Name],
[GS].Hostname = [Views].Hostname,
[GS].[Date] = [Views].[Date],
[GS].[Unit] = [Views].[Unit],
[GS].[Owner] = [Views].[Owner];
Como disse antes, estou confuso porque tenho outra pergunta semelhante a esta, que funciona perfeitamente. Esta é essa pergunta:
UPDATE [Views] INNER JOIN [GS] ON
[Views].APPID = [GS].APPID
SET
[GS].APPID = [Views].APPID,
[GS].[Name] = [Views].[Name],
[GS].[Criticial?] = [Views].[Criticial?],
[GS].[Unit] = [Views].[Unit],
[GS].[Owner] = [Views].[Owner];
O que há de errado com a minha primeira pergunta? Porque é que a segunda consulta funciona quando a primeira não't?
Não há erro no código, mas o erro é atirado devido ao seguinte
- Please check whether you have given Read-write permission to MS-Access database file.
- The Database file where it is stored (say in Folder1) is read-only..?
suponha que a base de dados (ficheiro MS-Access) é armazenada em pasta somente leitura, enquanto executa a sua aplicação a ligação não é totalmente aberta à força. Assim, altere a permissão do ficheiro / a permissão da pasta que o contém, como em C:\ Ficheiros de programa
, todos os ficheiros da unidade c foram definidos **apenas leitura***, pelo que alterar esta permissão resolve este problema.
Se esta resposta é universalmente verdadeira ou não, eu não sei'não sei, mas resolvi isto alterando ligeiramente a minha pergunta.
Em vez de juntar uma consulta seleccionada a uma tabela e de a processar, alterei a consulta seleccionada para criar uma tabela temporária. Utilizei então essa tabela temporária para a mesa real e tudo funcionou perfeitamente.