Ir para conteúdo

Arquivado

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

hudsonalves

Combo e imput

Recommended Posts

Preciso de um help:

 

 

Tenho uma tabela com os campos TYPE_ID, TYPE_NAME e TYPE_IMAGE

 

Quero selecionar um item através do combo da coluna TYPE_NAME e trazer o dado da mesma linha na coluna TYPE_IMAGE através de um imput, eu até consegui sem o While, mas o código só trouxe uma informação, com o While, consigo selecionar o combo, mas o Input não muda

 

 

<!--#include file="../Connections/conn.asp" -->
<%
set rsDatas = Server.CreateObject("ADODB.Recordset")
rsDatas.ActiveConnection = MM_conn_STRING
rsDatas.Source = "SELECT *  FROM TYPES WHERE TYPE_ID ORDER BY TYPE_DATED"
rsDatas.CursorType = 0
rsDatas.CursorLocation = 2
rsDatas.LockType = 3
rsDatas.Open()
rsDatas_numRows = 0
%>
<table class="table">
  <thead>
    <tr>
     <th><a href="<%=tfm_orderbyURL%>TYPE_ID">ID</a></th>
     <th><a href="<%=tfm_orderbyURL%>TYPE_NAME">NOME</a></th>                                        
    </tr>
  </thead>
  <tbody>
    <tr>
     <td>
      <select name="NOME" type="text" class="input-text" size="1">                  
      <%
      While (NOT rsDatas.EOF)
      %>
      <option value="<%=(rsDatas.Fields.Item("TYPE_ID").Value)%>"><%=(rsDatas.Fields.Item("TYPE_NAME").Value)%></option>
      <%
       rsDatas.MoveNext()
      Wend
      If (rsDatas.CursorType > 0) Then
      rsDatas.MoveFirst
      Else
      rsDatas.Requery
      End If
      %> 
     </select>
    </td>
    <td><%=(rsDatas.Fields.Item("TYPE_IMAGE").Value)%></td>
   </tr>
  </tbody>
 </table>
 <%
 rsDatas.Close()
 %>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

pega o valor do combo e joga numa variável, vc pode deixar o evento do combo como OnChange, e jogar na mesma página

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que nem cheguei perto:

 

 

<!--#include file="../Connections/conn.asp" -->
<%
Dim combo
combo = TYPE_NAME

set rsDatas = Server.CreateObject("ADODB.Recordset")
rsDatas.ActiveConnection = MM_conn_STRING
rsDatas.Source = "SELECT * FROM TYPES WHERE TYPE_ID ORDER BY TYPE_DATED"
rsDatas.CursorType = 0
rsDatas.CursorLocation = 2
rsDatas.LockType = 3
rsDatas.Open()
rsDatas_numRows = 0
%>
<table class="table">
<thead>
<tr>
<th><a href="<%=tfm_orderbyURL%>TYPE_ID">ID</a></th>
<th><a href="<%=tfm_orderbyURL%>TYPE_NAME">NOME</a></th>                           </tr>
</thead>
<tbody>
<tr>
<td>
<select name="NOME" onchange="combo()"></select>
<option><%=(rsDatas.Fields.Item("TYPE_NAME").Value)%></option>
</td>
<td><%=(rsDatas.Fields.Item("TYPE_IMAGE").Value)%></td>
</tr>
</tbody>
</table>
<%
rsDatas.Close()
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora fiz assim: Inclui a variável e manti o evento do combo como onchange como me orientou (mas acho que não estou fazendo direito) o resultado é o mesmo. O input não segue a seleção do combo

 

 

<!--#include file="../Connections/conn.asp" -->
<%
Dim varcombo
varcombo = TYPE_NAME


set rsDatas = Server.CreateObject("ADODB.Recordset")
rsDatas.ActiveConnection = MM_conn_STRING
rsDatas.Source = "SELECT * FROM TYPES WHERE TYPE_ID ORDER BY TYPE_DATED"
rsDatas.CursorType = 0
rsDatas.CursorLocation = 2
rsDatas.LockType = 3
rsDatas.Open()
rsDatas_numRows = 0
%>
<table class="table">
<thead>
<tr>
<th><a href="<%=tfm_orderbyURL%>TYPE_ID">ID</a></th>
<th><a href="<%=tfm_orderbyURL%>TYPE_NAME">NOME</a></th>
</tr>
</thead>


