Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

shumi

pra resolver Loop

Recommended Posts

Pessoal,

Peço a ajuda de vcs para que consiga resolver esse código, abri outro tópico, pois uma vez o Mario me falou que quando um tópico esta muito grande fica + dificil das pessoas ajudarem, pois teriam que ler ele inteiro então para maior concentração de força abri esse tópico.

Preciso muito da ajuda de vcs para resolver esse script, tentei no fim de semana, na sexta o dia todo e na quinta tb e não consigo sozinho.

 

Meu problema é o seguinte tenho um sistema que estou desenvolvendo e preciso puxar o relatorio do que esta no banco de dados e é separado por data e por produto e cada dia conforme o produto tem um preço.

 

vejam meu script sei que é simples para muitos de vcs.

 

<%cod = Request.Form("cod")estabelecimento = Request.Form("estabelecimento")uf = Request.Form("uf")Sql="Select distinct(data) From preco_nosso where campanha='"&cod&"' and estabelecimento='"&estabelecimento&"'"Set rs=Conexcao.Execute(Sql)Sql1= "Select distinct (produto) From preco_nosso where campanha='"&cod&"' and estabelecimento='"&estabelecimento&"'"Set rs1 = Conexcao.Execute(Sql1)Sql2="Select * from preco_nosso where produto='"&rs1("produto")&"' and data='"&rs("data")&"' and estabelecimento='"&estabelecimento&"' and campanha='"&cod&"'"Set rs2 = Conexcao.execute(Sql2)%><center><table width="200" border="1">  <tr>	<td> </td>	<%while not rs.EOF%>	<td><%=rs("data")%></td>	<%rs.MoveNext	Wend%>  </tr><%while not rs2.EOF%><%while not rs1.EOF%>  <tr>	<td><%response.write("<td>" & rs1("produto") & "</td> <td>" & rs2("preco") & "</td>")%></td>  </tr><%rs1.MoveNextwend%><%rs2.MoveNextwend%></table><%Set rs=NothingSet rs1=NothingSet rs2=NothingConexcao.Close%></center>

Preciso muito da ajuda do Imasters agora, pois é o unico lugar que tenho pra recorrer e confio muito no forum e em muitos de vcs.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas,Os produtos e as datas aparecem certinho, mas o valor dos produtos não.Se eu deixo como distinct(produto) vem o valor 10.00 para todos os produtos e se eu tiro o distonct(produto) vem o valor 1.00 para todos os produtos...Já não sei mais o que tentar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae shumi, não analisei direito ainda, mas pelo que eu ví, acho que o sql2 deve estar DENTRO do loop do sql1.Com um JOIN de sql você consegue fazer isso sem precisar de 2 sql's. Vou dar uma estudada aqui e ver o que consigo, se eu conseguir algo eu posto aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puts... Lá estava eu tentando entender seu código quando vejo que você não precisará de complicação pois as pesquisas são feitas em APENAS 1 TABELA. Portanto (se eu tiver entendido certo) você só precisará de 1 sql.

 

Outra questão é que parece que você quer que os dados apareçam horizontalmente em sequencia (ao contrário do que todos fazem que é exibir um produto abaixo do outro, você quer exibir um produto ao lado do outro).

 

Refiz seu script, corrigi alguns erros e postei aqui. Veja se é isso que você quer:

 

<%cod = Request.Form("cod")estabelecimento = Request.Form("estabelecimento")uf = Request.Form("uf")Sql="SELECT * FROM preco_nosso WHERE campanha='" & cod & "' AND estabelecimento='" & estabelecimento & "'"Set rs = Conexcao.execute(Sql)%><center><table width="200" border="1">  <tr>	<td> </td><%   while not rs.EOF%>	<td><%=rs("data")%></td><%   rs.MoveNext   Wend%>  </tr><%  rs.moveFirst  while not rs.EOF%>  <tr>	<td><%= rs("produto") %></td><td><%= rs("preco") %></td>  </tr><%  rs.MoveNext  wend%></table></center><%Set rs=NothingConexcao.Close%>
Se não for isso, explique:

1) quais são suas tabelas e dados

2) que dados você quer que apareça

3) como você quer que apareçam esses dados.

 

té mais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas,

A tela que tenho que apresentar seria assim:

 

http://www.newstyle1.com/sis/tela_.jpg

 

Micox,

A posição dos loops já tentei mudar de vários jeitos, mas não consigo fazer funfar e a função Join eu não sei usar e o pior de tudo fui pesquisar no google aqui na empresa e a palavra Join é bloqueada aqui... :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

palavra Join é bloqueada aqui

