BurnOS Postado Janeiro 24, 2008 Denunciar Share Postado Janeiro 24, 2008 Galera... eaew, tudo bem? É o seguinte...Estou montando um relatório, e nele, preciso fazer uma seleção em várias tabelas, em um mesmo banco...A idéia é mais ou menos a seguinte:Qry = "Select * from SeqFreq_1 where eqz = '" & eqz & "'" Qry = "Select * from SeqFreq_2 where eqz = '" & eqz & "'" Qry = "Select * from SeqFreq_3 where eqz = '" & eqz & "'" Qry = "Select * from SeqFreq_4 where eqz = '" & eqz & "'" Qry = "Select * from SeqFreq_5 where eqz = '" & eqz & "'" Dai tentei fazer dessa forma: for i = 1 to 12 Qry & i = "Select * from SeqFreq_" & i & " where eqz = '" & eqz & "'" Bão... se eu deixar o "i" somente no nome da tabela, a expressão fica assim: Select * from SeqFreq_12 where... Com o "i" na frente da variável Qry, dá erro: Erro de sintaxe /denis/S&F/sf.asp, line 18, column 3 Qry&i = "Select * from SeqFreq_"& i &" where eqz = '" & eqz & "'" --^vlew galera... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 .Andreia. Postado Janeiro 24, 2008 Denunciar Share Postado Janeiro 24, 2008 porque não é uma string, mas porque você quer fazer a mesma consulta N vezes? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 24, 2008 Denunciar Share Postado Janeiro 24, 2008 tenta assim:Qry = ""For i = 1 to 12 Qry = Qry & "Select * from SeqFreq_" & i & " Where eqz = '" & eqz & "'" & IIf(i <> 12, " UNION ALL ", "")Next[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --burnos -- Postado Janeiro 30, 2008 Denunciar Share Postado Janeiro 30, 2008 Eaew galera...Então Kuroi, com o código assim:Qry = "" For i = 1 to 6 Qry = Qry&"Select * from SeqFreq_" & i & " Where eqz = '" & eqz & "' " Next o resultado é: Erro de sintaxe. na expressão de consulta 'eqz = '173301' Select * from SeqFreq_2 Where eqz = '173301' Select * from SeqFreq_3 Where eqz = '173301' Select * from SeqFreq_4 Where eqz = '173301' Select * from SeqFreq_5 Where eqz = '173301' Select * from SeqFreq_6 Where eqz = '173301''.Andreia, quero fazer n seleções para montar um relatório... Precisa ficar mais ou menos assimJAN|FEV|MAR|ABR|MAI|JUN012|023|065|078|098|951Onde, cada mês é uma tabela em um BD e as numerações seriam os dados, então tenho por ex, 6 campos em cada tabela, todas iguais, só o número de visitas que mudam... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 30, 2008 Denunciar Share Postado Janeiro 30, 2008 Eaew galera...Então Kuroi, com o código assim:Qry = ""For i = 1 to 6Qry = Qry&"Select * from SeqFreq_" & i & " Where eqz = '" & eqz & "' "Next[/code] o resultado é: [code]Erro de sintaxe. na expressão de consulta 'eqz = '173301' Select * from SeqFreq_2 Where eqz = '173301' Select * from SeqFreq_3 Where eqz = '173301' Select * from SeqFreq_4 Where eqz = '173301' Select * from SeqFreq_5 Where eqz = '173301' Select * from SeqFreq_6 Where eqz = '173301''.vai dar erro mesmo, esse não é o codigo q eu passei, olha la direito o meu post de cima.você não pode por um select do lado do outro, quando acaba uma instucao, ela simplesmente acabou, não tem como por outra depois.se você quer juntar todos os selects num só, use o UNION ALL, como passei no otro post. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BurnOS Postado Janeiro 31, 2008 Autor Denunciar Share Postado Janeiro 31, 2008 (editado) Então, se eu deixar com o UNION ALL dá erro... aqui está certo?:IIf(i <> 12, " UNION ALL ", "") É IIF mesmo??? Testei aqui, dá erro de "Tipo incompatíveis", com o código assim: Qry = "" For i = 1 to 12 Qry = "Select * from SeqFreq_"&i&" Where eqz = '"&eqz&"'" & IIf(i <> 12, " UNION ALL ", "") QryMes = "Select count(Vendas) from SeqFreq_11" nextMais uma coisa, procurando na web, li que pode ser alguma coisa relativa a campos nulos, e nessas tabelas tenho vários campos nulos... dai se for isso mesmo, se tem como tratar o erro ou só alterando no banco?... Editado Janeiro 31, 2008 por BurnOS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 31, 2008 Denunciar Share Postado Janeiro 31, 2008 é, as vezes da esse pau com iif. tenta usar if normal então, tipo assim:Qry = ""For i = 1 to 12 Qry = Qry & "Select * from SeqFreq_" & i & " Where eqz = '" & eqz & "'" If i <> 12 Then Qry = Qry & " UNION ALL " End IfNext[/code]quanto aos campos nulos normalmente não da problema, depende de como você for trabalahr com seus dados. mas se der alguma coisa ai, poste. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BurnOS Postado Fevereiro 1, 2008 Autor Denunciar Share Postado Fevereiro 1, 2008 (editado) Eaew...Olha só... hoje depois de uma manhã de testes realmente entendi o que está acontecendo...depois desse último código que você passou Kuroi, "funcionou"... Mas está fazendo assim a seleção completa linha por linha.Está escrevendo o resultado completo da consulta 12x na vertical... e não só os últimos campos na horizontal...Tem como com o Union All fazer depois da seleção ele mesclar ou não escrever os campos que foram iguais e só escrever várias vezes campos específicos?O RS estava com um for também, ele escreve as 12x na horizontal, mas só repete o resultado da tabela naquela linha, ai na linha de baixo escreve tudo de novo com o resultado da próxima tabela e o que preciso é escrever o resultado das 12 tabelas na horizontal...Vou postar o código atual completo...<% 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 %> Editado Fevereiro 11, 2008 por BurnOS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BurnOS Postado Fevereiro 11, 2008 Autor Denunciar Share Postado Fevereiro 11, 2008 Galera... se alguém puder tiver uma luz agradeço bastante... o que falta agora é fazer ele escrever o resultado dos campos "00_vendas" ou "00_visitas" na horizontal e não na vertical e escrever o nome da farmácia uma vez só, se ela aparecer na próxima tabela, só acrescentar os dados do mês referente... senão, manter o registro e deixar o mês em branco...Vlew Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
BurnOS
Galera... eaew, tudo bem? É o seguinte...
Estou montando um relatório, e nele, preciso fazer uma seleção em várias tabelas, em um mesmo banco...
A idéia é mais ou menos a seguinte:
Dai tentei fazer dessa forma: Bão... se eu deixar o "i" somente no nome da tabela, a expressão fica assim: Com o "i" na frente da variável Qry, dá erro:vlew galera...
Link para o comentário
Compartilhar em outros sites
8 respostass 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.