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

13/09/2004

0

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.


Marcio_soares

Marcio_soares

Responder

Posts

13/09/2004

Dataclass

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!


Responder

13/09/2004

Marcio_soares

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.


Responder

13/09/2004

Marcio_soares

Sobe..


Responder

13/09/2004

Gandalf.nho

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;


Responder

13/09/2004

Marcio_soares

Ok, irei testar hoje à noite.

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

Por enquanto, obrigado.


Responder

14/09/2004

Marcio_soares

Pessoal,

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

[b:5367f4f704][b]procedure TFORMRecusados.BitBtn1Click(Sender: TObject):[/b:5367f4f704]
begin[/b]
Table1.[b:5367f4f704]first[/b:5367f4f704];
Table2.[b:5367f4f704]first[/b:5367f4f704];
...[b:5367f4f704]while not [/b:5367f4f704]Table1.eof do
.......[b:5367f4f704]begin[/b:5367f4f704]
..........[b:5367f4f704]while not [/b:5367f4f704]Table2.eof do
..............[b:5367f4f704]begin[/b:5367f4f704]
..................Table2.[b:5367f4f704]Edit[/b:5367f4f704];
..................[b:5367f4f704]If [/b:5367f4f704]Table1NOME.value = Table2NOME.value [b:5367f4f704]then
[/b:5367f4f704]
..................Table2CODIGO.value := Table1CODIGO.value;
..................Table2.[b:5367f4f704]post[/b:5367f4f704];
..................Table2.[b:5367f4f704]next;[/b:5367f4f704]
..............[b:5367f4f704]end[/b:5367f4f704];
.......Table1.next;
.......[b:5367f4f704]end[/b:5367f4f704];
[b:5367f4f704]end[/b:5367f4f704];
[b:5367f4f704]end[/b:5367f4f704].

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.


Responder

14/09/2004

Rômulo Barros

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



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


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar