Fórum TABLE IS READ ONLY #141084

26/02/2003

0

tenho um form que abre os campos de uma tabela por um componente TQuery
mas ao tentar dar um insert nele, dá ´Table is read only´
como atribuo o valor de leitura e escrita na tabela com o componente query?


Garciabh2

Garciabh2

Responder

Posts

26/02/2003

Danielc

Caro Amigo,

Verifique o arquivo que vc esta usando se ele no windows não esta configurado para ´somente leitura´. Se vc copiou esse arquivo de algum lugar, as vezes o windows altera essa propriedade para True. Já aconteceu isso comigo e qdo ia escrever dados dava esse problema. testa isso, se naum for me manda um e-mail que eu vejo se posso te ajudar..

[]´s Daniel


Responder

Gostei + 0

26/02/2003

Torres Delphi

Ha alguns dias deixei esta mesma questao neste forum, mas ninguem me respondeu a contento. No meu caso estava usando Interbase, o arquivo do banco nao esta ´somente leitura´ e outra, outras tabelas funcionavam normalmente.
Como varios testes descobri que dependendo da instrucao SQL que eu utilizava, o erro acontecia. Coisas basicas do tipo: ´Select * from tabela´ funcionavam numa boa, mas, join, count, etc nao funcionam, e mostra o erro que vc esta enfrentando.
Pesquisei no net e descobri um artigo que falava da limitacao dos comandos SQL em querys com Request Live:= true.
Procure nas questoes anteriores o link que coloquei na minha propria questao (eu nao estava registrado por um problema que houve com o meu login antigo neste forum, logo estara como Visitante)

Qq duvida me mande um e-mail

Abracos


Responder

Gostei + 0

26/02/2003

Garciabh2

aqui,
fiz um botao pra deletar um registro da tabela, mas gostaria que fosse mostrada uma mensagem pedindo confirmacao, mas se faço assim:

MessageDlg(´Quer realmente deletar este registro?´, mtConfirmation, mbOkCancel, 0);
TBLcliente.Delete;

ele deleta independente do botao que for clicado...
como é o jeito certo de tratar isso?
Brigadao


Responder

Gostei + 0

26/02/2003

Torres Delphi

Veja a mensagem que postei sobre ´Table is read only´

Amigos,

Ha alguns dias deixei uma questao sobre uma query que mostrava mensagem read only na abertura da mesma. Fiz alguns testes no programa e identifiquei que o erro nao acontecia qdo a instrucao SQL era ´basica´, do tipo: ´Select * from tabela´.

Fica a dica para todos.

Torres

Dependendo da instrucao SQL utilizada, o ´erro´ acontece.

Veja o trecho abaixo, retirado de ´Susviela´

http://www.susviela.hpg.ig.com.br/delphi/delphi/tquery.htm
Confira a materia na integra

LIVE QUERIES

O componente Query nem sempre tem seu conjunto de valores de retorno possível de ser atualizado. Existem dois tipos de valores de retorno para Queries:

Live result sets - O usuário pode editar os dados da forma desejada, como um Table.

Read-Only result sets - o usuário não consegue alterar nenhum dos valores retornados pela Query.
Por default, uma query sempre retorna um conjunto de valores que são somente de leitura. Para que você consiga um conjunto de valores alteráveis:

Coloque a propriedade RequestLive para True e;

Use a sintaxe do SELECT conforme o guia abaixo.
Se você não fizer o passo nº 2 corretamente, não conseguirá um Live result set. Quando um TQuery retorna um conjunto de valores que podem ser modificados, o Delphi altera a propriedade CanModify para True.

Tabela de necessidades da sintaxe SQL para Live result sets:

Para o caso de Paradox ou dBase

Referenciar somente uma Tabela
Não fazer uso da cláusula ORDER BY
Não usar funções agregadas, como SUM e AVG.
Não usar campos calculados na lista do SELECT
Usar uma cláusula WHERE que consista somente na comparação das colunas com constantes. As comparações podem ser LIKE, > < , >=, e <=. Esta clausula pode conter qualquer número de junções OR e AND.


Responder

Gostei + 0

26/02/2003

Garciabh2

ah que ótimo!

meu problema era o Order by
tirei isso aí ele funcionou


Responder

Gostei + 0

17/03/2011

Daniel Lucena

Cara Muito obrigado, resolveu meu problema
Funcionou dessa forma:   Query1.SQL.Clear;   query1.SQL.Add('update requisicao_transportes set Status_Requisicao  = ''A'' where Seq_Requisicao_Transporte LIKE '+ QuRequisicao_TransportesSeq_Requisicao_Transporte.asstring);  Query1.ExecSQL;

 
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar