Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com Laço Multiplo


Leo Baiano

Pergunta

PessoALL,

Estou com um problema que espero possam me ajudar.

Me passaram um banco de dados ACCESS já com registros só para eu trabalhar relatorios. Tenho que fazer isso o mais breve possivel e estou com um problema.

O problema esta em duas tabelas, uma chamada pesq (cadastro pesquisadores) e a outra chamada prod_b (produção destes pesquisadores.

Na tabela pesquisadores tem um campo chamado area (area de atuação do pesquisador), a tabela de produção também deveria ter esse campo pois cada produção tem sua área de aplicação.

Bom, eu criei o campo area na tabela produção e agora preciso colocar a área de cada uma delas. É muito registro e pensei em automatizar o serviço, e ai é que estou com problemas, vejam o que pensei fazer.

Criei uma página ASP onde eu seto rs e rs1 para cada uma das tabelas. Depois eu abro um laço da tabela pesq

----- LAÇO DA TABELA PESQ -----

if not rs1.eof then

while not rs1.eof

------ FECHA --------

e dentro do laço eu pego o valor da ID e AREA do pesquisador e coloco nas variaveis IDPESQ e PESQAREA.

Depois abro o laço da tabela prod_b

----- LAÇO DA TABELA PROD_B -----

if not rs.eof then

while not rs.eof

------ FECHA --------

Onde pego o valor do campo ID_PESQ (que é igual a ID do pesquisador).

Na tabela PROD_B existem bem mais registros do que na tabela PESQ pois cada pesquisador pode ter várias produções e as produções estão ligadas ao pesquisador pelos campos ID (tabela pesq) e ID_PESQ (tabela prod_b).

Depois de pegar a variavel ID_PESQ eu faço o update dos registros da tabela prod_b colocando o valor da variavel PESQAREA (area do pesquisador que peguei na tabela pesq) no campo AREA (da tabela prod_b) onde o ID_PESQ for igual a ID do pesquisador o qual peguei a area desta forma:

db.Execute("update prod_b set area='"&pesqarea&"' where id_pesq="&idpesq&"")

Então fecho o laço da tabela PROD_B e em seguida fecho o laço da tabela PESQ assim:

rs.Movenext

wend

end if

rs1.Movenext

wend

end if

A idieá é que o sistema leria as variaveis do primeiro registro da tabela pesq e gravaria a ID do pesquisador e AREA numa variavel, depois ele iria para a tabela PROD_B onde leria compararia os campos ID_PESQ com a variavel ID escrevendo a variavel PESQAREA no campo AREA daqueles registros que fossem iguais. Ao terminar de fazer esta operação em todos os registros com ID igual ele passaria para o proximo registro da tabela PESQ e repetiria o processo.

Em teoria esta tudo ok mas quando rodo o sistema ele faz isso apenas com o primeiro pesquisador, ele grava o valor da area do pesquisador no campo area na tabela prod_b mas faz isso só nas produções do primeiro pesquisador.

Segue o código completo.

-------------

<!-- #include file=conexao.asp -->

<%

Set rs = Server.CreateObject( "ADODB.Recordset" )

rs.ActiveConnection = db

rs.open "SELECT * FROM prod_b"

Set rs1 = Server.CreateObject( "ADODB.Recordset" )

rs1.ActiveConnection = db

rs1.open "SELECT * FROM pesq"

if not rs1.eof then

while not rs1.eof

idpesq = rs1("id")

pesqarea = rs1("area")

if not rs.eof then

while not rs.eof

idprod = rs("id_pesq")

db.Execute("update prod_b set area='"&pesqarea&"' where id_pesq="&idpesq&"")

rs.Movenext

wend

end if

rs1.Movenext

wend

end if

Obrigado a todos.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu não entendi porque você fez 2 loops.... a logica seria assim:

-> loop da tabela pesq

-> atualiza conforme uma FK

exemplo pratico:

while not rs1.eof

idprod = rs("id_pesq")
db.Execute("update prod_b set area='"&pesqarea&"' where id_pesq="&idpesq&"")
rs1.Movenext
wend

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...