Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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()
%>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>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></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()
%>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></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()
%>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%>
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.
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"></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.
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
Olá Xan, Ja verifiquei a ortografia e as colunas, esta tudo ok
O problema é que a lógica deve estar errada, realmente nõ consigo fazer esta programação rodar
poste a linha do erro
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"></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()
%>dá um response.write na sua string SQL, para ver o que esta sendo passado
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.
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.
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