TABLE IS READ ONLY
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?
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
Curtidas 0
Respostas
Danielc
26/02/2003
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
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
GOSTEI 0
Torres Delphi
26/02/2003
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
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
GOSTEI 0
Garciabh2
26/02/2003
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
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
GOSTEI 0
Torres Delphi
26/02/2003
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.
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.
GOSTEI 0
Garciabh2
26/02/2003
ah que ótimo!
meu problema era o Order by
tirei isso aí ele funcionou
meu problema era o Order by
tirei isso aí ele funcionou
GOSTEI 0
Daniel Lucena
26/02/2003
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;
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;
GOSTEI 0