Foros del Web » Programando para Internet » ASP Clásico »

Grip que depende de un combo - AYUDA

Estas en el tema de Grip que depende de un combo - AYUDA en el foro de ASP Clásico en Foros del Web. Hola a tod@s !!! Tengo una pág. asp que contiene un combo simple dinámico. Necesito mostrar un grip o tabla que contenga los registros que ...
  #1 (permalink)  
Antiguo 27/05/2003, 16:25
 
Fecha de Ingreso: noviembre-2002
Ubicación: Caracas
Mensajes: 75
Antigüedad: 21 años, 6 meses
Puntos: 0
Grip que depende de un combo - AYUDA

Hola a tod@s !!!

Tengo una pág. asp que contiene un combo simple dinámico.

Necesito mostrar un grip o tabla que contenga los registros que corresponda al valor seleccionado del combo. Estos registros son tomados de una base de datos access.

Cómo podría hacer este proceso o función?

Tu me podrías ayudar?

Gracias,

  #2 (permalink)  
Antiguo 27/05/2003, 17:49
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 4 meses
Puntos: 1
¿Mostrar los registros de un campo de la base de datos en el combo o seleccionar un elemento del combo y que te devuelva una consulta de la base de datos?.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #3 (permalink)  
Antiguo 28/05/2003, 08:24
 
Fecha de Ingreso: noviembre-2002
Ubicación: Caracas
Mensajes: 75
Antigüedad: 21 años, 6 meses
Puntos: 0
La idea es que al seleccionar un elemento del combo me devuelva una consulta de la B.D. que será mostrada en un table de html.
  #4 (permalink)  
Antiguo 28/05/2003, 08:36
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 4 meses
Puntos: 1
Cómo hacer una consulta en base a un formulario
http://aspfacil.com/articulos/verarticulo.asp?id=52
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #5 (permalink)  
Antiguo 28/05/2003, 08:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
A ver, tienes tu combo dinámico:

<form action=archivo2.asp method=post>
<select name=mi_combo>
<%While not rs.EOF%>
<option value="<%=rs("campo")%>"><%=rs("campo")%></option>
<%Wend%>
</select>
<input type=submit value=Enviar>
</form>

--------------archivo2.asp-------------------------

valor= request.Form("mi_combo")

If valor <> "" Then

'Si el campo de tu DB es numérico
strSQL= "SELECT campo1, campo2, campoN FROM tabla WHERE campo = " & valor
'Si el campo de tu DB es texto

Set nuevoRs= Server.createObject("ADODB.Recordset")
strSQL= "SELECT campo1, campo2, campoN FROM tabla WHERE campo = '" & valor & "'"
conn.Open strSQL, Conn, 3, 3
'A partir de aqui construyes tu tabla
%>
<table>
<%While not nuevoRs.EOF%>
<tr>
<td><%=nuevoRs("campo")</td>
</tr>
<%
nuevoRs.MoveNext
Wend
%>
nuevoRs.CLose
Set nuevoRs= nothing
</table>
<%
End If


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 28/05/2003, 12:26
 
Fecha de Ingreso: noviembre-2002
Ubicación: Caracas
Mensajes: 75
Antigüedad: 21 años, 6 meses
Puntos: 0
Creo que no me expliqué bien....

Necesito construir la tabla en la misma página; es decir en el mismo formulario en donde se encuentra el combo.

A menera visual quedaría el efecto en forma dinámica, al cambiar de opción en el combo cambiarían los datos de la tabla automáticamente...

El proceso es parecido cuando se tiene dos combos dependientes, en donde al cambiar de opción del primero se construye el segundo. La diferencia es, que en vez de tener 2 combos es un combo más una tabla...
  #7 (permalink)  
Antiguo 28/05/2003, 12:42
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Se me ocurre para recargar la página que lo envíes en el evento OnChange del combo y manejes una variable que define que es lo que se hace:
<script language=javascript>
function envia()
{
//Aqui puedes validar
document.tuforma.submit();
}
</script>

If request.form("action") = "" Then

<form action=archivo.asp method=post name=tuforma>
<input type=hidden name=accion value="muestra">
<select name=campo onChange="envia();">
<%While not rs.EOF%>
<option value="<%=rs("campo")%>"><%=rs("campo")%></option>
<%Wend%>
</select>
</form>

<%
Elseif request.form("accion")= "muestra"
%>
Aqui haces todo el proceso de construcción de la tabla
<%
End If
%>

La otra opción sería no recargarla pero tendrías que trabajar con capas en javascript generadas a partir de un recordset

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 30/05/2003, 08:31
 
Fecha de Ingreso: noviembre-2002
Ubicación: Caracas
Mensajes: 75
Antigüedad: 21 años, 6 meses
Puntos: 0
u_goldman gracias por el intento; pero no me sirve hacer un: document.tuforma.submit(); porque perdería el valor capturado en el combo.

En la rutina: function envia() declarada en javascript es justamente en donde necesito hacer referencia al campo table y pasarle los valorres correspondientes.

  #9 (permalink)  
Antiguo 30/05/2003, 11:04
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, aqui te va en javascript entonces, pero salvo lo que digan en el foro de javascript, solo funcionará en IE.

<script language=javascript>
var opcion= "<table border=1 align=center width=300>"
<%
y=0
Set rs= Server.CreateObject("ADODB.Recordset")
strSQL= "SELECT nombre FROM tabla"
rs.OPen strSQL, ObjConn, 3, 3
While not rs.EOF
y=y + 1
%>
var opcion<%=y%>= opcion + "<tr><td><%="campo " & y%></td><td><%=rs("nombre")%></td></tr>";
<%=vbCrLf%>
<%
rs.MoveNext
Wend
%>

function envia(mi_id)
{
capa= "opcion" + mi_id;
document.getElementById("contenido").innerHTML=eva l(capa);
}
</script>
<select name="sel" onchange="envia(sel.value);">
<%
rs.MoveFirst
While not rs.EOF
x= x + 1
%>
<option value="<%=x%>" selected><%=rs("nombre")%></option>
<%
rs.MoveNext
Wend
%>
</select>
<br>
<table border=0 cellpadding=0 cellspacing=0 align=center width=100%>
<tr>
<td width=100% id="contenido">

</td>
</tr>
</table>
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 05/06/2003, 08:36
 
Fecha de Ingreso: noviembre-2002
Ubicación: Caracas
Mensajes: 75
Antigüedad: 21 años, 6 meses
Puntos: 0
OK u_goldman, está chévere le código que me enviastes.

Sin embargo, el sql que llena el grid, no es el mismo que utilizo para crear el combo; es decir son dos tablas de la B.D. que se encuentran relacionadas.

El combo es de personas y el grid debe contener datos de los proyectos en los cuales la persona ha trabajado.

Ejm:
Pepito Perez ---> este es el nombre de la persona

Proyecto X ¬
Proyecto Y |--> Son los proyectos en que ha trabajado
Proyecto Z -

Eso quiere decir que la relación es de uno a muchos; por lo que necesito que las filas de mi grid sea dinámico también.

Cómo podría hacer ésto, basándome en el mismo código que me enviastes ?



El siguiente código es lo que tengo:

Código:
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>

<BODY>

<BR><BR>
<center>
<strong><font FACE="verdana" SIZE="4">Combo Dinámico Enlazado con un Grid</font></strong>

<FORM ACTION="" METHOD="POST" NAME="frmRecord">
<BR>
<TABLE BORDER=0 WIDTH="100%" class="DataForm">

	<TR>
		<TD WIDTH="15%">
		Persona Asignada:
		</TD>
		
		<TD WIDTH="71%">
			<Select Name="rola_persona" OnChange="cmdRolAnt(document.forms.frmRecord.rola_persona.value);">
				<%
				'---declaración de variables
				Dim Cnn, SQL, rs

				Set Cnn = Server.CreateObject("ADODB.Connection")
				Cnn.Open Application("CadenaConexion") 'conexion abierta

				SQL = "SELECT (pe_apellidos  & '_' &  pe_nombres) as nombre, "
				SQL = SQL & " (pe_apellidos  & ' ' &  pe_nombres) as nombre_persona  "
				SQL = SQL & " FROM Personal Order By (pe_apellidos & ' ' & pe_nombres)"
				Set rs = Cnn.Execute(SQL)  
								
				While Not rs.EOF
					%>
					<option value="<%=rs("nombre")%>"><%=rs("nombre_persona")%></option>
					<%
					rs.MoveNext
				Wend				
				%>
			</Select>			
		</TD>
	</TR>
		
	<TR><TR>
	<TR>
		<TD WIDTH="15%">
		Roles Asignados Anteriormente:
		</TD>
		<TD WIDTH="71%">	
		<table id="tblRecords" WIDTH="10%" border=1 align="left">
				<tr>
					<th COLSPAN="2"></th>
					<th COLSPAN="2" align="center">Período</th>
				</tr>
				<tr>					
					<th WIDTH="20%">Proyecto</th>
					<th WIDTH="20%">Rol</th>
					<th WIDTH="10%">Desde</th>
					<th WIDTH="10%">Hasta</th>
				</tr>
				
				<td id="proyecto" WIDTH="20%">									
				</td>
				
				<td id="rol" WIDTH="20%">									
				</td>
				
				<td id="feDesde" WIDTH="10%">									
				</td>
				
				<td id="feHasta" WIDTH="10%">									
				</td>
					
			</table>			
		
		</TD>
	</TR>	
		
</TABLE>

</FORM>
</Center>
</BODY>

<script language = "JavaScript">
<!--
var opcion= "<table border=1>"

<%
'---Vamos a crear nuestros arrays de proyectos desde ASP
'---El primer if detecta un cambio en el proyecto para
'---crear un nuevo array en Javascript

SQLRol = "Select ra.*, proy.py_titulo as nom_proyecto "
SQLRol = SQLRol & " From Roles_Asignados as ra, Proyectos as proy "
SQLRol = SQLRol & " Where ra.rola_proyecto_cod = proy.py_codigo Order By rola_persona, rola_rol"
set rs = CreateObject("ADODB.Recordset")
rs.Open SQLRol, Cnn

cuenta = 0
cat = "basura"

While Not rs.EOF

	if cat <> rs.Fields("rola_persona") then
	
		'---cambio de contacto, empiezo a contar en 0
		cuenta = 0		
		cat = rs.Fields("rola_persona")
		cat1 = replace(rs.Fields("rola_persona")," ","_")	
		'---además tengo que crear un nuevo array para los contactos
	
	end if
	%>
		
	var opcion<%=cat1%>_py = opcion + "<td align=left><%=rs("nom_proyecto")%></td>";
	var opcion<%=cat1%>_rol = opcion + "<td align=left><%=rs("rola_rol")%></td>";
	var opcion<%=cat1%>_feDesde = opcion + "<td align=center><%=rs("rola_fecha_desde")%></td>";
	var opcion<%=cat1%>_feHasta = opcion + "<td align=center><%=rs("rola_fecha_hasta")%></td>";
	
	
	<%		
	cuenta = cuenta + 1
	rs.MoveNext
	
wend

'---Limpiamos objetos
rs.Close
set rs = nothing
%>


function cmdRolAnt ( nom_persona ) 
{
			
	// asigna a variable cada el name creado para cada caso (proyecto, rol, fecha desde, fecha hasta)	
	capa1= "opcion" + nom_persona + "_py";
	capa2= "opcion" + nom_persona + "_rol";
	capa3= "opcion" + nom_persona + "_feDesde";
	capa4= "opcion" + nom_persona + "_feHasta";
	
	// permite hacer referencia a cada una de las columnas de la tabla definida en la forma
	document.getElementById("proyecto").innerHTML=eval(capa1);	
	document.getElementById("rol").innerHTML=eval(capa2);
	document.getElementById("feDesde").innerHTML=eval(capa3);
	document.getElementById("feHasta").innerHTML=eval(capa4);
		
}


//Inicializamos
cmdRolAnt(document.forms.frmRecord.rola_persona.value);

-->
</script>

</HTML>



Alguien me podría ayudar........ 

 :'(

Última edición por Lethe; 05/06/2003 a las 08:36
  #11 (permalink)  
Antiguo 10/06/2003, 07:15
 
Fecha de Ingreso: noviembre-2002
Ubicación: Caracas
Mensajes: 75
Antigüedad: 21 años, 6 meses
Puntos: 0
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:31.