dúvidas com Dbgrid e Paradox e Query
15/08/2008
0
:?: 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?
Viperflexmaster
Curtir tópico
+ 0
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
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
Clique aqui para fazer login e interagir na Comunidade :)