Ir para conteúdo

POWERED BY:

Arquivado

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

shumi

Relatório

Recommended Posts

Concerteza aprendi bastante!

 

Mano só me da mais um help, eu fiz as alterações e execultei o script e todas as vezes que execultei deu aquele erro que atingiu o tempo limite, e o conteudo apareceu quase certo. (pelo que apareceu com o erro)

 

veja como esta

<%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")Sql3="Select distinct(data) From preco_nosso"Set rs3=Conexcao.Execute(Sql3)Sql4= "Select Distinct(produto) From preco_nosso"Set rs4 = Conexcao.Execute(Sql4)'Sql6="Select * From preco_nosso where estabelecimento='"&estabelecimento&"' and campanha='"&cod&"' and produto='"&rs4("produto")&"' and data='"&rs3("data")&"'"'SET rs6=Conexcao.Execute(Sql6) %><table> <tr><td> </td><%do while NOT rs3.EOF%><td><%=rs3("data")%> </td><%rs3.MoveNextloop%></tr><%do while NOT rs4.EOF%><tr><td><%=rs4("produto")%></td><%' NESTE PONTO QUE ESTA O X DA QUESTÃO, você VAI FAZER UM LOOPING NAS DATAS NOVAMENTE' ENTAUM você VAI TER A DATA E O PRODUTO, AI você VAI FAZER UM SELECT, E EXIBIR O PRECO ESPECIFICOSet rs3=Conexcao.Execute(Sql3)do while NOT rs3.EOFSql6="Select * From preco_nosso where estabelecimento='"&estabelecimento&"' and campanha='"&cod&"' and produto='"&rs4("produto")&"' and data='"&rs3("data")&"'"SET rs6 = Conexcao.Execute(Sql6) if rs6.EOF thenresponse.write("<td> SQL ERRADO, PQ NAUM RETORNOU NENHUM REGISTRO!!</td>") elseresponse.write ("<td>" & rs6("preco") & "</td>") end ifrs6.MoveNextloop%></tr><%rs4.MoveNextloop%></table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, deve ter bastante registro nessa tabela neh???!!no inicio do seu codigo coloca isso akiserver.ScriptTimeout = 9999999se der ScriptTimeout dnovo ai fudeu hehehehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou colocar, mas não tem muito registro não!Tem 19 produto e 2 dias e os preços desses 19 produtos

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tb pode tirar este IF akiif rs6.EOF thenresponse.write("<td> SQL ERRADO, PQ NAUM RETORNOU NENHUM REGISTRO!!</td>") elseend ifcoloca direto este response.write ("<td>" & rs6("preco") & "</td>") eh uma processo a menos, e tb pode fazer o seguintesempre que um looping for terminadotipo assimSET rs=conn.execute(sql)do while NOT rs.EOF rs.movenextloopSET rs = nothing --> Desalocar o recordset da memoriae eh claro sempre fechar a conexao no finalconn.close --> no meu caso conn eh a conexao!outra dica de performance:-->>parece q você esta ligando tabelas tipo por varchar, você tem que ligar as tabelas por IDs, talvez por isso q haja essa baixa performance!!beleza??!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ratu,Fiz as alterações e agora que entendi o pq que eu tenho que fazer o Set rs = nothingValeuVeja como ficou.

<%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 Ifserver.ScriptTimeout = 9999999cod = Request.Form("cod")estabelecimento = Request.Form("estabelecimento")uf = Request.Form("uf")Sql3="Select distinct(data) From preco_nosso where estabelecimento='"&estabelecimento&"' and campanha='"&cod&"'"Set rs3=Conexcao.Execute(Sql3)Sql4= "Select Distinct(produto) From preco_nosso where estabelecimento='"&estabelecimento&"' and campanha='"&cod&"'"Set rs4 = Conexcao.Execute(Sql4)'Sql6="Select * From preco_nosso where estabelecimento='"&estabelecimento&"' and campanha='"&cod&"' and produto='"&rs4("produto")&"' and data='"&rs3("data")&"'"'SET rs6=Conexcao.Execute(Sql6) %><table> <tr><td> </td><%do while NOT rs3.EOF%><td><%=rs3("data")%> </td><%rs3.MoveNextloop%></tr><%do while NOT rs4.EOF%><tr><td><%=rs4("produto")%></td><%Set rs3=Conexcao.Execute(Sql3)do while NOT rs3.EOFSql6="Select * From preco_nosso where produto='"&rs4("produto")&"' and data='"&rs3("data")&"'"SET rs6 = Conexcao.Execute(Sql6) do while not rs6.EOFresponse.write ("<td>" & rs6("preco") & "</td>") rs6.MoveNextloop%></tr><%rs4.MoveNextloop%></table><%Set rs4 = nothingSet rs3 = nothingSet rs6 = nothingConexcao.close%>
Mas deu erro no loopacho que fiz alguma merd*veja o erro:

Erro de compilação do Microsoft VBScript erro '800a03fb' 'Loop' esperado /sis/relatorio_acoes_lojas_.asp, line 67

a linha 67 e a da conecao...Conexcao.close%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

a linha 67 e a da conecao...Conexcao.close%>entaum tira ela... vai entender...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ratu,To deixando você estressado né mano!Tava dando erro na linha 67(Conexcao.close%>)ai tirei a linha e deu erro na linha 66(Set rs6 = nothing)ai tirei deu erro na de cima, ai tirei deu na de cima. e foi indo....Não é problema em nenhum loop não???

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara realmente esta faltando um loop, reveja o codigo q eu te mandei e compare com o seurs3.movenextloop eh oq esta faltando, repare bem!** DESTE JEITO NÓS VAMOS QUEBRAR O RECORDE DE PAGINAS SOBRE UM UNICO TOPICO! rsrsrsr

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ratu,

Cara pensei a noite inteira nesse script, sonhei com ele e tudo mais...

Ai tentei remontar ele para ver se conseguia e ao inves do do while not e loop eu usei while not var.EOF e wend, não sei qual é a diferença, mas eu sempre uso o while not e wend.

 

veja como ficou.

 

<%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 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 data='"&rs("data")&"' and produto='"&rs1("produto")&"'"Set rs2 = Conexcao.execute(Sql2)%><!-- #include file="include/topo.asp"--><p>  <style type="text/css"><!--body {	background-color: #FFFFFF;	}	.texto10 {	font-family: Arial, Helvetica, sans-serif;	font-size: 10px;	color: #464646;}	.texto11 {	font-family:Arial, Helvetica, sans-serif;	font-size:13px;	color: #464646;	}	.texto12 {	font-family:Arial, Helvetica, sans-serif;	font-size:10px;	color: #FFFFFF;	}--></style><center><table width="200" border="1">  <tr>	<td> </td><%while not rs.Eof%>	<td><span class="texto10"><%=rs("data")%></span></td><%rs.MoveNextWend%>  </tr><%while not rs1.EOF%>  <tr>	<td><span class="texto10"><%=rs1("produto")%></td><%rs1.MoveNextWend%><%while not rs2.EOF%><%response.Write("<td><span class='texto10'>" & rs2("preco") & "</span></td>")%><%rs2.MoveNextWend%>  </tr></table></center>

 

ai apareceu as datas na horizontal e os produtos na vertinal, mas o miolo apareceu somente um preço de um produto!

Troquei esse script ao inves daquele, pois toda hora tava esgotando o tempo limite mesmo colocando o valor 9999999...

Me ajuda a dar uma arrumada nele agora!por favor!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai tentei remontar ele para ver se conseguia e ao inves do do while not e loop eu usei while not var.EOF e wend, não sei qual é a diferença, mas eu sempre uso o while not e wend.

Cara naum há diferença alguma mesmo, a unica diferenca, e que se por algum motivo você tenha q sair do loop, com o Do While você pode dar um Exit do, q ele para a execucao do loop. mas com relação a performance, são iguais(pelo menos eu acho), para testar, naum eh preciso eu ver seu codigo, você soh precisa trocar aonde esta loop para wend, e onde esta do while, deixar soh o while!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ratu,

Entendi o wend e loop e do while e while.

Mas aquele script que você me passou eu tinha feito alguma coisa errada, pois ele tava esgotando o tempo limite então não dava pra ve se os preço de cada produto estava certo...

Mas agora eu entendi como tenho que fazer e refiz o script agora parou de esgotar o tempo, mas na hora de exibir os preço exibe para todos os produtos o mesmo preço...

 

Veja como esta, por favor.

<%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 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 data='"&rs("data")&"' and produto='"&rs1("produto")&"'"Set rs2 = Conexcao.execute(Sql2)%><center><table width="200" border="1">  <tr>	<td> </td><%while not rs2.EOF%><%while not rs.Eof%>	<td><span class="texto10"><%=rs("data")%></span></td><%rs.MoveNextWend%>  </tr><%while not rs1.EOF%>  <tr>	<td><span class="texto10"><%=rs1("produto")%></td><%response.Write("<td><span class='texto10'>" & rs2("preco") & "</span></td>")%>  </tr>  <%rs1.MoveNextwend%><%rs2.MoveNextwend%></table><%Set rs=NothingSet rs1=NothingSet rs2=NothingConexcao.Close%></center>

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, naum esta + dando timeout e soh esta selecionando sempre o mesmo preco!!!pq você tiro o looping das datas que estava dentro do looping dos produtos, eh soh tendo estes loopings, você consegue colocar a sql com os filtros necessarios para obter o resultado!!!Nesta parte, pense bem, você soh esta selecionando, sho um produto mesmo, repare bem...<%while not rs1.EOF%> <tr> <td><span class="texto10"><%=rs1("produto")%></td><%response.Write("<td><span class='texto10'>" & rs2("preco") & "</span></td>")%> </tr> <%rs1.MoveNextwend%>Do jeito q eu te mandei esta certo... mas tem este problema de timeout... naum sei como resolver...:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ratu,eu descobri pq não dá certo, só aparece apenas 1 valor para o preco.Fiz vários teste e só retorna 1 valor de precoTemos 3 SQL né!

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)

