dar um update na tabela 1 buscando dados da tabela 2

Delphi

02/01/2015

ola pessoal...adicionei um campo na tabela contasreceber(telefone), eu precisava atualizar este campo com os telefones de cada cliente. buscando os telefone na tabela cliente...como eu adicionei este campo, a tabela contasreceber vai ficar com este campo em branco ate q eu altere este registro, mas fica dificil eu ter q alterar 10000 registros, pois so vai aparecer para os registros novos....

aguardo a ajuda
Jose Maria

Jose Maria

Curtidas 0

Respostas

Roberto

Roberto

02/01/2015

Olá José Maria, blz?

Se eu entendi segue uma tentativa.

Na Query:
Select Codigo_Cliente, Telefone From ContasAReceber Where Telefone = '' Order By Codigo_Cliente


No Botão Atualizar
Query1.first; //inicio da query
Clientes.First; //inicio tabela de clientes
While not Query1.eof do // enquanto não for o final da query faça
begin
       If Query1.FieldByName('Codigo_Cliente').asinteger = Clientes.FieldByName('Codigo_Cliente').asinteger =  then //verifica se bate o código do cliente
        Begin
               ContasAReceber.edit; //coloca tabela em edição
               ContasAReceber.FieldByName('Telefone').asstring := Clientes.FieldByName('Telefone').asstring; //atualiza o telefone
               ContasAReceber.post; //grava alteração
               Query1.Next;  //vai para a próxima conta a receber na query.
        End
      Else // se não bateu as informações da condição IF
         Clientes.Next; //Passa para o próximo cliente 
end;


Não é a solução mais eficaz, mas funciona pelo Delphi.
Abraço
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

02/01/2015

Faz essa alteração direto no banco de dados e depois apenas ajusta as manutenções no Delphi para atender a essas alteração...

Qual é o banco de dados q a aplicação utiliza?
GOSTEI 0
Renato Rubinho

Renato Rubinho

02/01/2015

Buenas,

Segue exemplo supondo que:
- O nome da tabela de clientes seja CLIFOR e sua chave seja CLI_CODIGO
- Na sua tabela CONTASRECEBER a ligação com a tabela de clientes (CLIFOR) seja o campo CLI_CODIGO
- O nome dos campos de telefone de ambas as tabelas seja CLI_FONE.
- Configurada cláusula para apenas atualizar o campo na tabela CONTASRECEBER quando o campo estiver nulo ou em branco.

UPDATE 
CONTASRECEBER 
SET 
CLI_FONE = (SELECT 
                     CLIFOR.CLI_FONE 
                    FROM 
                     CLIFOR 
                     WHERE CLIFOR.CLI_CODIGO = CONTASRECEBER.CLI_CODIGO)
WHERE CLI_FONE IS NULL OR CLI_FONE = ''


Abraççç,
rrubinho
GOSTEI 0
Jose Maria

Jose Maria

02/01/2015

eu uso o mysql.......vou tentar aqui as dicas...qualquer coisa postarei o resultado ok....
GOSTEI 0
Jose Maria

Jose Maria

02/01/2015

obrigado a todos pela ajuda...a dica do rrubinho resolveu o problema...deu certinho...obrigadooo...
GOSTEI 0
POSTAR