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

Olá pessoal, faz um tempo que não mexo com isso, então não lembro mais.

Dei uma procurada pra ver se achava algo parecido, mas sem sucesso.

 

Enfim, eu quero dar um select num registro com 3 campos.

 

Exe.: SELECT CAMPO1, CAMPO2, CAMPO3 FROM TABELA WHERE ID = 1

 

No campo 1 eu tenho vários números registrados, gravados como nvarchar(50)

 

Exe.: CAMPO1 = 1,2,3,4,5,6,7,8

 

Eu queria uma maneira de ler cada um desses número e trazer na tela um nome para cada número, fazendo comparação com outra tabela, onde estao os nomes, campo tipo ntext(16).

Como eu faço essa leitura?!

 

Obrigado pela ajuda e bom final de ano pra todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara tu complicou um pouco mostra os codigos da tabela do banco de dados e tbm os codigos que você tentou fazer....

beleza?

Compartilhar este post


Link para o post
Compartilhar em outros sites

concordo que complicou

 

a estrutura de seu db não está normalizada

 

com isso você até conseguiria selecionar os registros que possuem determinado ID mas buscar dados relacionados em outras tabelas da forma atual é impraticável

 

é melhor reestruturar usando as regras de normalização

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me desculpem pessoal, não achei que iria complicar, vou tentar ser mais claro agora.

 

2 tabelas:

SP2010

- CODOFICINA

 

SP2010_OFICINAS

- CODOFICINA

- NOME

 

Primeiro gostaria de trazer os registros da tabela SP2010, em seguida fazer uma comparação com os nomes das oficinas, registrados na tabela SP2010_OFICINAS.

Assim, se na tabela sp2010 contiver no campo CODOFICINA = 1,2,3

O próximo select deverá trazer os nomes correspondentes das oficinas com código 1,2,3.

 

Set Rs = Server.CreateObject("ADODB.Recordset")
StrSql = " SELECT codoficina, nome, codinscricao " & _
		" FROM Inscricoes.dbo.SemanaPedagogica2010 "
set Rs = ConSql.execute(StrSql)	
'response.Write(strsql)
	
	oficinas = Rs("codoficina")

DIM oficinas
for each valor in oficinas
   
	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 CODINSCRICAO = "&Rs("CODINSCRICAO")&" "
	set RsOficinas = ConSql.execute(StrSql)	
	
	
	Response.Write(" "&RsOficinas("codoficina")&" - "&RsOficinas("nome")&" ")
  
Next

O for está dizendo que oficinas não é uma coleção, como posso arrumar?

 

Agradeço a ajuda.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL para ver o k

esta sendo passado, tente

 

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

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

SQL="SELECT SPO.nome, SPO.codoficina " & _
                        " FROM Inscricoes.dbo.SemanaPedagogica2010_OFICINAS SPO " & _
                        " INNER JOIN Inscricoes.dbo.SemanaPedagogica2010 ON SO.codoficina = SPO.codoficina " & _
                        " WHERE CODINSCRICAO = "&Rs("CODINSCRICAO")(i)&" "
response.Write(SQL)
response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse Request.Form("CODINSCRICAO").Count

Não seria Rs("codinscricao"), pois eu estou trazendo de um select?!

 

Alguma alma caridosa poderia me ajudar no meu caso?!

 

Agradeço antecipadamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, onde é inserido varios registros

 

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

Deu o seguinte erro:

 

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

 

Instrução esperada

 

/host/marknet/rel_SemanaPedagogica2010.asp, line 94

 

wend

^

 

if not Rs.EOF then
				
					while not Rs.EOF
						
						Response.Flush()
				
						RESPONSE.Write("<TR>")
						RESPONSE.Write("<td width=30>"&Rs("codinscricao")&"</td>")
						RESPONSE.Write("<td>"&Rs("nome")&"</td>")
						RESPONSE.Write("</tr>")
						
						DIM codoficina
						'for each valor in oficinas
					
						codoficina= Split(Request.Form("codoficina"), ",")
					
						For i = 1 To Request.Form("codoficina").Count
					   
						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>")
						
						
					rs.MoveNext
					
	####LINHA 94#####       wend

					
				end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem este select antes do código acima:

 

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)

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim , fika fora do laço

e tire o Response.Flush()

para teste

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim fora do laço?

Eu faço o select RS e daí faço um while dos registros dele.

Esse select e o while dele funcionam, porém dá erro quando coloco o for com o outro select.

 

Testei sem o flush e dá o mesmo erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo

 

'crio a conexao%>
 <!--#include file="conn/conexao1.asp"--> 
<% call abreconexao
			
  'crio o rs
  set rs=Server.CreateObject("ADODB.Recordset")
  'crio o SQL
  SQL="SELECT * FROM login ORDER BY login"
  rs.open SQL,conexao,1,3
   %>
<%  while not rs.eof%> 
<TR> <TD WIDTH="16%"> <DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><%=rs("login")%></B></FONT></DIV></TD><TD WIDTH="15%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><%=rs("senha")%></B></FONT></DIV></TD><TD WIDTH="25%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><%=rs("email")%></B></FONT></DIV></TD><TD WIDTH="20%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><A HREF="atualizar_form_treina.asp?codigo=<%=rs("codigo")%>">Atualizar</A></B></FONT></DIV></TD><TD WIDTH="24%"> 
<DIV ALIGN="center"><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1" COLOR="#000000"><B><A HREF="excluir_form_treina.asp?codigo=<%=rs("codigo")%>">Excluir</A></B></FONT></DIV></TD></TR> 
<% rs.movenext
  	wend
	set rs=nothing
   call fechaconexao
%> </TABLE><P><BR></P></RightClick> 
</BODY></HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que assim fica mais claro de como está meu código.

 

O primeiro select e o seu while funcionam. Ele traz os registros dos nomes, porém dá erro quando coloco o código do For.

O erro é na linha do 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)	

if not Rs.EOF then
				
    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
       
        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>")
        
        
    rs.MoveNext
    
    wend

    
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta dar um Exit For

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei o exit e continua o mesmo erro.

 

:(

 

 

For i = 1 To Request.Form("codoficina").Count
						
If i=0 Then Exit For

Compartilhar este post


Link para o post
Compartilhar em outros sites

retire o

if not Rs.EOF then

deixe apenas o <% while not rs.eof%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o erro atual e como está o trecho de código do erro gerado?

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.