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&"")
Pergunta
Leo Baiano
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
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.