Posts
21/09/2010
Eduardo Marcolongo
Vc esta dando applyupdates no detail ?
21/09/2010
Eriley Barbosa
Ta mas no dataset detalhe você tem que ter um parâmetro que busque o dado de relacionamento no Dataset Mestre. Veja um artigo:
http://siegmar.com.br/universo/LPIV/ExemploDBXMDI.pdfOu Usar master source, veja um artigo:
https://www.devmedia.com.br/post-6474-Formulario-Mestre-Detalhes-com-DBExpress-e-Firebird.html
21/09/2010
Leandro Carvalho
Salvando algum item na tabela detalhe tu vai salvar chamando a tabela detalhe e logo após dar um ApplyUpdates. Exemplo:
Na minha tabela de Pedido tenho a tabela PedidoItens, no botão salvar do item chamo:
CDSPedido.Post;
e logo após no evento AfterPost da CDSPedido tem-se:
If CDSPedido.ChangeCount > 0 then
begin
SQLCCeramica.StartTransaction(TDPedido);
Try
CDSPedido.ApplyUpdates(0);
SQLCCeramica.Commit(TDPedido);
Except
SQLCCeramica.Rollback(TDPedido);
Application.Messagebox('Erro durante a gravação de dados !',
'Erro', Mb_Ok + Mb_IconError);
end;
end;
Na exlusão de algum item tu chama:
CDSItemPedido.Delete;
Tente desta forma.
Qualquer coisa estamos ai.
21/09/2010
Leandro Carvalho
Só corrigindo a primeira linha:
Salvando algum item na tabela detalhe tu vai salvar chamando a tabela mestre e logo após dar um ApplyUpdates.
22/09/2010
Ricardo Santos
NOSSA !!! rsrsrs ... Pessoal, desde já ... Quero agradecer a PRONTIDÃO de vcs em responderem "prontamente" ...
Pessoal, pra falar a verdade, tô c/ TANTAS outras prioridades, q nem ontem (21-09-10) e muito provavelmente hj (22-09-10), não vou ter tempo de "testar" as soluções propostas, mas só pra CONSTAR q tô acompanhando ...
Olha ô EDUARDO MARCOLONGO ... na verdade não tô dando ApplyUpdates no datail, mas q eu me lembre, eu nunca fiz isso ... Mesmo pq, no Provider do Client (master), lá nas opções, as opções PoCascadeDeletes e PoCascadeUpdates estão como TRUE ... E ate´onde me recordo, isso deveria fazer c/ q ... qualquer alteração no Master ou no Detalhe ... deveria "repercutir" no outro correto ???
ô ERILEY VILAGRANDE ... existe sim um parâmetro no detalhe q faz o relacionamento, tanto é q o relacionamento "em sí", está funcionando, ou seja ... as informações ... são exibidas corretamente, o q não está acontecendo, é o update ou delete ...tanto no Client Master, quanto no Detail ... entende ???
LEANDRO LÁZARO ... como disse ... assim q possível .. vou "testar" sua sugestão, OK !!!
Obrigado a todos por enquanto, e qualquer novidade ... posto aqui ... de preferência ... ainda hj ... rsrsrs ...
Boa tarde galera
olá Ricardo já tive esse problema, mesmo dando um applyupdate tanto no mestre ou detail, quando fechava o formulário e abria novamente não gravava os itens.E pesquisando achei uma dica que era a de mudar as opções do
sqldataset o clientdataset MASTER mudar a prorpiedade PROVIDERFLAGS pfInKey do campo chave para TRUE com isso consegui resolver.
tenta aí pra ver se resolve seu caso valeu
qualquer coisa tamos aí.
23/09/2010
Ricardo Santos
Pessoal ...
Gostaria de poder dizer q tá tudo OK ... mas, infelizmente não !!!
ERILEY - qto ao primeiro LINK, como eu já disse o relacionamento funciona, o q não tá funcionando é
justamente a gravação de alterações tanto no MASTER qto no DETAIL .. e no segundo LINK, segui EXATAMENTE
o q tá na matéria ... e constatei alguns erros, PRIMEIRO q na tabela Itens daquele exemplo ...
a chave primária .. teria q ser composta (CODIGO,CODIGOPEDIDO), pra q se possa inserir mais registros
(eu sei q não é de SUA autoria, mas tem esse probleminha, rsrsrsr) e SEGUNDO, q qdo executo
a aplicação, dá aquele famoso erro de Missing Provider ou Data Packet ...
LEANDRO LÁZARO: Olha cara ... desculpe, mas tentei implementar sua sugestão ... mas tô c/ dúvida ...
o que seria o (TDPEDIDO) nos momentos de "StartTransaction", "Commit" ou "RollBack" ??? Por favor,
desculpe minha "ignorância" OK ??? rsrsrs ...
ADVAIR - eu Já estou fazendo isso no PROVIDERFLAGS ...
Bom pessoal ... é isso ... Só tem um pequeno "detalhe" q esquecí de mencionar,
em minhas tabelas MASTER e DETALHE, não uso CHAVES PRIMÁRIAS ... eu uso "CHAVES UNICAS",
por exemplo: ALTER TABLE CDS ADD UNIQUE (CODCD) e ALTER TABLE MUSICAS ADD UNIQUE (CODCD, ORDEM),
mas acredito não ser esse o problema, pois já funcionava em outra ocasião ...
Desde já agradeço à TODOS ...
23/09/2010
Leandro Carvalho
No evento oncreate do seu data module ondem se encontram as tabelas tu faz essa declaração:
TDPedido.TransactionID := 1;
TDPedido.IsolationLevel := xilREADCOMMITTED;
TDItemPedido.TransactionID := 1;
TDItemPedido.IsolationLevel := xilREADCOMMITTED;
E declare a variavel:
TDPedido, TDItemPedido: TTransactionDesc;
26/09/2010
Ricardo Santos
Pessoal ... tenhos "novidades" ...
Continuando MINHA saga rumo à resolução desse grandioso mistério, descobrí mais alguns "detalhes" ...
Não sei como isso não havia passado pela minha cabeça antes, mas fui "lembrado" por um amigo. Por isso fiz o seguinte: coloquei um Showmessage(e.message), no evento OnReconcile do Client Master ... deletei um registro do Client Detail ... e qdo fui dar um ApplyUdates no Client Master ... apareceu a mensagem:
Update affected more than 1 record.
Parece q a alteração (no caso, exclusão de um registro no detalhe), está "afetando" mais de 1 registro !!!
Não consigo entender tal "comportamento" ... Será q alguém poderia me dar uma "luz" ?? Pq, não sei mais o q fazer, nem o q tentar ..
Obrigado ...
26/09/2010
Ricardo Santos
Então pessoal ...
Fiz um pequeno "vídeo" caseiro só p/ tentar ILUSTRAR um pouco melhor o problema
26/09/2010
Ricardo Santos
bom ... como eu estava dizendo ... fiz um pequeno Vídeo caseiro, pra tentar ILUSTRAR o problema q estou tendo c/ meu relacionamento MESTRE-DETALHE ...
Por favor, perdoem pela qualidade ... OK ???
O vídeo tá lá em:
http://www.youtube.com/watch?v=UKb28dZN9MA
27/09/2010
Ricardo Santos
É pessoal !!!
Pelo q tô vendo, esse é mais um "daqueles" casos q não têm solução ...
Bom, como eu disse, já tentei TUDO o q me foi sugerido e/ou proposto aqui no forum, me parece q vou ter q APELAR e voltar a usar Win XP, pois esse problema só acontece em minha casa, pois no meu note, uso Win 7 !!!
Será q é esse o problema ???