Master detail com IBQUERY - como alterar dados do DBGRID?
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.
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
Curtidas 0
Respostas
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
21/10/2010
ReadOnly etá como false e o DBGRID está ENABLED... tudo certo.. não entendo pq não consigo editar...
alguma luz?
alguma luz?
GOSTEI 0
Wilson Junior
21/10/2010
Verifique se a propriedade "Options/dgEditing" está como True.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
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.
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
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.
Espero ter colaborado.
GOSTEI 0
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??
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