Fórum Mestre Detalhe + DBExpress + SQL Server #391685
02/12/2010
0
Seguinte, trabalho com DBExpress e sempre utilizei o esquema de Mestre - Detalhe via Delphi (jeito padrão usado no conceito de 3 camadas) ..
TSQLConnection = Acesso ao banco SQL Server
TSQLQuery (Mestre) = Com um SQL básico (SELECT * FROM TABELA)
TDataSetProvider = [poPropogateChanges,poAllowCommandText]
TClientDataSet (Mestre) = Só mantenho os campos adicionados com suas propriedades no padrão mesmo ...
O "Filho" esta assim:
TSQLQuery = Com um SQL assom (SELECT * FROM TABELA WHERE CODIGO=:CODIGO)
Mudo tambem as propriedades no parâmetro para: DataType: ftInteger ParamType: ptInput Type: Integer e Value: 0
TDataSetProvider = [poPropogateChanges,poAllowCommandText]
TClientDataSet = Neste cara faço a ligação mestre e detalhe usando o DataSource ... MasterSource ... etc ... !!
Bom esse esquema todo funciona 100% no Firebird, porém, quando mudei para o SQL Server 2005 não consegui mais fazer funcionar !!
O problema que estou encontrando é que no SQL Server uso o campo IDENTITY para gerar o código da PK, e só consigo pegar o valor do IDENTITY (que é o codigo do MESTRE) após dar o ApplyUpdates nele.
Só o Delphi não aceita inserir dados nos DataSet's pai e filho sem o CÓDIGO da PK ser informado ... mas eu ainda não tenho o código ...
Como posso fazer?????
Valeu
Carlos Souza
Curtir tópico
+ 0Posts
02/12/2010
Wilson Junior
Espero ter colaborado.
Gostei + 0
02/12/2010
Carlos Souza
Quando mudei para o SQL Server eu não consegui fazer os componentes funcionarem.
Porque como não tenho mais o valor do código da PK da tabela PAI para informar aos filhos (usando o esquema do IDENTITY) eles se perdem no meio do procedimento !!
Meu problema esta em fazer os cadastros em memória sem ter esse CÓDIGO para informar, uma vez que só obtenho ele no momento do ApplyUpdates do PAI .... ai depois disso eu passo para os DataSet's filhos os códigos !!
Me ajudem ...
Gostei + 0
14/12/2010
Luiz Benevenuto
Ela deve ser feita direto nas SQLQuerys, não no CDS.
E de qq maneira uma inserção de dados necessita do código do pai, que faz a ligação entre as tabelas.
O tipo de ligação mestre/detalhe mais aconselhada é a Nested Tables.
Assim vc vai ter só um provider e não vai precisar ficar dando apply em vários CDSs somente o mestre cuida de tudo isso.
Abraço.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)