ClientDataSET com Master/Detail
Tenho duas TQuerys Master/Detail que usam Midas e estão configuradas na propriedade DataSetField do Master para acessar a query Detail.
A Query Master é um join de duas tabelas, e utilizo o evento OnGetTableName para definir qual tabela que vai ser utilizada (para não usar UpdateSQL, visto que vamos passar para DBExpress em breve).
Acontece que na hora de dar o post na tabela Master, ele está procurando os campos da tabela Detail e como não encontra, dá erro. Usando o SQL Monitor, vi que ele tenta rodar o comando de inserção na tabela Mãe corretamente, mas inclui os campos na tabela filha. Por isso acontece o problema.
O que eu devo fazer para ele reconhecer que só quero inserir a Master?
A Query Master é um join de duas tabelas, e utilizo o evento OnGetTableName para definir qual tabela que vai ser utilizada (para não usar UpdateSQL, visto que vamos passar para DBExpress em breve).
Acontece que na hora de dar o post na tabela Master, ele está procurando os campos da tabela Detail e como não encontra, dá erro. Usando o SQL Monitor, vi que ele tenta rodar o comando de inserção na tabela Mãe corretamente, mas inclui os campos na tabela filha. Por isso acontece o problema.
O que eu devo fazer para ele reconhecer que só quero inserir a Master?
Marcosalex
Curtidas 0
Respostas
Kotho
01/04/2004
Coloque no BeforeUpdateRecord do DataSetProvider, um codigo mais ou menos assim:
este codigo vai ignorar todas as operações de inserção, deleção e alteração na query especificada...
If SourceDS.Name = ´nome_da_query´ Then Applied := True;
este codigo vai ignorar todas as operações de inserção, deleção e alteração na query especificada...
GOSTEI 0
Marcosalex
01/04/2004
Coloque no BeforeUpdateRecord do DataSetProvider, um codigo mais ou menos assim:
este codigo vai ignorar todas as operações de inserção, deleção e alteração na query especificada...
If SourceDS.Name = ´nome_da_query´ Then Applied := True;
Funcionou! Coloquei esses comandos na Query Master e funcionou certinho. Só que agora a inserção no detail não quer funcionar, será que é por isso?
GOSTEI 0
Kotho
01/04/2004
exatamente... para funcionar a inclusão:
If (UpdateKind <> ukInsert) And (SourceDS.Name = ´nome_da_query´) Then Applied := True;
GOSTEI 0