Master detail com IBQUERY - como alterar dados do DBGRID?

Delphi

21/10/2010

Olá pessoal. Cansado de quebrar a cabeça resolvei lançar essa dúvida pra galera que manja de delphi e banco de dados.

Estou desenvolvendo uma aplicação master detail. Mostro os dados da tabela mestre em alguns campos EDIT e os dados da tabela detail num DBGRID. Até ai tudo funcionando bem.

Acontece que eu quero alterar os dados da tabela detail diretamente pelo DBGRID, como posso fazer isso? O meu DBGRID nem permite alteração.. não sei o que fazer a partir daí. Se eu conseguisse alterar, ai era só bolar um comando SQL pra salvar na tabela..

Alguém já faz isso? Alguma ajuda?

Obrigado.
João Telles

João Telles

Curtidas 0

Respostas

Leonardo Xavier

Leonardo Xavier

21/10/2010

Veja se as propriedades Readonly esta como false, e Enable como True, de seu DBgrid.
GOSTEI 0
João Telles

João Telles

21/10/2010

ReadOnly etá como false e o DBGRID está ENABLED... tudo certo.. não entendo pq não consigo editar...

alguma luz?
GOSTEI 0
Wilson Junior

Wilson Junior

21/10/2010

Verifique se a propriedade "Options/dgEditing" está como True.

Espero ter colaborado.
GOSTEI 0
João Telles

João Telles

21/10/2010

Sim, dgEditing está como true, mesmo assim não consigo alterar.

Para explicar melhor a situação. Esse DBGRID está ligado ao DATASOURCE que por sua vez está ligado à IBQUERY que faz um select no banco em busca de valores.
GOSTEI 0
Wilson Junior

Wilson Junior

21/10/2010

Utilize um TIBDataSet no lugar do TIBQuery, vincule o TIBDataSet a um TDataSetProvider, sendo este vincluado ao TClientDataSet e este vinculado ao TDataSource.

Espero ter colaborado.
GOSTEI 0
João Telles

João Telles

21/10/2010

Wilson, fiz o que vc sugeriu. Aparentemente as ligações ficaram todas corretas. Contudo, ocorrem alguns problemas:

Para deixar mais claro.. como eu disse no início meu projeto é uma tabela master-detail. A tabela master aparece em DBEdits e a tabela detail aparece no DBGrid. Fiz as ligações no IBDataser, DataSetProvider, ClientDataSet e DataSource... tudo normal.

A tabela master funcionou normal... ela contem o select (Select * from master ORDER BY ID).

Só que.. a minha tabela detail parou de funcionar... no DBGrid.. apesar de eu conseguir editá-lo agora.. ele não aparece nada.. parece q o comando SQL não está funcionando.. o comando é (SELECT * FROM detail WHERE ID_LANC = :MESTRE ORDER BY ID) será que tenho q definir os parametros de outra forma.. ou em algum outro lugar.. ou existe alguma propriedade não ativada??
GOSTEI 0
POSTAR