Fórum Mestre/Detalhe (era... Senão é bug oq que é então?) #329027
09/09/2006
0
Somente por questão de esclarecimento estou criando o relacionamento como na ilustração abaixo...
[img:20aaca6c03]http://img201.imageshack.us/img201/2606/masterdetailzh3.jpg[/img:20aaca6c03]
CommandText do sdtMASTER
CommandText do sdtFILHO
O DFM do DataModule está assim:
estou afirmando que é um bug, pq quando uso relacionamento onde os nomes dos campos chaves não são iguais funciona perfeitamente, mais quando existe a igualdade ele apresenta esse erro...
chave primaria da tabela Master CODIGO*
chave primaria da tabela Detail CODIGO*
chave estangeira da tabela Detail LOCACAO <- que deveria receber o valor do código da tabela MASTER...
receber até recebe mais quando vai dar o post não grava...
conto com ajuda de vc´s um abraço
Paullsoftware
Curtir tópico
+ 0Posts
09/09/2006
Marco Salles
mas eu não faço assim:
eu so faço isso:
CommandText do sdtMASTER
Citação:
select * from LOCACAO
a nivel é claro de relacionamentos... A não ser que eu quira restringuir os dados da Matriz .. Ai sim eu uso uma Where com condição... Mas na hora que estou inderindo dados eu não faço nenhuma restrição...
O que posso perguntar é sobre os paramentros... Quando voce definiu
este Sql no Editor de propriedades , voce criou ou melhor ativou os paramentros que aparecem automaticamente ????
Outra...
execute o codigo abaixo e, prencha os dados da tabela Detalhe.. O Unico
campo que voce não ira alterar e nen deve é o campo LOCACAO
grave dando um Post e finalmente um ClientDataSet1.ApplyUpdates(0);
na Tabela MASTER... Acredito que não deve dar erro nenhum....
Qualquer coisa reporte o resultado...
procedure TForm1.ClientDataSet2AfterInsert(DataSet: TDataSet);
begin
ClientDataSet2LOCACAO.AsInteger:=ClientDataSet1CODIGO.AsInteger;
end;
Gostei + 0
10/09/2006
Paullsoftware
[img:f5b7b1d3b6]http://img226.imageshack.us/img226/6640/imagemrr7.jpg[/img:f5b7b1d3b6]
para navegação, funciona perfeitamente, mais na hora da inclusão apresenta o erro...
Gostei + 0
11/09/2006
Marco Salles
Antes da Inclusão , no registro Detalhe , acho que o Regsitro Mestre deve estar salvo .. Parece que voce não esta fazendo isto. [b:6031bfc017]Pelo menos a imagem mostra que não[/b:6031bfc017]
Gostei + 0
11/09/2006
Paullsoftware
Antes da Inclusão , no registro Detalhe , acho que o Regsitro Mestre deve estar salvo .. Parece que voce não esta fazendo isto. [b:038c9b3a6f]Pelo menos a imagem mostra que não[/b:038c9b3a6f][/quote:038c9b3a6f]
não Marcos, deixa eu tentar te explicar se vc trabalha com relacionamento usando Master Source e criando o campo do tipo DataSetField vai saber do que estou falando...
Quando pesso para incluir um novo registro na tabela Detalhe e Registro Master entra automaticamente em modo de edição, pois, a tabela Detalhe nada mais é do que um campo da tabela master, então quando eu dou um insert na tabela Master e depois dou um post na mesma ele salva e gera o Código(Chave Primaria), depois quando dou um insert na tabela Detalhe a tabela Master entra novamente em estado de edição entendeu?
vou te mandar um exemplo funcionando para que vc possa ver na prática, o exemplo foi feito em Delphi 7...
no exemplo que te mandei, vj que o relacionamento está correto, mais ele ignora o relacionamento que fiz e manda o valor do ID da tabela Master para o campo ID da tabela Detalhe...
Gostei + 0
11/09/2006
Marco Salles
é verdade...
da pagina não encontrada.. e manda comunicar o erro a equioe de Dedenvolvimento
Gostei + 0
11/09/2006
Paullsoftware
[url=http://www.safpe.com.br/externo/Exmplo (Marcos Salles).rar]
[b:e1774906b3]www.safpe.com.br/externo/Exmplo (Marcos Salles).rar[/b:e1774906b3]
[/url]
tenta agora...
é que tags não estão funcionando aqui comigo...
Gostei + 0
11/09/2006
Marco Salles
Mande-me como arquivo Zip e não com .rar
Gostei + 0
11/09/2006
Paullsoftware
Mande-me como arquivo Zip e não com .rar[/quote:9b4074fe7a]
Pronto o endereço é o mesmo, basta apenas mudar a extensão..
[b:9b4074fe7a]www.safpe.com.br/externo/Exmplo (Marcos Salles).zip[/b:9b4074fe7a]
Gostei + 0
11/09/2006
Marco Salles
o pior é que não para ... so fica mostrando que esta fazendo o DownLoad , mas nada acontece... :cry: :cry: :cry:
verifique ai...
Gostei + 0
11/09/2006
Paullsoftware
o pior é que não para ... so fica mostrando que esta fazendo o DownLoad , mas nada acontece... :cry: :cry: :cry:
verifique ai...[/quote:a6977363c9]
o endereço está ok, mais por via das duvidas mudei pra vc...
Gostei + 0
12/09/2006
Marco Salles
to estranhando que no Interbase não tenho este problema...
Tente fazer um teste usando o interbase e verifique se o problema persiste... Pode ser erro do Driver de conexão
no aguardo...
Gostei + 0
12/09/2006
Paullsoftware
mais tive conversando com um pessoal eles falaram que por padrão as regras de relacionamentos usam os campos que possuem o mesmo nome nas duas tabelas automático, isso eu já sabia mais eu estou forçando ele a se relacionar com outro campo e ele não aceita, é isso que estou achando estranho, pois, trabalhai normal com esse sistema usando driver do Interbase tb, mais quando não usava DbExpress e sim componentes nativos da paleta IB... valeu pela atenção, vou continuar procurando, mais pelo menos já sei que em projetos futuros não poderei criar campos iguais em duas tabelas para não ter essa mesma dor de cabeça novamente... :wink:
Gostei + 0
12/09/2006
Godzilla_xf
Tab_Mae
<--[b:12a4ff0c74]ID_MAE[/b:12a4ff0c74]
|
|
|
| Tab_Filha
| [b:12a4ff0c74][i:12a4ff0c74]ID_FILHA[/i:12a4ff0c74]
--> ID_MAE[/b:12a4ff0c74]
espero que isso possa te ajudar, caso não ajude desconcidere. Ok, té +++
Gostei + 0
12/09/2006
Godzilla_xf
Tab_Mae
select ID_CLIENTE, NOME, ETC from tab_clientes Order By Nome
Tab_Filha
select * from tab_clientes
where
ID_CLIENTE = :ID_CLIENTE
blz, té +++
Gostei + 0
12/09/2006
Paullsoftware
Ae amigão, valeu pela participação... Eu sei que o nome do parametro da tabela filha deve ser igual ao nome do campo da tabela Pai, se vc baixar o exemplo que disponibilizei vai ver está tudo correto. O que estamos discutindo aqui é que existe uma falha que deveria ser corrigida, pois, dou como exemplo o meu caso, quando iniciei o meu Projeto ´Sistema para Controle de Locadoras´ ele funcionava em access e funcionava perfeitamente, passei para Interbase continuou funciona enquanto usei componentes nativos (os da paleta interbase) mais, agora que estou migrando para Multi-Camadas me deparei com essa pedra no meu caminho, mais sou como aquele refrão do Marcelo D2 ´[b:dc291a7ec8]Botam barreiras no caminho,mas sou persistente. Posso cair, mas me levanto e sigo em frente.Seguro a bronca, dou um 2 e mantenho a calma[/b:dc291a7ec8]´...
Eu resolvi o meu problema fazendo o relacionamento ´forçado´, quando inicia uma nova locação o meu sistema joga o valor campo ´Chave Primaria´ daí eu pego esse valor e uso ele no evento AffterInsert da tabela Filha, e somente para garantir que tudo vai correr bem, também passo os mesmos valores no evento BeforePost da mesma Tabela, está funcionando perfeitamente, eu abri esse Post para tentar saber do Pessoa se isso Ocorre por calsa de uma Falha ou Segue um determinado Padrão, se Segue um Padrão eu gostaria que alguns colegas aqui do Fórum me dissesse qual!
Agradeço a ajuda e colaboração de todos, e, estamos ai :wink:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)