haheahe. isso é o cúmulo do bloqueio. heuuaehVendo sua figura fica mais fácil... Vou ver o que posso fazer daqui.editado: Pelo que eu to vendo da sua figura, provavelmente não é apenas 1 tabela não... Posta aí comé que tão organizados os dados pragente saber.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Micox,O Script que você me passou esta quase certinho, mas ao inves de aparecer o preço conforme a data, aparece o produto um embaixo do outro e quando o preço é outro o produto se repete.Produto 1 1,00Produto 2 2,00Produto 1 1,50Produto 4 2,00Produto 1 1,60Produto 6 3,00Produto 7 4,00e fica na mesma data...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Script que você me passou esta quase certinho, mas ao inves de aparecer o preço conforme a data, aparece o produto um embaixo do outro e quando o preço é outro o produto se repete.

Isso porque você não passou para agente comé que tá organizado seu banco de dados. Informa aí que fica facim de resolver.Informa os campos, tabelas, etc..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum.. dessa forma que tá fica meio difícl de fazer a tabela do jeito que você quer. Fiz um código aqui que ordena os produtos do jeito que você quer. Agora é só adaptar ele aí... (não testei pois to sem IIS)

 

sql = "SELECT produto,data,preco FROM tabela GROUP BY produto"prod_atual = ""<table><tr><%if rs("produto")<>prod_atual then  'é outro produto que não o anterior então abrirei nova linha  Response.write "</tr>" 'fechando a linha anterior da tabela  Response.write "<tr><td>" & rs("produto") & " </td>"  Response.write "<td>" & rs("preco") & " </td>" 'exibindo o preco deste produto  prod_atual = rs("produto")else  'é o mesmo produto, então eu só adiciono preço na tabela  Response.write "<td>" & rs("preco") & " </td>end if%></tr></table>

Qualquer erro, avisa ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Micox só apareceu um produto e o preço dele e não apareceu a data!Agora seria só fazer um loop ou tenho que adaptar algo para a data???

Compartilhar este post


Link para o post
Compartilhar em outros sites

hahahe. uai rapá. eu tb sou humano e erro.hehe .olhando meu código lá, claramente deu pra perceber que eu 'esqueci' de colocar o while o moveNExt e de executar a sql no banco. Corrige aí...heheh

Compartilhar este post


Link para o post
Compartilhar em outros sites

Micox,Meu Script esta assim:

<%Set Conexcao = Server.CreateObject("ADODB.Connection")Conexcao.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("dbsistema.mdb"))If NOT (Session("logado")) ThenResponse.Redirect "index.asp"Response.EndEnd Ifcod = Request.Form("cod")estabelecimento = Request.Form("estabelecimento")uf = Request.Form("uf")'Sql ="SELECT * From preco_nosso WHERE campanha='" & cod & "' AND estabelecimento='" & estabelecimento & "'"sql = "SELECT produto,data,preco FROM preco_nosso" 'GROUP BY produto"prod_atual = ""Set rs = Conexcao.execute(Sql)%><table><tr><%While not rs.EOFif rs("produto")<>prod_atual then  'é outro produto que não o anterior então abrirei nova linha  Response.write "</tr>" 'fechando a linha anterior da tabela  Response.write "<tr><td>" & rs("produto") & " </td>"  Response.write "<td>" & rs("preco") & " </td>" 'exibindo o preco deste produto  prod_atual = rs("produto")else  'é o mesmo produto, então eu só adiciono preço na tabela  Response.write "<td>" & rs("preco") & " </td>"end ifrs.MoveNextWend%></tr></table></center><%Set rs=NothingConexcao.Close%>
e o relatorio foi exibido assim:

Produto 1 1.00 Produto 2 2.00 Produto 3 3.00 Produto 4 4.00 Produto 5 5.00 Produto 6 6.00 Produto 7 7.00 Produto 8 8.00 Produto 9 9.00 Produto 10 10.00 Produto 11 11.00 Produto 12 12.00 Produto 13 13.00 Produto 14 14.00 Produto 15 15.00 Produto 16 16.00 Produto 17 17.00 Produto 18 18.00 Produto 19 19.00 Produto 1 1.50 Produto 2 2.50 Produto 3 3.50 Produto 4 4.50 Produto 5 5.50 Produto 6 6.50 Produto 7 7.50 Produto 8 8.50 Produto 9 9.50 Produto 10 10.50 Produto 11 11.50 Produto 12 12.50 Produto 13 13.50 Produto 14 14.50 Produto 15 15.50 Produto 16 16.50 Produto 17 17.50 Produto 18 18.50 Produto 19 19.50

:blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acrescente na SQL um "ORDER By produto, data;"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado!

Deu certo carinha!!!!

