Ir para conteúdo

POWERED BY:

Arquivado

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

mows

[Resolvido] Ler vários números

Recommended Posts

ERRO:

Erro de compilação do Microsoft VBScript erro '800a0400'

 

Instrução esperada

 

relatorio.asp, line 96

 

wend

^

 

Set Rs = Server.CreateObject("ADODB.Recordset")
StrSql = " SELECT codoficina, nome, codinscricao " & _
		" FROM Inscricoes.dbo.SemanaPedagogica2010 " & _
		" WHERE status = 1 " & _
		" ORDER BY codinscricao "
set Rs = ConSql.execute(StrSql)	

			
    while not Rs.EOF
        
 
        RESPONSE.Write("<TR>")
        RESPONSE.Write("<td width=30>"&Rs("codinscricao")&"</td>")
        RESPONSE.Write("<td>"&Rs("nome")&"</td>")
        RESPONSE.Write("</tr>")
        
    
        codoficina= Split(Request.Form("codoficina"), ",")
    
        For i = 1 To Request.Form("codoficina").Count
        
        If i=0 Then Exit For
       
        Set RsOficinas = Server.CreateObject("ADODB.Recordset")
        StrSql = " SELECT SPO.nome, SPO.codoficina " & _
                " FROM Inscricoes.dbo.SemanaPedagogica2010_OFICINAS SPO " & _
                " INNER JOIN Inscricoes.dbo.SemanaPedagogica2010 SO ON SO.codoficina = SPO.codoficina " & _
                " WHERE SPO.CODOFICINA = "&Rs("codoficina")(i)&" "
        set RsOficinas = ConSql.execute(StrSql)	
        
        RESPONSE.Write("<TR>")
        RESPONSE.Write("<td width=30></td>")
        RESPONSE.Write("<td>"&RsOficinas("nome")&"</td>")
        RESPONSE.Write("</tr>")
        
        Exit For
        
        
    rs.MoveNext
    
    wend

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está faltando o NEXT do FOR

 

De preferencia tambem sempre feche o IF com END IF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei o next do for, a pagina nao retorna nenhum erro, porém ela somente retorna o codinscricao e o nome do inscrito, ou seja, as oficinas do inscritos, que é o eu quero que o for traga, ele nao está trazendo.

Alguma coisa faltando?!

 

Agradeço a ajuda.

 

while not Rs.EOF
    

    RESPONSE.Write("<TR>")
    RESPONSE.Write("<td width=30>"&Rs("codinscricao")&"</td>")
    RESPONSE.Write("<td>"&Rs("nome")&"</td>")
    RESPONSE.Write("</tr>")
    

    codoficina= Split(Request.Form("codoficina"), ",")

    For i = 1 To Request.Form("codoficina").Count
    
    If i=0 Then Exit For
   
    Set RsOficinas = Server.CreateObject("ADODB.Recordset")
    StrSql = " SELECT SPO.nome, SPO.codoficina " & _
            " FROM Inscricoes.dbo.SemanaPedagogica2010_OFICINAS SPO " & _
            " INNER JOIN Inscricoes.dbo.SemanaPedagogica2010 SO ON SO.codoficina = SPO.codoficina " & _
            " WHERE SPO.CODOFICINA = "&Rs("codoficina")(i)&" "
    set RsOficinas = ConSql.execute(StrSql)	
    
    RESPONSE.Write("<TR>")
    RESPONSE.Write("<td width=30></td>")
    RESPONSE.Write("<td>"&RsOficinas("nome")&"</td>")
    RESPONSE.Write("</tr>")
    
    next
    
    
rs.MoveNext

wend

Compartilhar este post


Link para o post
Compartilhar em outros sites

é pq na sua string sql, você esta buscando somente

SELECT SPO.nome, SPO.codoficina, adicione os outros campos, ex:

nome_da_tabela.nome_do_campo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se eu quero justamente trazer o NOME de uma determinada CODOFICINA, porque eu deveria colocar outros campos no select?!

Isso só faria meu select ficar mais lento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou falando que sua sql atual tras os campos SPO.nome, SPO.codoficina

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo

 

