Ir para conteúdo
Fórum Script Brasil
  • 0

concatenar variáveis...


BurnOS

Pergunta

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...

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Guest --burnos --

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 assim

JAN|FEV|MAR|ABR|MAI|JUN

012|023|065|078|098|951

Onde, 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...

Link para o comentário
Compartilhar em outros sites

  • 0
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[/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.

Link para o comentário
Compartilhar em outros sites

  • 0

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" next

Mais 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 por BurnOS
Link para o comentário
Compartilhar em outros sites

  • 0

é, 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 If
Next[/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.

Link para o comentário
Compartilhar em outros sites

  • 0

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">---&nbsp;</td>
            <%
            End If
            'next
            %>
    </tr>
<%
rs.movenext
loop
%>
</table>
</div>
<%
End If
rs.close
cnct.close
%>

Editado por BurnOS
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...