Ir para conteúdo

POWERED BY:

Arquivado

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

Inside

[Resolvido] Split

Recommended Posts

Caros amigos

 

Eu preciso exibir IDs de um session que estão assim: 1,2,8,22

 

Criei esse código mas não funcionou, alguém pode ajudar?

 

 

t = session("empresas")

contagem = split(t,",")

dim conn_de

Set conn_de = Server.CreateObject("ADODB.Connection")

conn_de.Open dsn_cadastro

dim rsde, sqlde, email_empresas

 For total = 1 to num

	somaid = total - 1
	somalido = total
	lidonum = lido & somalido
	id1 = contagem(somaid)

	SQLde = "SELECT email FROM empresas where id = " & id1 & " order by razao"
Next

set rsde = conn_de.execute(sqlde)

if rsde.eof and rsde.bof then
	response.write ""
else
do while not rsde.eof

email_empresas = "" & rsde("email") & ";"

rsde.movenext
loop
end if

set rsde = nothing

conn_de.close
set conn_de = nothing

Obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se sempre vão está dessa forma, não seria mais fácil fazer assim?

SQLde = "SELECT email FROM empresas where id IN (" & session("empresas") & ") order by razao"
set rsde = conn_de.execute(sqlde)

if rsde.eof and rsde.bof then
        response.write ""
else
do while not rsde.eof

email_empresas = "" & rsde("email") & ";"

rsde.movenext
loop
end if

set rsde = nothing

conn_de.close
set conn_de = nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro hargon

 

eu não conhecia esta opção "IN", mas mesmo asism não funcionou só está mostrando 1 e-mail apenas o do primeiro ID.

 

Os outros emails dos outros IDs não aparece: 1,4,8,

Compartilhar este post


Link para o post
Compartilhar em outros sites

no código que vce passou? qual o problema?

 

edit:

 

esquece, já vi o erro:

 

o

 

 

SQLde = "SELECT email FROM empresas where id = " & id1 & " order by razao"

 

 

está dentro do looping. ou seja, a variável recebe vários valores que são substituídos, e não sçao usados

 

faça o que vce quer fazer dentro do for ou poem cada sql em uma parte de uma array e depois faz um looping

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro augustoclaro

 

 

Você conhece algum exmeplo,e stou procurando na net, mas não encontrei. E peço desculpas mas não teno conhecimento para interpretar o que você escreveu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique seu for acho que o problema ta la da uma olhada

 

dim conn_de

Set conn_de = Server.CreateObject("ADODB.Connection")

conn_de.Open dsn_cadastro

t = session("empresas")

contagem = split(t,",")
if not IsArray(contagem ) then
   contagem = array(contagem )
end if
				
dim rsde, sqlde, email_empresas

For total = 1 to num 'esta assim ne eu colocaria assim 
for total = 1 to  ubound(contagem )
       if trim(contagem(total)) <> "" then sQLde = "SELECT email FROM empresas where id = " & contagem(total)& "order by razao"
Next

Tente ai se precisa da um grito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples:

 

t = session("empresas")

contagem = split(t,",")

dim conn_de

Set conn_de = Server.CreateObject("ADODB.Connection")

conn_de.Open dsn_cadastro

dim rsde, sqlde, email_empresas

 For total = 1 to num

        somaid = total - 1
        somalido = total
        lidonum = lido & somalido
        id1 = contagem(somaid)

        SQLde = "SELECT email FROM empresas where id = " & id1 & " order by razao"

set rsde = conn_de.execute(sqlde)

if rsde.eof and rsde.bof then
        response.write ""
else
do while not rsde.eof

email_empresas = "" & rsde("email") & ";"

rsde.movenext
loop
end if

set rsde = nothing
Next

conn_de.close
set conn_de = nothing

não testei.

 

Mas acho que isso resolve.

 

você tem que botar o que executa dentro do for, senão as variáveis vão ficar se susbtituindo até sobrar a última, que é a única que vai ser executadaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique seu for acho que o problema ta la da uma olhada

 

dim conn_de

Set conn_de = Server.CreateObject("ADODB.Connection")

conn_de.Open dsn_cadastro

t = session("empresas")

contagem = split(t,",")
if not IsArray(contagem ) then
 contagem = array(contagem )
end if
				
dim rsde, sqlde, email_empresas

For total = 1 to num 'esta assim ne eu colocaria assim 
for total = 1 to ubound(contagem )
 if trim(contagem(total)) <> "" then sQLde = "SELECT email FROM empresas where id = " & contagem(total)& "order by razao"
Next

Tente ai se precisa da um grito

 

 

Ainda não funcionou:

 

Está mostrando e-mail do segundo ID e não todos os e-mails dos IDS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente colcoar 0 em vezes de um tenho um script igual zinho que traz varios id mas tihha que separar eles da uma olhda ve se ajuda?

 

			sNoOs=Request("sNoOs")
			vItensMarcado = split(sNoOs,",")
			'Response.Write("teste"&sNoOs)
			'response.End()
			if not IsArray(vItensMarcado) then
				vItensMarcado = array(vItensMarcado)
			end if
			for i = 0 to ubound(vItensMarcado)
				if trim(vItensMarcado(i)) <> "" then
					strSql = "Select * from tabDTH where DatCompromisso = '" & (Data) & "' "
					strSql = strSql & " and NoOs = " &  vItensMarcado(i) 
					if rsRota.state=1 then rsRota.Close
					rsRota.Open strSql,Conexao,1,1
					if rsRota.RecordCount>0 then
						if sidEmpresa = "" then 
							sidEmpresa = 0					  
							sATribuido = "RE"
						else
							sATribuido = "RE"	
						end if
						if sidTecnico = "" then 
							sidTecnico = 0 
							sATribuido = "RT"
						else
							sATribuido = "RT"
						end if
						if sidEmpresa <> 0 and sidTecnico <> 0 then 
							sATribuido = "RA"
						end if				
						strSql = "Update tabDth Set "
						strSql = StrSql & "Atribuido='"&sAtribuido&"',"
						strSql = StrSql & "idEmpresa=" & cint(sidEmpresa) & ","
						strsql = strSql & "idTecnico=" & cint(sidTecnico) & ","
						strSql = strSql & "idUsuario=" & session("idUsuario")
						strSql = strSql & " where DatCompromisso = '" & (Data) & "' "
						strSql = strSql & " and NoOs = " &  vItensMarcado(i)
						Conexao.Execute(StrSql)
					end if
				end if		
			next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei o que tá errado, funciona mas só mostra 1 e-mail apenas:

 

dim conn_de

Set conn_de = Server.CreateObject("ADODB.Connection")

conn_de.Open dsn_cadastro

dim rsde, sqlde, email_empresas, t, contagem

	sNoOs=session("empresas")
 	vItensMarcado = split(sNoOs,",")
 	if not IsArray(vItensMarcado) then
 	vItensMarcado = array(vItensMarcado)
 	end if
 	for i = 0 to ubound(vItensMarcado)
 	if trim(vItensMarcado(i)) <> "" then
 	strSql = "SELECT email FROM empresas where id = " & vItensMarcado(i)
	set rsde = conn_de.execute(strSql)
 	
	email_empresas = "" & rsde("email") & ";"
								
	end if
next

set rsde = nothing
conn_de.close
set conn_de = nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

novamente a variável email_empresas e substituída a cada looping, tenta assim:

 

dim conn_de

Set conn_de = Server.CreateObject("ADODB.Connection")

conn_de.Open dsn_cadastro

dim rsde, sqlde, email_empresas, t, contagem

        sNoOs=session("empresas")
        vItensMarcado = split(sNoOs,",")
        if not IsArray(vItensMarcado) then
        vItensMarcado = array(vItensMarcado)
        end if
        for i = 0 to ubound(vItensMarcado)
        if trim(vItensMarcado(i)) <> "" then
        strSql = "SELECT email FROM empresas where id = " & vItensMarcado(i)
        set rsde = conn_de.execute(strSql)
        
        email_empresas = "" & rsde("email") & ";"
        response.write  email_empresas
                                                                
        end if
next

set rsde = nothing
conn_de.close
set conn_de = nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

De response na sua session pra ver o que ta trazendo no conteudo

 

 

A session está assim: 1,4,8,

 

Agora funcionou, ufa rsrsrs

 

 

Obrigado a todos, não sei o que faria sem vocês.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O jeito mais simples é o que o hargon postou

 

como muitos codigos aqui ja foram postados e deram erro vou fazer um baseado no seu ultimo postado e ver se da certo

 

dim conn_de

 

Set conn_de = Server.CreateObject("ADODB.Connection")

 

conn_de.Open dsn_cadastro

 

dim rsde, sqlde, email_empresas, t, contagem

 

sNoOs=session("empresas")

strSql = "SELECT email FROM empresas where id IN (" & sNoOs & ")"

set rsde = conn_de.execute(strSql)

WHILE NOT rsde.EOF

Response.write(rsde("email"))

rsde.movenext

WEND

 

set rsde = nothing

conn_de.close

set conn_de = nothing

EDITADO:

 

Enquanto fazia um codigo algumas respostas aconteceram e uma delas mostra que sua session estava sempre sobrando uma virgula por isso o erro que tava dando

 

Agora certamente o usando o IN é mais simples

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então que bom que resolveu

 

Vou marcar como tal

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.