<tbody>
<tr>
<td>
<select onchange="varcombo()" name="TYPE_NAME" type="text" class="input-text" size="1">
<option value="0">sem seleção</option>
<%
While not rsDatas.EOF
%>
<option value="<%=rsDatas("TYPE_NAME")%>"><%=rsDatas("TYPE_NAME")%></option>
<%
rsDatas.MoveNext()
Wend
If (rsDatas.CursorType > 0) Then
rsDatas.MoveFirst
Else
rsDatas.Requery
End If
%> 


</select>
</td>
<td><input name="TYPE_IMAGE" type="text" class="form" value="<%=(rsDatas.Fields.Item("TYPE_IMAGE").Value)%>" size="60"></td>
</tr>
</tbody>
</table>
<%
rsDatas.Close()
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Definitivamente estou fazendo algo errado.

 

 

Ja consegui colocar as informações no combobox e puxar apenas o primeiro registro no input, mas não estou conseguindo por exemplo selecionar a segunda opção do combobox e fazer o input trazer a informação correspondente a seleção

<!--#include file="../Connections/conn.asp" -->
<%
Dim varcombo
varcombo = TYPE_NAME


set rsDatas = Server.CreateObject("ADODB.Recordset")
rsDatas.ActiveConnection = MM_conn_STRING
rsDatas.Source = "SELECT * FROM TYPES WHERE TYPE_ID ORDER BY TYPE_DATED"
rsDatas.CursorType = 0
rsDatas.CursorLocation = 2
rsDatas.LockType = 3
rsDatas.Open()
rsDatas_numRows = 0
%>
<table class="table">
<thead>
<tr>
<th><a href="<%=tfm_orderbyURL%>TYPE_ID">ID</a></th>
<th><a href="<%=tfm_orderbyURL%>TYPE_NAME">NOME</a></th>
</tr>
</thead>


<tbody>
<tr>
<td>
<select onchange="varcombo()" name="TYPE_NAME" type="text" class="input-text" size="1">
<option value="0">sem seleção</option>
<%
While not rsDatas.EOF
%>
<option value="<%=rsDatas("TYPE_NAME")%>"><%=rsDatas("TYPE_NAME")%></option>
<%
rsDatas.MoveNext()
Wend
If (rsDatas.CursorType > 0) Then
rsDatas.MoveFirst
Else
rsDatas.Requery
End If
%> 


</select>
</td>
<td><input name="TYPE_IMAGE" type="text" class="form" value="<%=(rsDatas.Fields.Item("TYPE_IMAGE").Value)%>" size="60"></td>
</tr>
</tbody>
</table>
<%
rsDatas.Close()
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada neste exemplo, este script faz o preenchimento de um combo e pega o valor do combo preenchido pra fazer o outro combo, tipo:

um combo país e outro combo estado

as tabelas são:

pais- com os campos
cod_pais - chave primária
nome

estado -c om os campos
cod_pais - chave estrangeira
cod_estado
nome

as tabelas possuem relacionamento de um para muitos

<% Option Explicit

'declaro as var
dim var1,var2,var3,....., etc
'
recupero as var
varpais=request.querystring("pais")
'crioa a conexao
%>

<!--# include file="conexao/conexao.asp"-->

<%
'abro a conexao
Call abre_conexao
'
crio o rs
set rspais=server.createobject("ADODB.Recordset")
'crio a SQL
SQLpais="SELECT * FROM pais ORDER BY nome"
rspais.open SQLpais,conexao,1,3

%>


'aqui vou criar o combo, onde no evento onchange ele irá enviar o value do combo pais para a mesma pag, para eu recuperar o codigo do pais e assim preencher o combo estado.


