dúvidas com Dbgrid e Paradox e Query

15/08/2008

1

:?: Olá tenho uma tabela em paradox, e uma dbgird no formulário, porém gostaria que a dbgrid trabalhasse com query, criei uma query(Qclientes) e seu datasource(DSQClientes), na dbgrid determinei que o datasource(DSQClientes), porém quando tento digitar algu registro a dbgrid está como se fosse bloqueda(sem permitir que eu digite algo), e quando tendo dar um insert(dm1.QClientes.insert) é exibido a seguinte mensagem de erro Cannot a modify a read-only dataset. o que estou fazendo de errado, tem alguma configuração especial para a query ou para o dbgrid para que permita inserir, editar, etc como em uma table?


Responder

Posts

15/08/2008

Marco Salles

Ha basicamente duas maneiras : Tradicionais e uma Avançada

1) usar a propriedade RequestLive para True ...Porém consultas mais complexas(por exemplo com join) continuarão somente leitura.

2)Usar o CacheUpdates em True juntamente com um component UpdateSQL... Esta ai vai ter que configurar os componentes:
a)Propriedade UpdateObject da Query para UpdateSQL
b)de um duplo click em UpdateSQL e configure as instruções update delete insert... Lembrando de Selecionar somente o campo ´ID´ para a opção Key Fields (isto é usado na clausu-la where)

Ha ainda um terceira opção , muito poderosa usando
DataSetProvider e ClientDataSet...
1)configure o DataSetProvider
DataSet apontado para a Query
UpdadeModo Escolha upWhereKeyOnly


2)configure o ClientDataSet
ProviderName apontando para o DataSetProvider

3)DataSource
DataSet aponte para ClientDataSet e não mais para a Query

Query
Active em false
CacheUpdate em False e
RequestLivre em False
Unidetional para TRUE (para não haver duplicação a cache)

A query passara a ter a função somente de realizar consulta Sql e nada mais... Voce devera passar a maioria dos manipuladores de evntos da Query para o ClientDataSet. As configurações dos Tfields tb devem ser definidas no ClientDataSet .

Com isto Voce Terá um Aplicação BDE muito Semelhante ao DBExpress .

efeito colateral : Inicilalização mais Lenta
Vantagem:Busca Indexaçoes e calculos sobre os Dados muito mais rápido pois estaçao em memoria e não no Disco RIGIDO , Como é feito pela APLICAÇÃO BDE Tradicional

Para finalizar não esqueça de dar
clientDataSet.open na hora de Abrir o Aplicativo
clientDataSet.ApplyUpdates para Atualizar Todas as Modificaçoes
clientDataSet.close na Hora de Fechar

e Depositar 10 Pratas na minha conta


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira