Ir para conteúdo

POWERED BY:

Arquivado

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

BurnOS

Select complicado

Recommended Posts

Eaew Galera, travei nessa parte do código... precisava fazer de uma só vez um select em 12 tabelas, ate ai beleza, umas ajudas aqui e ali e funcionou, mas agora, estou apanhando na hora de escrever o resultado na tela...

 

As 12 tabelas são iguais, só mudam os registros mesmo, cada tabela é um mês... ai vem o problema, preciso escrever os dados como nome, cnpj, categoria... só uma vez, o que precisa ser escrito 12x serão os dados de visitas ou vendas...

 

Só que do jeito que está o código atual, o RS escreve 12x todos os dados em 12 linhas... preciso que sejam os dados + 12 colunas, não linhas...

 

Ex, fica atualmente assim:

 

dado1|dado2|dado3|jan|fev|mar|...

abcde|abcde|abcde|123

abcde|abcde|abcde|456

abcde|abcde|abcde|789...

 

Preciso que fiquei assim:

dado1|dado2|dado3|jan|fev|mar|...

abcde|abcde|abcde|123|456|789

 

 

Sinceramente... tô apanhando faz um bom tempo desse relatório...

 

Agradeço a atenção galera

 

Vlew!!!!!!!

 

[]'s

 

P.S: Segue abaixo o código atual...

 

<%
Option Explicit

'Declarando variáveis
Dim cnct, rs, Qry, rsMes, QryMes, vztas, eqz, IIf, i

'Recebendo as variáveis
eqz = request.QueryString("eqz")

'Criando conexão
set cnct = Server.CreateObject("ADODB.Connection")

'Abrindo conexão no banco
'cnct.open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\webserver\S&F\Sequencia&Frequencia.mdb")
cnct.open "DBQ=" & Server.MapPath("Sequencia&Frequencia.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

'Expressão SQL
Qry = ""
For i = 1 to 12
	Qry = Qry & "Select * from SeqFreq_" & i & " Where eqz = '" & eqz & "' order by cnpjfarma"
	If i <> 12 then
		Qry = Qry & " UNION ALL "
	End If
Next

'Executar a expressão SQL
set rs = cnct.execute(Qry)

%>
<div align="center">
	<a href="sf.asp">Sequência e Frequência - 2007</a><br><br>
<%
for i = 173301 to 173309
%>
	<a href="sf.asp?eqz=<%=i%>"><%=i%></a>
<%
next
%>
<br>
<%
for i = 273301 to 273307
%>
	<a href="sf.asp?eqz=<%=i%>"><%=i%></a>
<%
next
%>
<br>
<%
for i = 373301 to 373310
%>
	<a href="sf.asp?eqz=<%=i%>"><%=i%></a>
<%
Next
%>
<br>
<%
for i = 673301 to 673304
%>
	<a href="sf.asp?eqz=<%=i%>"><%=i%></a>
<%
Next
'Verificando se o banco não está vazio
If eqz = "" then
%>
<p>Selecione um EQZ.<br>
<%
ElseIf rs.eof then
%>
<p>Não existem dados a serem listados<br>
<%
Else
%>
<p><table border=1 bordercolor="black">
	<tr bgcolor="#FF8C8C">
		<td>EQZ</td>
		<td>CNPJ</td>
		<td>Razão Social</td>
		<td>Categoria</td>
		<%
		for i = 1 to 12
		%>
		<td><%=monthname(i)%></td>
		<%
		next
		%>
	</tr>
<%
dim cor
cor = true
do while not rs.eof	
	cor = not cor
	if cor then	
%>
	<tr bgcolor="#CCCCCC">
	<%
	else
	%>
	<tr><font>
	<%
	end if
	%>
		<td><%=rs("eqz")%></td>
		<td><%=rs("cnpjfarma")%></td>
		<td><%=rs("rsocialfarma")%></td>
		<td><%=rs("categoria")%></td>
			<%
			'for i = 1 to 12
			If rs("00_Vendas") <> "" then
			%>
				<td align="Center"><%=rs("00_Vendas")%></td>
			<%
			Elseif rs1("00_Visitas") <> "" then
			%>
				<td align="Center">XXX</td>
			<%
			Else
			%>
				<td align="Center">--- </td>
			<%
			End If
			'next
			%>
	</tr>
<%
rs.movenext
loop
%>
</table>
</div>
<%
End If
rs.close
cnct.close
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi ao certo como você quer listar as informações...

 

tenho um caso semelhante que usava um select com group by mas por conter informações ID autonumerico refiz e coloquei ao invés do group by usei o order by para ordenar meus registros e sempre antes de criar a linha da tabela eu testo o campo com uma variável auxiliar para escrever ou não a linha, tipo

 

sql = "select c.data, c.nome, p.itens from cliente c, produtos p order by c.data, c.nome"

 

dai fasso o while normalmente

 

if not rs.eof then
   while not rs.eof
	  'dai o teste
	 if rs("data") <> vdata then
		  <TR>
			 <TD>
				  data:rs("data") 
			</TD>
		  <TR>
	end if
		  <TR>
			 <TD>
				  bla, bla, bla
			</TD>
		  <TR>
   
	vdata = rs("data")
	rs.movenext
   wend
end if

isso me garante que sempre que as datas forem diferentes a linha contendo a informação será escrita e enquanto for igual somente os dados pertinentes aquela data serão escritos evitando a duplicidade dos valores uma vez que os mesmos aparecem mais de uma vez na consulta.

 

ps. Não sei se ficou claro, não escrevi o código como deve ser mas acredito que te dê uma idéia de como solucionar teu problema.

 

[]s

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.