Mestre/Detalhe dbExpress
18/03/2006
0
[b:6635b8ed6b]Então pela biografia faço assim :[/b:6635b8ed6b]
[color=darkblue:6635b8ed6b][b:6635b8ed6b]Relacionamento[/b:6635b8ed6b][/color:6635b8ed6b]
[color=darkblue:6635b8ed6b][b:6635b8ed6b]Aqui finalizo e faço[/b:6635b8ed6b][/color:6635b8ed6b]
ClientDataSet1 a)Active igual a True b)Dois clichs no COmponente e Adiciono All c)No Final aparece um campo (Nested Dataset) que é o Relacionamento em si ClintDataset2 a)Active igual a True Tenho ainda um Botão ApplicarDelta DM.ClientDataSet1.ApplyUpdates(0);
:P :P :P :P
[b:6635b8ed6b]Rodo a aplicaçao e o relacionamento se comporta bem.. Altero as propriedade do Mestre (Que nesse caso é a tabela CUSTOMER) e clico no Delta e fica tudo bem[/b:6635b8ed6b]
:cry: :cry: :cry: :cry:
[color=darkred:6635b8ed6b][b:6635b8ed6b]O Problema é quando faço qualquer alteração no Escravo(SALES) , para atualizar , pelas biografias , deveria ser também o método
DM.ClientDataSet1.ApplyUpdates(0); , Porem quando faço isto me retorna um Erro... [/b:6635b8ed6b][/color:6635b8ed6b]
:?: :?: :?: :?: :?:
[b:6635b8ed6b]Em outras palavras não conseguo salvar dados alterados na tabela Escravo , numa estrutura Mestre -->> Detalhe ,usando o DBEXPRESS [/b:6635b8ed6b]
Alguem sabe aonde eu estou errando... :?: :?: :?: :?:
Obrigado...
Marco Salles
Posts
18/03/2006
Marco Salles
[b:7e4cacd728]Mestre Detalhes DbExpress...[/b:7e4cacd728]
Se pudessem alterar esse titulo , seria bom , por causa de alguma pesquisa no futuro
:arrow: :arrow:
Titulo errado não parece nas boas intençoes de Busca
18/03/2006
Martins
[b:472ff4bd4d]Mestre Detalhes DbExpress...[/b:472ff4bd4d]
Se pudessem alterar esse titulo , seria bom , por causa de alguma pesquisa no futuro
:arrow: :arrow:
Titulo errado não parece nas boas intençoes de Busca[/quote:472ff4bd4d]
[b:472ff4bd4d]Marco[/b:472ff4bd4d], qual é a mensagem de erro, vc poderia postá-la para nós?
valew!!!
18/03/2006
Marco Salles
[URL=http://imageshack.us][img:00d43c86aa]http://img488.imageshack.us/img488/2213/mestredetalhe6yd.png[/img:00d43c86aa][/URL]
Tento alterar Um Campo Da Tabela Detalhe
[URL=http://imageshack.us][img:00d43c86aa]http://img150.imageshack.us/img150/8044/mestredetalhe17zc.png[/img:00d43c86aa][/URL]
Dou um ApllyUpdates(0) e uma exceção é gerada:
[URL=http://imageshack.us][img:00d43c86aa]http://img224.imageshack.us/img224/4677/mestredetalhe22wf.png[/img:00d43c86aa][/URL]
E por fim , mando continuar a exceução e recebo esta mensagem :
[URL=http://imageshack.us][img:00d43c86aa]http://img224.imageshack.us/img224/6941/mestredetalhe32ku.png[/img:00d43c86aa][/URL]
Sera qiue isso tb É so comigo :cry: :cry: :cry:
Tive uma semana do Cão .. Deu tudo errado..
18/03/2006
Martins
Tentar decobrir pq essa violação.
bom fds, vc tá merecendo.
18/03/2006
Vinicius2k
Observe parte da definição da tabela SALES:
/* Check constraints definition */ ALTER TABLE SALES ADD CHECK (order_status in (´new´, ´open´, ´shipped´, ´waiting´)); ALTER TABLE SALES ADD CHECK (ship_date >= order_date OR ship_date IS NULL); ALTER TABLE SALES ADD CHECK (date_needed > order_date OR date_needed IS NULL); ALTER TABLE SALES ADD CHECK (paid in (´y´, ´n´)); ALTER TABLE SALES ADD CHECK (qty_ordered >= 1); ALTER TABLE SALES ADD CHECK (total_value >= 0); ALTER TABLE SALES ADD CHECK (discount >= 0 AND discount <= 1); ALTER TABLE SALES ADD CHECK (NOT (order_status = ´shipped´ AND ship_date IS NULL)); ALTER TABLE SALES ADD CHECK (NOT (order_status = ´shipped´ AND EXISTS (SELECT on_hold FROM customer WHERE customer.cust_no = sales.cust_no AND customer.on_hold = ´*´))); /* Primary keys definition */ ALTER TABLE SALES ADD PRIMARY KEY (PO_NUMBER); /* Foreign keys definition */ ALTER TABLE SALES ADD FOREIGN KEY (CUST_NO) REFERENCES CUSTOMER (CUST_NO); ALTER TABLE SALES ADD FOREIGN KEY (SALES_REP) REFERENCES EMPLOYEE (EMP_NO);
É normal que algumas informações no Detalhe você não consiga alterar, pois estaria violando integridade referencial ou constraints de validação. Este é o motivo do primeiro erro. Tente, por exemplo, alterar [b:2de44cd088]QTY_ORDERED[/b:2de44cd088] que você irá conseguir.
Sobre o erro [i:2de44cd088]´Unable do find record. No key specified´[/i:2de44cd088], é quase o mesmo problema que mencionei no seu [url=http://forum.clubedelphi.net/viewtopic.php?t=75031]outro tópico[/url]: configurações das [b:2de44cd088]ProviderFlags[/b:2de44cd088].
Como o UpdateMode do seu TDataSetProvider está configurado para [b:2de44cd088]upWhereKeyOnly[/b:2de44cd088], no [b:2de44cd088]SQLQuery2[/b:2de44cd088] você precisa definir ´quem é´ a chave.
Seguindo a mesma doutrina de ter execuções mais eficientes, defina ProviderFlags de [b:2de44cd088]PO_NUMBER[/b:2de44cd088] (chave primária de SALES) como [pfInUpdate, pfInWhere, pfInKey]. Para os demais TFields apenas [pfInUpdate].
Não desanime pois você está aprendendo uma das tecnologias mais interessantes presentes no Delphi: Midas. E é bom que você tenha em mente que, apesar do dbExpress quase ter forçar a trabalhar com ela -- a Midas --, ela independe da camada de acesso e pode ser utilizada com *quase* todas (quase porque, por exemplo, a ZeosDBO ainda não suporta IProvider).
Além disso, Nested DataSets não é muito fácil de ser compreendido na primeira vez.
Sugestão: estude o help do Delphi tudo que se refere a TDataSetProvider e TClientDataSet para que você realmente compreenda para que servem suas propriedades e como utilizar corretamente seus métodos.
19/03/2006
Marco Salles
[b:d7a642b165]muito obrigado por ter alertado sobre este ponto[/b:d7a642b165] ... Realmente pela definiçao se ve o que se pode mudar , o que não se pode e auqles que são limitados< são os valores permitidos pelos constraints de validação >...Obrigado mesmo
O segundo erro é uma continuaçao do primeiro , apesar de ter conatação bem diferente... Quer dizer , corrindo o primeiro , nesse caso não é uma correção , mas sim de não editar dados que não sejam permitidos , a segunda mensagem de erro , nen aparece.. Porque inicialmente o Meu UpdateMode do DataSetProvinder estava configurado para upWhereAll
[b:d7a642b165]Mas a observação sobre ter doutrina de ter execuções mais eficientes, é persistente e totalmente Recomendavel.... [/b:d7a642b165]
Esta recomendação é fundamental e uma base de distinção muito grande do DbExpress quando comparado ao Acesso feito pelo BDE
19/03/2006
Martins
Clique aqui para fazer login e interagir na Comunidade :)