Salvando todos detalhes pela tabela Mestre
Bom gente, utilizo um relacionamento master-detail de 3 camadas, percebi que ao salvar o mestre os detalhes são salvos porém ao salvar ele vai automaticamente para o primeiro registro da tabela, e isso que eu não quero que aconteça, pois quando salvo outras tabelas normal sem este tipo de relacionamento ela salva e continua no mesmo registro, apenas com master-detail aconteçe isso ? Como concerto ?
Ronaldo Lanhellas
Curtidas 0
Respostas
Wilson Junior
30/06/2011
Quem vai para o primeiro regsitro, o mestre ou o detalhe?
GOSTEI 0
Ronaldo Lanhellas
30/06/2011
Os dois !, todos as tabelas relacionadas vão para o primeiro registro, cheguei até pensar que seja alguma propriedade do DataSetProvider, porém não encontrei nada a respeito !
GOSTEI 0
Wilson Junior
30/06/2011
Você da um refresh nas tabelas após a gravação?
- Sim, o refresh é como se executasse um novo SQL, assim ele reposiciona o cursor para o primeiro registro;
- Não, coloque aqui o código da parte da gravação para poder analisar.
Espero ter colaborado.
- Sim, o refresh é como se executasse um novo SQL, assim ele reposiciona o cursor para o primeiro registro;
- Não, coloque aqui o código da parte da gravação para poder analisar.
Espero ter colaborado.
GOSTEI 0
Ronaldo Lanhellas
30/06/2011
Amigo, creio que não esteja relacionado ao Refresh pois em outros sistemas que também utilizo o refresh ele nunca direciona a tabela para o registro inicial, o meu "Save" é bem simples também creio faça diferença, mais vamos lá
if crud.Save(DsPromotores) thenbegin crud.Atualizar (DsPromotores.DataSet); ac_imprimir.execute;end;
agora dentro da Classe CRUD
método Save if MessageDlg('Deseja Salvar as Alterações ?',mtInformation, [mbOK,mbCancel],0) = mrOK thenbegin try TClientDataSet(Ds.DataSet).ApplyUpdates(0); result := true; except reulst := false;endelseresult := false;
método atualizar
Ds.Refresh ;
if crud.Save(DsPromotores) thenbegin crud.Atualizar (DsPromotores.DataSet); ac_imprimir.execute;end;
agora dentro da Classe CRUD
método Save if MessageDlg('Deseja Salvar as Alterações ?',mtInformation, [mbOK,mbCancel],0) = mrOK thenbegin try TClientDataSet(Ds.DataSet).ApplyUpdates(0); result := true; except reulst := false;endelseresult := false;
método atualizar
Ds.Refresh ;
GOSTEI 0
Wilson Junior
30/06/2011
Em todas as outras rotinas que você grava você chama a action ac_Imprimir? O que esta action faz especificamente?
Aguardo retorno.
Aguardo retorno.
GOSTEI 0
Ronaldo Lanhellas
30/06/2011
Esta rotina faz impressão com WriteLn direto na impressora.
GOSTEI 0
Wilson Junior
30/06/2011
Mas ele utiliza os ClientDataSet Mestre e/ou Detalhe?
GOSTEI 0
Ronaldo Lanhellas
30/06/2011
Detalhe ... ele faz o seguinte :
pega todos os produtos de um vendedor e imprimi ( sendo que os produtos são da tabela detalhe e o vendedor da mestre)
pega todos os produtos de um vendedor e imprimi ( sendo que os produtos são da tabela detalhe e o vendedor da mestre)
GOSTEI 0