Re: [delphi-br] Atualizar apenas um registro de um CDS
cara tentei com o refresh record e nao rolou. um bom exemplo pra ilustra a situação seria. tabela de cidades: id_cidade, cidade, id_estado tabela de estados id_estado, estado, uf exibicao da listagem de cidades (cidade, estado, uf) São Paulo - São Paulo - SP Nova Iguaçu - Rio de Janeiro - RJ Belo Horizonte - Minas Gerais - MG etc .. essa listagem obtenho fazendo um select nas cidades e um inner join nos estados. E marcando os campos da tabela estados como Hidden, para nao entrarem no sql de inserção, alteração e exclusao do CDS. No caso esse eh o cds CIDADES. criei um form de edição com um cds para selecionar um estado, com um parametro de entrada id_estado. No momento que dou um edit no cds_Cidades, passo o ID_Estado como parametro e abro o CDS dos estados. tudo funciona OK. Porem se por acaso eu selecionar a terceira linha, alterar o nome do estado de Minas Gerais, para MINAS, e gravar, ele faz a alteração corretamente no banco, porem como o campo ESTADO no cds CIDADES é um resultado de Join, ele soh exibirá o valor MINAS quando eu der um refresh nesse cds de CIDADES. pra fazer um teste, coloquei um botao com o comando cds_Cidades.RefreshRecord; fiz esse processo de alteração e executei esse comando, nao aconteceu nada. no processo de inserção, apos o apply, rodei o comando e dah a mensagem: record not found or changed by anothe user, conferi os dados direto no banco e estavam inseridos corretamente, alguem sabe como fazer esse refresh em apenas uma linha do cds ? vlw [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Atualizar apenas um registro de um CDS
o refreshrecord n faz isso ?? Magnun Oliveira escreveu: vlw velho, mas acho q vc nao entendeu ... o SQL tah certo, tah funcionando tudo OK. Quando abro o ClientDataSet os registros sao mostrados normalmente. Quando excluo o registro tudo OK. Quando altero o registro ou insiro um novo tudo OK tmb. Os dados sao manipulados normalmente. O que ocorre é que o ClientDataSet somente pega os o valor dos campos que fazem parte do JOIN no momento do refresh. Como no ClientDataSet usa-se ApplyUpdates, acredito que ele apenas envie o conteudo do datapacket para o servidor, nao retornando os dados, pois seria desnecessario jah que eles estao em memoria. Com isso, apos o apply, os campos do Inner ficam em branco. Se vc adicionar campo com o ID da FK, percebe-se que ele é preenchido com o valor, normalmente, porem os campos exibidos pelo JOIN soh serão atualizados no proximo refresh. 2009/10/21 Sil-jo Evsan siljoev...@gmail.com mailto:siljoevsan%40gmail.com Boa Tarde! Utilize LEFT JOIN exemplo select PRODUTOS.NOME, PRODUTOS.DESCRICAO, TIPO_PRODUTOS.TIPO from PRODUTOS left join TIPO_PRODUTOS on PRODUTOS.ID_TIPO = TIPO_PRODUTOS.ID_TIPO Abraços, 2009/10/21 Magnun Oliveira magnunolive...@gmail.com mailto:magnunoliveira%40gmail.commagnunoliveira%40gmail.com [As partes desta mensagem que não continham texto foram removidas] -- Uberdam Cavaletti Programador Delphi Formado em Tecnologia da Informação Pós-graduado em desenvolvimento Java. Professor Tópicos Especias em BD - Unoesc Xanxerê Professor Estruturas de Dados- Unoesc Xanxerê http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4251629Y0
[delphi-br] Atualizar apenas um registro de um CDS
Bom dia, tenho uma aplicação onde uso clientdataset com campos no inner join. Um bom exemplo seria uma tabela de produtos com o ID_TIPO do produto sendo exibido. select PRODUTOS.NOME, PRODUTOS.DESCRICAO, TIPO_PRODUTOS.TIPO from PRODUTOS inner join TIPO_PRODUTOS on PRODUTOS.ID_TIPO = TIPO_PRODUTOS.ID_TIPO etc .. etc... fiz as ligações, defini como Hidden o Campo TIPO, fiz inserções, alterações e exclusões, tudo funcionando OK. A ideia é nao usar lookup, pois tem varios campos alem desse TIPO entao decidi fazer assim, com inner. O problema é que os valores dos campos do Inner, somente são preenchidos apos o refresh. Se eu inserir um novo produto o campo tipo ficará em branco, enquanto eu nao der um refresh no CDS. A principio penso que um refresh sempre apos uma inclusao ou alteracao nesses campos, seria ruim, pois cairia drasticamente o tempo de resposta em um ambiente de rede. Alguem jah passou por isso e tem uma solucao ? vlw. [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Atualizar apenas um registro de um CDS
Boa Tarde! Utilize LEFT JOIN exemplo select PRODUTOS.NOME, PRODUTOS.DESCRICAO, TIPO_PRODUTOS.TIPO from PRODUTOS left join TIPO_PRODUTOS on PRODUTOS.ID_TIPO = TIPO_PRODUTOS.ID_TIPO Abraços, 2009/10/21 Magnun Oliveira magnunolive...@gmail.com Bom dia, tenho uma aplicação onde uso clientdataset com campos no inner join. Um bom exemplo seria uma tabela de produtos com o ID_TIPO do produto sendo exibido. select PRODUTOS.NOME, PRODUTOS.DESCRICAO, TIPO_PRODUTOS.TIPO from PRODUTOS inner join TIPO_PRODUTOS on PRODUTOS.ID_TIPO = TIPO_PRODUTOS.ID_TIPO etc .. etc... fiz as ligações, defini como Hidden o Campo TIPO, fiz inserções, alterações e exclusões, tudo funcionando OK. A ideia é nao usar lookup, pois tem varios campos alem desse TIPO entao decidi fazer assim, com inner. O problema é que os valores dos campos do Inner, somente são preenchidos apos o refresh. Se eu inserir um novo produto o campo tipo ficará em branco, enquanto eu nao der um refresh no CDS. A principio penso que um refresh sempre apos uma inclusao ou alteracao nesses campos, seria ruim, pois cairia drasticamente o tempo de resposta em um ambiente de rede. Alguem jah passou por isso e tem uma solucao ? vlw. [As partes desta mensagem que não continham texto foram removidas] -- Sil-jo Evsan Jedi Knight/System Analyst/Developer Remember... the force will be with you, always! [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Atualizar apenas um registro de um CDS
vlw velho, mas acho q vc nao entendeu ... o SQL tah certo, tah funcionando tudo OK. Quando abro o ClientDataSet os registros sao mostrados normalmente. Quando excluo o registro tudo OK. Quando altero o registro ou insiro um novo tudo OK tmb. Os dados sao manipulados normalmente. O que ocorre é que o ClientDataSet somente pega os o valor dos campos que fazem parte do JOIN no momento do refresh. Como no ClientDataSet usa-se ApplyUpdates, acredito que ele apenas envie o conteudo do datapacket para o servidor, nao retornando os dados, pois seria desnecessario jah que eles estao em memoria. Com isso, apos o apply, os campos do Inner ficam em branco. Se vc adicionar campo com o ID da FK, percebe-se que ele é preenchido com o valor, normalmente, porem os campos exibidos pelo JOIN soh serão atualizados no proximo refresh. 2009/10/21 Sil-jo Evsan siljoev...@gmail.com Boa Tarde! Utilize LEFT JOIN exemplo select PRODUTOS.NOME, PRODUTOS.DESCRICAO, TIPO_PRODUTOS.TIPO from PRODUTOS left join TIPO_PRODUTOS on PRODUTOS.ID_TIPO = TIPO_PRODUTOS.ID_TIPO Abraços, 2009/10/21 Magnun Oliveira magnunolive...@gmail.commagnunoliveira%40gmail.com [As partes desta mensagem que não continham texto foram removidas]