Ir para conteúdo

POWERED BY:

Arquivado

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

Willian Abreu

: Resgatar + de 1 Valor através do CheckBox

Recommended Posts

Olá galera, saudações..

 

 

 

Alguem poderia me ajudar a entender como se faz o seguinte:

 

 

 

Tenho uma tela onde há uma lista de informações onde o usuário seleciona os checkbox de sua preferencia...

 

 

 

Obs.: Cada checkbox recebe um valor diferente e estes valores estão vindo do banco de dados

 

 

 

<input type="checkbox" name="curso" value="<%=rsCurso("Gerenciador_Cursos.CodCurso")%>" />

 

 

Pois bem.. até aí foi bem... após o usuario escolher as checkbox desejadas, o mesmo clica no botão "Enviar"

 

 

 

Na próxima página onde resgato os valores do checkbox.. realizei toda a programação naturalmente e funcionou perfeitamente, porém só funciona perfeitamente quando o usuário escolhe apenas 1 checkbox antes de enviar...

 

 

 

Então pesquisei sobre Split e tentei adaptar algumas ideias aqui, porém ainda ocorre um erro quando o usuário escolhe mais de um checkbox...

 

 

 

Tipo de erro:

Microsoft JET Database Engine (0x80040E14)

Erro de sintaxe (vírgula) na expressão de consulta 'Gerenciador_Cursos.CodCurso = Cursos.CodCurso AND(Gerenciador_Cursos.CodCurso = 3, 4) AND Gerenciador_Cursos.UserID ='condutainfo' AND Gerenciador_Cursos.Concluido = True'.

 

 

 

 

Abaixo vou mostrar um pedaço da programação que refere-se a esta questão..

 

 

<%
	  Dim x, Cod
	  VarCurso = Split(Request.Form("curso") & ",", ",")
	  for x = Lbound(VarCurso) to Ubound(VarCurso)
	  if Len(Trim(VarCurso(x))) > 0 then
	  Cod = Cod & VarCurso(x) & ", "
	  end if
	  Next
	  if Len(Trim(Cod)) > 0 then
	  Cod = Left(Cod, Len(Cod)-2)
	  end if



	 'INICIO VERIFICACAO 
	  Dim SQLGerenciador, rsCurso 
	  SQLGerenciador = "Select * From Gerenciador_Cursos, Cursos WHERE Gerenciador_Cursos.CodCurso = Cursos.CodCurso AND(Gerenciador_Cursos.CodCurso = "& Cod & ") AND Gerenciador_Cursos.UserID ='" & strUserName & "' AND Gerenciador_Cursos.Concluido = True"
	  Set rsCurso = conn.execute (SQLGerenciador)
	
	  if rsCurso.eof then
	  Response.Write "Erro"
	  else 
	  while Not rsCurso.EOF 
	  %>
			<tr>
			  <td></td>
			  <td height="30"><% = rsCurso("Gerenciador_Cursos.CodCurso") %></td>
			  <td align="right"><% = rsCurso("Titulo") %></td>
			  <td align="right"><%Response.Write Cod%></td>
			  <td align="right"></td>
			  <%
			  rsCurso.movenext
			  wend 
			  end if
			  %>
			</tr>

 

 

O que preciso é que o usuário possa escolher varios checkbox e depois eu possa fazer um tratamento com os dados pelo sql a partir dos checkbox selecionados..

 

 

 

Acredito que varias pessoas contenham a mesma dúvida, pois andei pesquisando bastante sobre isso..

 

 

 

Bom galera é isso aí.. sou iniciante em asp... mais estou tentando..

 

 

 

um abração a todos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro é de Nome de coluna inválido

'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada. Verifique a ortografia,os nomes dos campos, veja se estão corretos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xanburzum, primeiramente muito obrigado por se dedicar em me prestar ajuda.

 

Então.. pelo que vejo não seria exatamente a coluna que está errada, pois quando o o usuário seleciona apenas UM checkbox o erro não acontece, mas se ele selecionar mais de um checkbox, então o erro acontece.. quer dizer.. pareceme que há algum conflito entre as minhas condições do ASP (inclui o split) com o SQL

 

O Erro acontece bem aqui:

 

SQLGerenciador = "Select * From Gerenciador_Cursos, Cursos WHERE Gerenciador_Cursos.CodCurso = Cursos.CodCurso AND(Gerenciador_Cursos.CodCurso = "& Cod & ") AND Gerenciador_Cursos.UserID ='" & strUserName & "' AND Gerenciador_Cursos.Concluido = True"

 

Creio que seja o "Cod" que está em confusão..

 

 

Mais uma vez devo agradecer pois realmente está colaborando e muito com minha duvida!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um response.write na sua consulta SQL para ver o que esta sendo passado de valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi muito bem o que me sugeriu mais... no final do código eu faço o Response.Write para exibir o resultado das questões em SQL, mais a leitura do código nem passa do SQL. Por este motivo desconheço alguma forma de realizar o Response.Write .. alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, não sei bem se eu entendi sua sugestão, mais eu coloquei um Response.Write após o código SQL no intuito de mostrar em tela o resultado desejado, mas o que acontece é que a leitura do código como um todo não está passando do SQL.

 

Não sei outra forma de fazer response.write ao não ser da maneira escrita no código.. alguma sugestão de como realizar?

 

Desculpe pela minha inesperiência!

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um

 

SQLGerenciador = "Select * From Gerenciador_Cursos, Cursos WHERE Gerenciador_Cursos.CodCurso = Cursos.CodCurso AND(Gerenciador_Cursos.CodCurso = "& Cod & ") AND Gerenciador_Cursos.UserID ='" & strUserName & "' AND Gerenciador_Cursos.Concluido = True"

 response.write(SQLGerenciador )
  response.end()

e veja os valores que estao sendo passados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xanburzum, dando o Response.Write como você indicou, prossegue o mesmo erro.

 

Estive lendo alguns conteúdos... humm será que eu deveria inserir todo o código SQL e os Response.Write que se localizam entre <tr> e <td> dentro do FOR utilizado no início das condições ASP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz isso

 

response.write(SQLGerenciador )
  response.end()

e poste o resultado da SQL,os valores que estao sendo passados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fora a questão que já está sendo discutida, você tem um array então use no sql o seguinte:

 

(continuação SQL)

" AND(Gerenciador_Cursos.CodCurso IN("& Cod & ")) "

 

não é necessário fazer o split pois o conjunto de array já vem separado por virgula, então pode fazer assim:

 

(continuação SQL)

" AND(Gerenciador_Cursos.CodCurso IN("& Request.Form("curso") & ")) "

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jonathan... parece que esta charada está se resolvendo.

Realmente... corrigi o sql da forma descrita por você e retirei todas as condições em asp que eu tinha inserido no início do código e FUNCIONOU.

 

Só que tem um porém agora... Quando eu faço um "Response.Write Var Curso", exibe-se em tela um resultado do tipo.. 3,4,5,10 e por aí vai...

 

Preciso que exiba somente o valor que representa aquele curso.. por exemplo

 

CODIGO DO CURSO | NOME DO CURSO

3 Microsoft Word

4 Microsoft Access

 

Estou fazendo este bloco de <tr> e <td> da seguinte forma:

 

<tr>

<td></td>

<td height="30"><% = rsCurso("Gerenciador_Cursos.CodCurso") %></td>

<td align="right"><% = rsCurso("Titulo") %></td>

<td align="right"><% Response.Write VarCurso %></td>

<td align="right"></td>

<%

rsCurso.movenext

wend

end if

%>

</tr>

 

 

Agora minha pergunta seria.. como faço para exibir da forma em que demonstrei acima no exemplo?

 

 

GALERA... MUITO OBRIGADO PELA AJUDA... ESTE TÓPICO ESTÁ QUASE SENDO RESOLVIDO... E DEVO ISSO A VCS!

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.