<form action="inserirend_action.asp" method="post"name="frmteste">
<select name="pais" size="1" Onchange="window.navigate('pag_atual.asp?pais='+frmteste.pais.value)">

<% while not rspais.eof%>
<option value="
<%=rs("cod_pais")%>">
<% if varpais=rs("pais") then
response.write("Selecionado")
end if%>
<%=rs("nome")%>
</option>
<% rspais.movenext
wend%>

</select>
<% set rspais=nothing%>

'aki crio o combo estado


<select name="estado"size="1">
if request("pais") ="" then%>
<option value=""> selecione um pais
<%else
'crio o SQL estado
SQLestado="Select * from estado where cod_pais="&varpais&" Order by nome"
'
crio o rsestado
set rsestado=server.createobject("ADODB.Recordset")
rsestado.open SQLestado,conexao,1,3
<%while not rsestado.eof%>
<option value="
<%=rsestado("cod_estado")%>">
<%=rs("nome")%>
</option>
<%rs.movenext
wend

end if%>
</select>
<% set rsestado=nothing%>
<% 'fecho a conexao
call fecha_conexao
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Xan,

 

Então brother, vi seu exemplo mas estou com dificuldade para implementar no meu projeto

 

 

No meu caso uso uma unica tabela, colunas: TYPE_ID, TYPE_NAME, TYPE_USER, TYPE_IMAGE e TYPE_DATED

 

Esta tabela é preenchida por outro formulário em outra situação.

 

O que eu preciso é listar a coluna TYPE_NAME em uma combobox que ao selecionar um nome especifico preencha um input com a coluna TYPE_IMAGE correspondente ao mesmo ID selecionado no Combo.

 

Estou quebrando a cabeça com isso mas não esta rolando, até consegui realizar a seleção na combo e trazer um resultado no input, mas minha lógica esta incorreta pois ao selecionar qualquer outro nome não consigo trazer o resultado esperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem estou tentando, mas ainda não consegui resultado, agora fiz assim:

<!--#include file="../Connections/conn.asp" -->
<%
varCombo=request.querystring("TYPE_NAME") 


set rsCombo= Server.CreateObject("ADODB.Recordset")
rsCombo.ActiveConnection = MM_conn_STRING
rsCombo.Source = "SELECT * FROM TYPES ORDER BY TYPE_DATED"
rsCombo.CursorType = 0
rsCombo.CursorLocation = 2
rsCombo.LockType = 3
rsCombo.Open()
rsCombo_numRows = 0
%>


<%
set rsInput= Server.CreateObject("ADODB.Recordset")
rsInput.ActiveConnection = MM_conn_STRING
rsInput.Source = "SELECT * FROM TYPES WHERE TYPE_ID="&varCombo&" ORDER BY TYPE_DATED"
rsInput.CursorType = 0
rsInput.CursorLocation = 2
rsInput.LockType = 3
rsInput.Open()
rsInput_numRows = 0
%>
<table class="table">
<thead>
<tr>
<th><a href="<%=tfm_orderbyURL%>TYPE_ID">ID</a></th>
<th><a href="<%=tfm_orderbyURL%>TYPE_NAME">NOME</a></th>
</tr>
</thead>


<tbody>
<tr>
<td>


<select name="TYPE_NAME" type="text" class="input-text" size="1">
<%
While not rsCombo.EOF
%>
<option value="<%=(rsCombo.Fields.Item("TYPE_NAME").Value)%>"><%=(rsCombo.Fields.Item("TYPE_NAME").Value)%></option>
<%
rsCombo.MoveNext()
Wend
If (rsCombo.CursorType > 0) Then
rsCombo.MoveFirst
Else
rsCombo.Requery
End If
%>


</select>
</td>
<td><input name="TYPE_IMAGE" type="text" class="form" value="<%=(rsInput.Fields.Item("TYPE_IMAGE").Value)%>" size="60"></td>
</tr>
</tbody>
</table>
<%
rsCombo.Close()
%>
<%
rsInput.Close()
%>

Mas esta gerando erro: Microsoft OLE DB Provider for ODBC Drivers erro '80040e14'

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'TYPE_ID='.

