Array
(
)

Substituição de valores de campos em 2 tabelas (Paradox)

Marcio_soares
   - 13 set 2004

Olá pessoal,

Tenho duas tabelas em paradox:
Table1:
CODIGO............N
NOME................A....50

Table2:
CODIGO............N
NOME................A....50
DATA_NASC......D
CONJUGE..........A....50

Abri um form, inseri duas tables, um BitBtn e gostaria que, ao clicar no botão, ocorra a seguinte alteração na table2:

Alterar o Código da Table2 caso o nome seja igual ao da Table1, independente qual código esteja cadastrado na Table2.

Exemplo: Digamos que na Table1 tenha:
95551 JOAO DA SILVA
95552 JOSE GERALDO
95553 MARIA APARECIDA

Caso haja um JOAO DA SILVA na Table2, o código do JOAO DA SILVA na Table2 altere para 95551.

Caso haja um JOSE GERALDO na Table2, o código de JOSE GERALDO na Table2 altere para 95552.

E assim sussessivamente, até o final da table1. O objetivo é alterar todos os códigos da Table2 com os da Table1 desde que os nomes sejam iguais. Talvez um comando While resolva, mas já quebrei a cabeça e não consegui.

Agradeço a quem puder ajudar, obrigado.


Dataclass
   - 13 set 2004

Olá!

Olha você vai ter que fazer um ´loop´ percorrendo todos os registros da Table2.Neste loop você pega e verifica se o cara existe na Table1 ,caso exista é só fazer um UPDATE na Table2 usando o codigo encontrado na Table1.

Se tiver bronca implementando é só falar que quando tiver 5 minutos livres agente desenrola!

Abraço!


Marcio_soares
   - 13 set 2004

DataClass, fiz o seguinte código:

Table1.first;
begin
While not Table2.eof do
begin
If Table1NOME = Table2NOME;
Table2CODIGO := TABLE1CODIGO;
end;
Table1.next;
end;

Mas não deu certo, onde errei?
Obrigado.


Marcio_soares
   - 13 set 2004

Sobe..


Gandalf.nho
   - 13 set 2004

Faça assim:

Table1.first;
While not Table2.eof do
begin
If Table1NOME.Value = Table2NOME.Value then
begin
Table2.Edit;
Table2CODIGO.Value := TABLE1CODIGO.Value;
Table2.Post;
end;
end;
Table1.next;


Marcio_soares
   - 13 set 2004

Ok, irei testar hoje à noite.

Se alguém tiver mais idéias, por favor, me ajude.

Por enquanto, obrigado.


Marcio_soares
   - 14 set 2004

Pessoal,

Ontem à noite, voltei a mexer no sistema, refiz a rotina, conforme abaixo:

procedure TFORMRecusados.BitBtn1Click(Sender: TObject):
begin
Table1.first;
Table2.first;
...while not Table1.eof do
.......begin
..........while not Table2.eof do
..............begin
..................Table2.Edit;
..................If Table1NOME.value = Table2NOME.value then

..................Table2CODIGO.value := Table1CODIGO.value;
..................Table2.post;
..................Table2.next;
..............end;
.......Table1.next;
.......end;
end;
end.

Ocorreu o seguinte:
Está lendo somente o primeiro registro da Table1 e alterando o código correspondente na Table2.
Não está lendo os demais registros da Table1.
O que falta para que seja efetuada a leitura de todos os registros na Table1?

Aguardo resposta, obrigado.

gandalf.nho obrigado por sua ajuda, pois foi imprescindível para estar dando certo.


Rômulo Barros
   - 14 set 2004

#Código

UPDATE TABLE2 SET CODIGO = (
SELECT T1.CODIGO FROM TABLE1 T1
WHERE T1.NOME = NOME
)



:wink: :wink: :wink: :wink: