Ricardo, Essa não é forma de fazer Mestre/Detalhe com DBExpress. Segue abaixo as conexões:
============================ Componentes Mestre ============================ SQLQueryMestre Propriedades - SQL = Select * From Menus - SQLConnection = Ao seu componente SQLConnection DataSetProviderMestre Propriedades - DataSet = SQLQueryMestre - Options = [poIncFieldProps, poAllowCommandText] - UpdateMode = upWhereKeyOnly ClientDataSetMestre Propriedades - ProviderName = DataSetProviderMestre DataSourceMestre Propriedades - DataSet = ClientDataSetMestre Obs.: Inclua os campos no FieldsEditor do ClientDataSet e SQLQuery. Ainda no FieldsEditor, identifique quais campos compõem a chave (selecione os campos que compõem a chave e altere a Propriedade ProviderFlags para [pfInWhere, pfInKey]), para os demais campos (selecione todos e altere a Propriedade ProviderFlags para [pfInUpdate]). ============================ Componentes Detalhe ============================ SQLQueryDetalhe Propriedades - SQL = Select * From SubMenus Where Cod_Menu = :Cod_Menu - DataSouce = DataSourceMestre (***) - SQLConnection = Ao seu componente SQLConnection Obs.: Informe as propriedades do Param; DataSetProviderDetalhe Propriedades - DataSet = SQLQueryMestre - Options = [poIncFieldProps, poAllowCommandText] - UpdateMode = upWhereKeyOnly ClientDataSetDetalhe Propriedades - ProviderName = DataSetProviderMestre - MasterSource = DataSourceMestre (***) - MasterFields = (Clique no 3 pontinhos e selecione o campo chave nas duas tabelas e clique no botão [ Add ] e depois [ OK ] Obs1.: Clique com o botão direito sobre o componente ClientDataSetDetalhe e selecione a opção Fetch Params; Obs2.: Inclua os campos no FieldsEditor do ClientDataSet e SQLQuery. Ainda no FieldsEditor, identifique quais campos compõem a chave (selecione os campos que compõem a chave e altere a Propriedade ProviderFlags para [pfInWhere, pfInKey]), para os demais campos (selecione todos e altere a Propriedade ProviderFlags para [pfInUpdate]). Está pronto o seu Máster/Detail sem nenhum código. Atenciosamente, Douglas Uesato www.uesato.eti.br -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Ricardo Lima Mariz Enviada em: quinta-feira, 16 de fevereiro de 2006 17:58 Para: delphi-br@yahoogrupos.com.br; [EMAIL PROTECTED] Assunto: [delphi-br] Ajuda para resolver um problema com clientdataset. Olá pessoal!!! Estou usando o dbexpress com ClientDataSet. Tenho duas tabelas Menus(Cod_Menu,Descricao) SubMenus(Cod_Menu,Cod_SubMenu,Descricao,Autorizado) Autorizado é um campo boolean que indica se o submenu está autorizado ou não. Coloquei na tela dois DBGrids, o primeiro tem os dados dos menus e no segundo contem os dados dos submenus referente ao menu que está selecionado no DBGrid dos menus, ai a cada vez que o usuario muda a posição do primeiro DBGrid escolhendo um menu, o DBGrid dos submenus mudam para os submenus do menu selecionando, no DBGrid do submenus tem a descrição do submenu e um checkbox para indicar se aquele submenu está autorizado ou não. O que eu quero é que o usuario possa navegar entre os menus e submenus alterando o campo Autorizado e no final de tudo clicar em um botão para salvar a sua configuração, ai que vem o problema. Primeiro eu tentei fazer tipo um master/detail no evendo AfterScroll da tabela menus eu coloquei o cogido: cds_SubMenus.Close; cds_SubMenus.Params[0].asInteger := cds_Menus.FieldByName('COD_MENU').AsInteger; cds_SubMenus.Open; Porem dessa forma não funciona o que eu quero, pois se o usuário fizer uma configuração e depois mudar de menu ele vai perder esse configuração. Depois eu tentei outra forma, eu trago todos os registros da tabela submenus e vou fazendo filtros de acordo com o menu selecionado, no evendo AfterScroll da tabela menus eu coloquei o cogido: cds_SubMenus.refresh; E no Evendo FilterRecord do clientdataset faço afiltragem dos submenus. porem quando fui testar acontece o seguinte, o usuario faz uma configuração na tabela submenus, mudando o campo autorizado(boolean), e depois vai mudar pra outro menu(não esqueçam que quero salvar tudo no final, o usuário faz toda a configuração depois ele salva) tenho que dar um refresh no cds_Submenus para atualizar o filtro, ai me retorna um erro dizendo que primeiro eu tenho que dar o apllyupdate para depois dar o refresh. Alguem tem alguma solução de forma que o usuario possa fazer toda a configurãção e salvar tudo de uma fez assim que ele terminar de fazer a configuração. Desculpe pelo longo texto. Obrigado LhHost Ricardo Lima [EMAIL PROTECTED] [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Links do Yahoo! Grupos -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html