if qtd_produtos = "" then
Response.write("erro..."
response.redirect("outra_pagina.asp")
else
qtd_produtos = split(Request.Form("qtd_produtos"),",")
if qtd_produtos = ""
produtos= Split(Request.Form("produtos"), ",")

For i = 1 To Request.Form("produtos").Count

Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, mas nao consegui ver a diferença deste exemplo com o codigo que estou usando.

 

Alguem pode me dar uma luz?!

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu codigo tem algumas correções a serem realizadas

 

Troque

 

For i = 1 To Request.Form("codoficina").Count

Por

 

For i = LBOUND(codoficina) To UBOUND(codoficina)

Como não consegui entender o motivo de ver se i é zero é melhor tirar até porque agora terá um zero

 

Então apague a linha

 

If i=0 Then Exit For

Por fim troque

 

" WHERE SPO.CODOFICINA = "&Rs("codoficina")(i)&" "

por

 

" WHERE SPO.CODOFICINA = " & codoficina(i) & " "

Compartilhar este post


Link para o post
Compartilhar em outros sites

no exemplo k colokei

 

você recupera os dados, dá um SPLIT, para separar os dados

e jogá-o em um FOR até .Count de seu request, pode usar

For Each item In Request.Form("xxxxx") ou

For I = 1 To Request.Form("xxxxx").Count

e depois jogamos na string SQL passando o (i), para finalizar o laço de repeticaun, entendeu...

se ficar duvida, posta de novo, abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz as alterações que o Mário sugeriu, porém os dados que estão dentro do FOR não aparecem na página.

A lista de nomes dentro do while do Rs é mostrada normalmente, mas a lista dentro do FOR não.

Alguma coisa errada?!

 

Agradeço a ajuda.

 

Set Rs = Server.CreateObject("ADODB.Recordset")
StrSql = " SELECT codoficina, nome, codinscricao " & _
		" FROM Inscricoes.dbo.SemanaPedagogica2010 " & _
		" WHERE status = 1 " & _
		" ORDER BY codinscricao "
set Rs = ConSql.execute(StrSql)	


while not Rs.EOF
						
				
    RESPONSE.Write("<TR>")
    RESPONSE.Write("<td width=30>"&Rs("codinscricao")&"</td>")
    RESPONSE.Write("<td>"&Rs("nome")&"</td>")
    RESPONSE.Write("</tr>")
    

    codoficina= Split(Request.Form("codoficina"), ",")

    For i = LBOUND(codoficina) To UBOUND(codoficina)
    
   
    Set RsOficinas = Server.CreateObject("ADODB.Recordset")
    StrSql = " SELECT SPO.nome as nome, SPO.codoficina, SO.codinscricao " & _
            " FROM Inscricoes.dbo.SemanaPedagogica2010_OFICINAS SPO " & _
            " INNER JOIN Inscricoes.dbo.SemanaPedagogica2010 SO ON SO.codoficina = SPO.codoficina " & _
            " WHERE SPO.CODOFICINA = " & codoficina(i) & " "
    set RsOficinas = ConSql.execute(StrSql)	
    
    
        RESPONSE.Write("<TR>")
        RESPONSE.Write("<td width=30></td>")
        RESPONSE.Write("<td>"&RsOficinas("nome")&"</td>")
        RESPONSE.Write("</tr>")
    
    
    next
    
    
rs.MoveNext

wend

Estava:

codoficina= Split(Request.form("codoficina"), ",")

Eu alterei para:

codoficina= Split(Rs("codoficina"), ",")

Ele deu o seguinte erro:

Microsoft OLE DB Provider for SQL Server erro '80040e07'
Conversion failed when converting the nvarchar value '5, 12, 19' to data type int.
/host/marknet/rel_SemanaPedagogica2010.asp, line 69

A linha 69 é a execução do select:

Set RsOficinas = Server.CreateObject("ADODB.Recordset")
StrSql = " SELECT SPO.nome as nome, SPO.codoficina, SO.codinscricao " & _
		" FROM Inscricoes.dbo.SemanaPedagogica2010_OFICINAS SPO " & _
		" INNER JOIN Inscricoes.dbo.SemanaPedagogica2010 SO ON SO.codoficina = SPO.codoficina " & _
		" WHERE SPO.CODOFICINA =  " & codoficina(i) & " "
set RsOficinas = ConSql.execute(StrSql)	

Será que convertendo o split para INT, não daria certo?!

Como eu posso converter lá no split?!

 

Alguem poderia me ajudar?!

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

todos os campos precisam ser do mesmo tipo, para nao haver erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajustei o tipo dos campos, agora consigo entrar e trazer os nomes das oficinas.

Porém os nomes estão vindo todos errados e duplicados. Uma oficina aparece 10 vezes, quando a pessoa só se inscreveu uma vez.

 

Dei um response.write no LBOUND e o retorno foi esse:

 

For i = LBOUND(codoficina) To UBOUND(codoficina)

22299999999993333022233335555553333044444222222112223333055555544444777777771111111111111111111111111144444222055555511222222777777772221133336666666333399999999994444422222222203333131313131313131313131313131366666660222333322222277777777555555777777777777777700112220115555553333555555119999999999111111111111111111111111444447777777711444442223333666666677777777999999999933337777777755555544444333322277777777444445555555555551818181818181818181818181818181818181811066666667777777777777777333311444440222114444400222333344444555555003333333300

O código está desse jeito:

Set Rs = Server.CreateObject("ADODB.Recordset")
StrSql = " SELECT codinscricao, nome, codoficina " & _
		" FROM Inscricoes.dbo.SemanaPedagogica2010 " & _
		" WHERE status = 1 " & _
		" ORDER BY codinscricao "
set Rs = ConSql.execute(StrSql)	

while not Rs.EOF
						
    RESPONSE.Write("<TR>")
    RESPONSE.Write("<td width=30>"&Rs("codinscricao")&"</td>")
    RESPONSE.Write("<td bgcolor=#ddd>"&Rs("nome")&"</td>")
    RESPONSE.Write("</tr>")
    

    codoficina= Split(Rs("codoficina"), ",")
    

    For i = LBOUND(codoficina) To UBOUND(codoficina)
    response.Write(UBOUND(codoficina))
    
   
    Set RsOficinas = Server.CreateObject("ADODB.Recordset")
    StrSql = " SELECT SPO.nome as nome, SPO.codoficina_, SO.codinscricao " & _
        " FROM Inscricoes.dbo.SemanaPedagogica2010_OFICINAS SPO " & _
        " INNER JOIN Inscricoes.dbo.SemanaPedagogica2010 SO ON SO.codoficina = SPO.codoficina_ " & _
        " WHERE  SPO.CODOFICINA = " & codoficina(i) & " "
    set RsOficinas = ConSql.execute(StrSql)	
    
    
        
            WHILE NOT RsOficinas.eof
            
                RESPONSE.Write("<TR>")
                RESPONSE.Write("<td width=30></td>")
                RESPONSE.Write("<td>"&RsOficinas("nome")&"</td>")
                RESPONSE.Write("</tr>")
                
                RsOficinas.Movenext
            
            wend
    
    
    next
    
    
rs.MoveNext

wend

 

Acho que o erro está no LBOUND, mas não sei especificar qual é.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, consegui resolver o meu problema.

Agradeço a ajuda de vocês.

Abaixo o código finalizado.

 

Set Rs = Server.CreateObject("ADODB.Recordset")
StrSql = " SELECT codinscricao, nome, codoficina " & _
		" FROM Inscricoes.dbo.SemanaPedagogica2010 " & _
		" WHERE status = 1 " & _
		" ORDER BY codinscricao "
set Rs = ConSql.execute(StrSql)	

    RESPONSE.Write("<TR>")
    RESPONSE.Write("<td width=30>"&Rs("codinscricao")&"</td>")
    RESPONSE.Write("<td bgcolor=#ddd><font size=3><strong>"&Rs("nome")&"</strong></font></td>")
    RESPONSE.Write("</tr>")
    

    NomeOficina = Split(Rs("codoficina"), ",")
    

    Fim = UBound(NomeOficina)
    
    Contagem = 0
    
    For CounterLoop = 0 to Fim
    
    Oficina = NomeOficina(Contagem)

   
    Set RsOficinas = Server.CreateObject("ADODB.Recordset")
    StrSql = " SELECT nome as nome, codoficina " & _
        " FROM Inscricoes.dbo.SemanaPedagogica2010_OFICINAS  " & _
        " WHERE  CODOFICINA = " & Oficina & " "
    set RsOficinas = ConSql.execute(StrSql)	
    
        if not RsOficinas.EOF then
        
              
                RESPONSE.Write("<TR>")
                RESPONSE.Write("<td width=30></td>")
                RESPONSE.Write("<td>"&RsOficinas("codoficina")&" - "&RsOficinas("nome")&"</td>")
                RESPONSE.Write("</tr>")
                
         end if
        Contagem = Contagem + 1
    
    
    next
    
    
rs.MoveNext

wend

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom que resolveu

 

Parabéns

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.