/monoclube/admin/inc_submiteditado2.asp, linha 22

Vocês tem alguma sugestao? Não estou conseguindo encontrar o ponto certo para rodar esse lance.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada. e também veja se os tipos de dados estão corretos

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste a linha do erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele esta apontando para esta linha:

rsInput.Open()

Mais precisamente:

rsInput.Source = "SELECT * FROM TYPES WHERE TYPE_ID="&varCombo&" ORDER BY TYPE_DATED"

Creio que tenha a ver com este trecho: TYPE_ID="&varCombo&"

 

 

 

código completo:

 

<!--#include file="../Connections/conn.asp" -->
<%
varCombo=request.querystring("TYPE_ID") 




set rsCombo= Server.CreateObject("ADODB.Recordset")
rsCombo.ActiveConnection = MM_conn_STRING
rsCombo.Source = "SELECT * FROM TYPES ORDER BY TYPE_DATED"
rsCombo.CursorType = 0
rsCombo.CursorLocation = 2
rsCombo.LockType = 3
rsCombo.Open()
rsCombo_numRows = 0
%>




<%
set rsInput= Server.CreateObject("ADODB.Recordset")
rsInput.ActiveConnection = MM_conn_STRING
rsInput.Source = "SELECT * FROM TYPES WHERE TYPE_ID="&varCombo&" ORDER BY TYPE_DATED"
rsInput.CursorType = 0
rsInput.CursorLocation = 2
rsInput.LockType = 3
rsInput.Open()
rsInput_numRows = 0
%>
<table class="table">
<thead>
<tr>
<th><a href="<%=tfm_orderbyURL%>TYPE_ID">ID</a></th>
<th><a href="<%=tfm_orderbyURL%>TYPE_NAME">NOME</a></th>
</tr>
</thead>




<tbody>
<tr>
<td>




<select name="TYPE_NAME" type="text" class="input-text" size="1">
<%
While not rsCombo.EOF
%>
<option value="<%=(rsCombo.Fields.Item("TYPE_NAME").Value)%>"><%=(rsCombo.Fields.Item("TYPE_NAME").Value)%></option>
<%
rsCombo.MoveNext()
Wend
If (rsCombo.CursorType > 0) Then
rsCombo.MoveFirst
Else
rsCombo.Requery
End If
%>




</select>
</td>
<td><input name="TYPE_IMAGE" type="text" class="form" value="<%=(rsInput.Fields.Item("TYPE_IMAGE").Value)%>" size="60"></td>
</tr>
</tbody>
</table>
<%
rsCombo.Close()
%>
<%
rsInput.Close()
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL, para ver o que esta sendo passado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que o erro tem a ver com este trecho: este trecho: TYPE_ID="&varCombo&"

 

Retirando estre trecho o combo funciona e o input traz apenas uma informação mas não segue a escolha do combo, a logica da programação não esta correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas para que este tópico não fique sem informação, busquei diversas formas para funcionar da maneira que eu queria, pela frustração de não atingir o objetivo inicial criei uma solução alternativa da qual descrevo abaixo apenas o trecho que precisou ser alterado:

 

<select name="FIRST" class="dropdown-select" id="FIRST">
<%
While (NOT rsTypesNFIRST.EOF)
%>
<option value="<%=(rsTypesNFIRST.Fields.Item("TYPE_IMAGE").Value)%>" <%If (Not isNull((rsDataEdit.Fields.Item("DAT_NFIRST").Value))) Then If (CStr(rsTypesNFIRST.Fields.Item("TYPE_ID").Value) = CStr((rsDataEdit.Fields.Item("DAT_NFIRST").Value))) Then Response.Write("SELECTED") : Response.Write("")%> ><%=(rsTypesNFIRST.Fields.Item("NAME").Value)%></option>
<%
 rsTypesNFIRST.MoveNext()
Wend
If (rsTypesNFIRST.CursorType > 0) Then
 rsTypesNFIRST.MoveFirst
Else
 rsTypesNFIRST.Requery
End If
%>
</select>
Resultado: funcionou.

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.