So falta a data mandei escrever a data com o response.write(rs("data")) e veio só o dia 04/Abril/2006 e tenho cadastrado do dia 04/Abril/2006 e dia 05/Abril/2006.

Como que posso colocar a data em cima dos preço? que fique ordenado certinho???

 

Abraços.

 

Se quiser ver meu script

 

<%Set Conexcao = Server.CreateObject("ADODB.Connection")Conexcao.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("dbsistema.mdb"))If NOT (Session("logado")) ThenResponse.Redirect "index.asp"Response.EndEnd Ifcod = Request.Form("cod")estabelecimento = Request.Form("estabelecimento")uf = Request.Form("uf")'Sql ="SELECT * From preco_nosso WHERE campanha='" & cod & "' AND estabelecimento='" & estabelecimento & "'"sql = "SELECT produto,data,preco FROM preco_nosso ORDER By produto, data;"Set rs = Conexcao.execute(Sql)prod_atual = ""%><table><tr><%While not rs.EOFif rs("produto")<>prod_atual thenprod_atual = rs("produto")  'é outro produto que não o anterior então abrirei nova linha  Response.write "</tr>" 'fechando a linha anterior da tabela  Response.write "<tr><td>" & rs("produto") & " </td>"  Response.write "<td>" & rs("preco") & " </td>" 'exibindo o preco deste produto  else  'é o mesmo produto, então eu só adiciono preço na tabela  Response.write "<td>" & rs("preco") & " </td>"end ifrs.MoveNextWend%></tr></table></center><%Set rs=NothingConexcao.Close%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu coloco um response.write antes do if assim:

<%While not rs.EOFResponse.write("<tr><td>"& rs("data") &"</td></tr>")if rs("produto")<>prod_atual thenprod_atual = rs("produto")  'é outro produto que não o anterior então abrirei nova linha  Response.write "</tr>" 'fechando a linha anterior da tabela  Response.write "<tr><td>" & rs("produto") & " </td>"  Response.write "<td>" & rs("preco") & " </td>" 'exibindo o preco deste produto  else  'é o mesmo produto, então eu só adiciono preço na tabela  Response.write "<td>" & rs("preco") & " </td>"end ifrs.MoveNextWend%>
O resultado que me retorna é esse em todos os produtos, fica a data embaixo o produto e um valor e depois outra data e embaixo outro valor!

04/Abril/2006 Produto 10 10.00 05/Abril/2006 10.50

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essas datas são iguais e aparecem em todos os registros dos produtos?

Se sim você terá que fazer um pequeno laço antes de exibir o 1º produto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim aparece em todos os registros a data.Que laço? o Split???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que tão resolvendo por ai... Ainda bem, porque minha net tá uma porcaria.Pra exibir as datas como cabeçalhos da tabela acho (acho) que a melhor forma será você realmente fazer um outro sql acima das linhas dos produtos.Vou deixar voces cuidarem por aí... té mais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testa com esse código:

<%
Set Conexcao = Server.CreateObject("ADODB.Connection")
Conexcao.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("dbsistema.mdb"))

If NOT (Session("logado")) Then
Response.Redirect "index.asp"
Response.End
End If

cod = Request.Form("cod")
estabelecimento = Request.Form("estabelecimento")
uf = Request.Form("uf")

'Sql ="SELECT * From preco_nosso WHERE campanha='" & cod & "' AND estabelecimento='" & estabelecimento & "'"
sql = "SELECT produto,data,preco FROM preco_nosso ORDER By produto, data;"
Set rs = Conexcao.execute(Sql)
prod_atual = ""
%>
<table>
<tr><td>PRODUTOS</td>
<%If not RS.EOF Then
Prod_Atual = RS("Produto")
While RS("Produto") = Prod_Atual
%><td><%=rs("Data")%></td>
<%RS.MoveNext
If Not RS.EOF Then
Prod_Atual = RS("Produto")
Else
Prod_Atual = ""
End If
Wend
Prod_Atual = ""
RS.MoveFirst
End If%>
</tr>
<tr>
<%
While not rs.EOF
if rs("produto")<>prod_atual then
prod_atual = rs("produto")
 'é outro produto que não o anterior então abrirei nova linha
 Response.write "</tr>" 'fechando a linha anterior da tabela
 Response.write "<tr><td>" & rs("produto") & " </td>"
 Response.write "<td>" & rs("preco") & " </td>" 'exibindo o preco deste produto
 else
 'é o mesmo produto, então eu só adiciono preço na tabela
 Response.write "<td>" & rs("preco") & " </td>"
end if
rs.MoveNext
Wend
%>
</tr>
</table>

</center>
<%
Set rs=Nothing
Conexcao.Close
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.