A que seleciona o preco é essa

Sql2="Select * from preco_nosso where produto='"&rs1("produto")&"' and data='"&rs("data")&"' and estabelecimento='"&estabelecimento&"' and campanha='"&cod&"'"Set rs2 = Conexcao.execute(Sql2)

e se nessa:

Sql1= "Select distinct (produto) From preco_nosso where campanha='"&cod&"' and estabelecimento='"&estabelecimento&"'"Set rs1 = Conexcao.Execute(Sql1)

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...Esses valores estão cadastrados no meu bd, mas não aparece o resto dos meus valores...eu fiz um teste nas Sqls separadas e todos me retornaram os valores todos cadastrados no banco, exeto a ultima Sql que é essa:

Sql2="Select * from preco_nosso where produto='"&rs1("produto")&"' and data='"&rs("data")&"' and estabelecimento='"&estabelecimento&"' and campanha='"&cod&"'"Set rs2 = Conexcao.execute(Sql2)

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou te explicar novamente:com este select aqui você seleciona o preco certo?Sql2="Select * from preco_nosso where produto='"&rs1("produto")&"' and data='"&rs("data")&"' and estabelecimento='"&estabelecimento&"' and campanha='"&cod&"'"Set rs2 = Conexcao.execute(Sql2)mas esta parte aqui where produto='"&rs1("produto")&"' seleciona o preco de um produto especifico neh??!!, mas acontece q ele soh seleciona 1 produto, pq você naum tah fazendo um looping pra mostrar todos os registros... e a diferenca q da na hora q você faz o distinct e sem ele eh pq ele soh faz esta condicão do where com o 1 registro q retorna do seu select !!!!!entendeu o pq do looping? sem ele você soh seleciona o preco do 1 produto retornado ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ratu eu entendi o funcionamento, mas eu não consigo fazer funcionar, nem com aquele que você me passou e nem com o que fiz... fica certinho aparece todos os produtos e todas as datas mas o miolo aparece o mesmo resultado para todos os produtos... :wacko:

O loop que deve estar posicionado errado, mas eu já coloquei ele em varios lugares e nada....

 

veja

 

<%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 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)%><!-- #include file="include/topo.asp"--><p>  <style type="text/css"><!--<!--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=body {	background-color: #FFFFFF;	}	.texto10 {	font-family: Arial, Helvetica, sans-serif;	font-size: 10px;	color: #464646;}	.texto11 {	font-family:Arial, Helvetica, sans-serif;	font-size:13px;	color: #464646;	}	.texto12 {	font-family:Arial, Helvetica, sans-serif;	font-size:10px;	color: #FFFFFF;	}--></style><center><table width="200" border="1">  <tr>	<td> </td>	<%while not rs.EOF%>	<td><span class="texto10"><%=rs("data")%></span></td>	<%rs.MoveNext	Wend%>  </tr><%while not rs2.EOF%><%while not rs1.EOF%>  <tr>	<td><span class="texto10"><%response.write("<td><span class='texto10'>" & rs1("produto") & "</span></td> <td><span class='texto10'>" & rs2("preco") & "</span></td>")%></td>  </tr> <%rs1.MoveNextwend%> <%rs2.MoveNextwend%></table><%Set rs=NothingSet rs1=NothingSet rs2=NothingConexcao.Close%></center><center>   <p> </p>   <p>	 <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="50" height="50">		<param name="movie" value="voltar.swf">		<param name="quality" value="high">		<embed src="voltar.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="50" height="50"></embed>	 </object>   </p></center> <p><img src="imagens/rodape.gif" width="779" height="44"></p>	  </body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera da uma ajuda aqui nem dormi direito por causa disso! é ate um apelo que faço a vcs! tenho que entregar isso segunda sem falta, se não to ferrado! eu sou contra a apelar assim, mas é que to precisando muito disso!!!! valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, explica como está agora o sistema, qual o problema que está apresentando e o que deveria estar acontecendo. Se tiver um link para exbir é melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado,

beleza?

 

Eu tava precisando tanto fazer isso ai uma vez o Mario me falou que quando o tópico ficava muito grande era preferivel abrir outro para maior concentração de força ai foi o que eu fiz veja:

 

http://forum.imasters.com.br/index.php?showtopic=172315

 

Mas o que eu to precisando é que exiba o preço conforme o produto e a data....

 

Abraços.

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.