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

insertar datos con dos listas dependientes

Estas en el tema de insertar datos con dos listas dependientes en el foro de ASP Clásico en Foros del Web. tengo estas tablas : category catID catName company Listid subcatid companyname * NOTA TAMBIEN PROBE PONIENDOLE UN CAMPO catID subcategory SubcatID catID subcatName el tema ...
  #1 (permalink)  
Antiguo 18/05/2005, 08:08
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
insertar datos con dos listas dependientes

tengo estas tablas :

category

catID
catName

company

Listid
subcatid
companyname

* NOTA TAMBIEN PROBE PONIENDOLE UN CAMPO catID

subcategory

SubcatID
catID
subcatName


el tema es el siguiente necesito insertar datos de acuerdo a la categoria y subcategoria en la tabla compañia , es decir crear dos listas dependientes en un formulario y de acuerdo a categoria y subcategoria me ingrese el dato correspondiente donde tiene que ir , alguien tiene algun ejemplo de como hacerlo ??? muchas gracias -

Última edición por hugorei; 19/05/2005 a las 20:07
  #2 (permalink)  
Antiguo 18/05/2005, 09:20
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 8 meses
Puntos: 2
Fijate en la biblioteca de funciones de este foro. Ahí hay un par de ejemplos de lo que pedís
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #3 (permalink)  
Antiguo 18/05/2005, 17:47
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
insert into compañia values ('"&request.form("catid")&"','"&request.form("subc atid")&"','nombredelacompañia')

o así si catid y subcatid son numericos.
insert into compañia values ("&request.form("catid")&","&request.form("subcati d")&",'nombredelacompañia')
  #4 (permalink)  
Antiguo 18/05/2005, 18:06
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola.

Pienso que lo que ocupas es tal como lo tiene trasgukabi, pero para eso ocuparias cabiar que tu tabla Compania tuviera el campo CatID, por otra parte, tambien es posible que tu SubcategoriaID sea UNICO en toda la tabla, con lo cual no necesitas tener CATID en la tabla de compania, entonces lo que te puso trasgukabi, seria correcto tambien, pero quitando la parte de catID, algo como:

insert into compañia values (&request.form("subcatid")&",'nombredelacompañia ')

Donde solo te preocupas por la SUBCATEGORIAID, despues, si quieres saber a que categoria pertenece es algo como:

select c.catname from Categoria c
join SubCategoria sc on c.catid = sc.catid
where sc.catid = " .. La subcateforia que guardaste en la tabla para la compañía.

Bueno, algo asi...

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #5 (permalink)  
Antiguo 18/05/2005, 19:10
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
El tema que en la subcategorias existen repetidas por ejemplo tengo una categoria de electricidad donde figura la subcategoria accesorios , y tengo otra categoria que se llama computacion que tiene una subcategoria llamada accesorios ese es el problema .

Por otro lado estube trabajando con un codigo de listas dependientes , pero una lista que es la primera me la carga sin problemas pero la otra lista que es dependiente de la 1 no me la carga , les paso el codigo a ver quien me puede dar una mano antes que me vuelva loco -


<td height="250"><FORM NAME="Listas" METHOD="POST" ACTION="file:receive.asp">
<div align="center">
<p><B><font color="#FFFFFF"> <br>
</font></B></p>
<table width="500" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td height="21" colspan="2"><div align="center" class="navlink10bl"></div></td>
</tr>
<tr>
<td class="bbullet7w"><div align="right"></div></td>
<td height="20" class="bbullet7w"><font color="#FF0000">Note
(*) are fequired fields</font></td>
</tr>
<tr>
<td width="150"> <div align="right" class="bodyBold8">*
Nombre del Negocio: </div></td>
<td><input type="text" name="name"> </td>
</tr>
<tr>
<td width="150"> <div align="right" class="bodyBold8">*Direccion:
</div></td>
<td><input name="address" type="text" size="30"></td>
</tr>
<tr>
<td width="150" valign="top"> <div align="right" class="bodyBold8">
*Servicio o Rubro: </div></td>
<td><textarea name="services" cols="30" rows="4" id="services"></textarea>
</td>
</tr>
<tr>
<td width="150"> <div align="right" class="bodyBold8">Email
: </div></td>
<td><input name="email" type="text" size="30"></td>
</tr>
<tr>
<td width="150"> <div align="right"><span class="bodyBold8">*
Telefono:</span> </div></td>
<td><input name="phone" type="text" size="30"></td>
</tr>
<tr>
<td width="150"> <div align="right" class="bodyBold8">
Horario de Arenci&oacute;n</div></td>
<td><input name="fax" type="text" size="30"></td>
</tr>
<tr>
<td width="150"> <div align="right" class="bodyBold8">*Enlace:
</div></td>
<td><input name="url" type="text" size="30"></td>
</tr>
<tr>
<td><div align="right" class="bodyBold8">*Keyword:</div></td>
<td><input name="keyword" type="text" id="keyword" size="30"></td>
</tr>
<tr>
<td width="150"> <div align="right" class="bodyBold8">Imagen
path: </div></td>
<td><input name="image" type="text" id="image2" size="30"></td>
</tr>
<tr>
<td width="150">&nbsp;</td>
<td class="navlink"><b><font color="#FFFFFF"><font color="#E48183"><font color="#0000FF">Seleccione
una categoria</font></font></font> </b> <select name="Category" size="1"
onChange="ComponerLista (document.forms.Listas.category[selectedIndex].value);">
<% Response.Flush() %>
<%
Dim oConn, rs, SQL, cuenta, catID

Set oConn = Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")

oConn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Server.MapPath("CATEGORY.mdb")&" ; Jet OLEDB:Database Password=741"

SQL="SELECT catID, catName FROM category"
rs.Open SQL, oConn
cuenta=1
while not rs.EOF
%>
<option value="<%=rs.Fields("catID")%>"
<% if cuenta=1 then%>
selected
<%end if%>> <%=rs.Fields("catName")%></option>
<%
rs.MoveNext
cuenta=cuenta+1
wend
rs.Close
%>
</select> <b> </b> <b> </b></td>
</tr>
<tr>
<td width="150">&nbsp;</td>
<td><b><font color="#E48183"><font color="#0000FF">Seleccione
una subcategoria</font></font> </b> <select name="subcategory" size="1">
</select> </td>
</tr>
</table>
<p><b><br>
<font color="#E48183">
<input name="submit" type=submit style="FONT-SIZE: 8pt; COLOR:#000080; FONT-FAMILY: Arial; BACKGROUND-COLOR: #0098FF" value=" Buscar">
</font> <br>
<font color="#E48183"> <br>
</font></b><br>
<br>
<br>
</p>
</div>
</FORM>
<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}

<%
'Vamos a crear nuestros arrays de productos desde ASP
'El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript
SQL="SELECT catID, subcatName, SubcatID FROM subcategory ORDER BY catID, subcatID"
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("catID") then

' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("catID")
'además tengo que crear un nuevo array para la categoría
%>
var opciones<%=cat%> = new Array();
<%
end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("subcatName")%>","<%=rs.Fields ("subcatID")%>");

<%
cuenta=cuenta+1
rs.MoveNext
wend
%>


<%
'Limpiamos objetos
rs.Close
set rs=nothing
oConn.Close
set oConn=nothing
%>

var contador;

function ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);

for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );

Listas.subcategory.options[contador] = optionObj;
} // for
} // ComponerLista


function BorrarLista() {

Listas.subcategory.length=0;
}

//Inicializamos
ThisIndex = document.forms.Listas.CATEGORY.selectedIndex;
ComponerLista (ThisIndex + 1);
//ComponerLista(1);

-->
</SCRIPT> <br> &nbsp;</td>
<%
for i = 1 to 1000000
x = x + 1
next
%>
<script>
<!--
if (document.all)
{
document.all("w").style.display = 'none';
}
//-->
</script>
</tr>
</table>

El tema sería recoger las categorias y las subcategorias de los desplegables que me muestra de base de datos e introducirla donde iria la compañia es decir mientras cargo el fomulario con los datos con los desplegables le cargo la categoria y cubcategoria que pertencen -

Última edición por hugorei; 18/05/2005 a las 19:16
  #6 (permalink)  
Antiguo 18/05/2005, 19:15
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Entonces...

Es el caso que te mencione, donde necesitas agregar a la tabla compania el campo de CatID, y usar lo que te digo tragus

Solo que antes del insert debes definir que ID's insertar.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #7 (permalink)  
Antiguo 18/05/2005, 19:20
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
a ver si entiendo de la forma que me decis vos deberia pasarle por el formulario las categorias y las subcategorias y despues pasarla , lo que pasa es que son muchas con los desplegables no seria mas facil ??? por ahi te entendi mal , de todos modos te agradezco tu ayuda y si tienes alguna idea por aqui ando -

muchisimas gracias
  #8 (permalink)  
Antiguo 19/05/2005, 05:26
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
por favor si alguien puede darle una miradita al codigo estarìa muy agradecido , muchisimas gracias y perdonen las molestias pero estoy medio desesperado - por favor ayuda

Última edición por hugorei; 19/05/2005 a las 07:44
  #9 (permalink)  
Antiguo 19/05/2005, 08:25
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
help . no se olviden de mi por favor toda una aplicacion depende de resolver este tema -
  #10 (permalink)  
Antiguo 19/05/2005, 09:12
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hum...

Entonces aun estas en la parte de recoger datos solamente ?

Bueno, investiga acerca de Request.Form de ASP, y como es que funciona, para que comprendas mejor como vas a cargar los datos que necesitas, despues te enfrentaras al problema de tus bases de datos.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #11 (permalink)  
Antiguo 19/05/2005, 10:29
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
No a ver si me entendes, los datos estan cargados , lo que me queda por cargar son los negocios , se como funciona el request.form perfectamente pero a lo que voy es que cuando cargo la empresa debe ir dentro de la categoria o subcategoria que ya esta cargada , me explico ? la tabla que no esta cargada es la de los negocios la tabla llamada company - en category estan cargadas todas las cetegorias con sus respectivos datos - igual que en la subcategoy - me explico ?
  #12 (permalink)  
Antiguo 19/05/2005, 12:44
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
¿¿ ??

Ahora si me confundi, no se bien que estas tratando de hacer, sorry, estas tratando de insertar en una tabla una compañía que regoges, o estas leyendo una compañía de una lista, bien, porque no explicas paso a paso como quisieras que trabajara.. como:

1. Mostrar datos en select box de categorias y subcategorias

2. Mostrar un text-field donde escriben un nombre para la compania..

No se, algo mas claro.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #13 (permalink)  
Antiguo 19/05/2005, 13:35
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
Mira mas explicito que esto imposible


http://www.Planet-Source-Code.com/vb...=7745&lngWId=4


bajate este codigo que tambien te puede servir a vos , fijate de default.asp
ahi tenes para agregar los comercios , el tema es que cuando agregas el negocio hay un solo combox que es de subcategoria yo le quiero agregar las categorias , es decir dos listas dependientes para asi poder insertar la categoria y la subcategoria donde corresponde -


saludos

gracias
  #14 (permalink)  
Antiguo 19/05/2005, 15:29
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
Te explico en esta tabla

category

cat id
catname

tenes el codigo de la catgoria + el nombre

en esta otra tabla :

subcategory

Subcatid
catid
subcatname

tenes el id de la subcategoria + id categoria + el nombre de la subcategoria

y en esta otra tabla tienes :

company

Listid
subcatid
companyname

el id de la compañia
el subcatid de la subcategoria
y el nombre de la compañia

menos esta ultima las demas ya estan cargadas con los datos el tema es le agrego el un campo a esta ulitma tabla catid es decir codigo de categoria , entonces tendria la categoria y la subcategoria cada vez que quiero agregar un comercio le agregaria la categoria la subcategoria (datos numericos ) y todos los datos de la empresa , bueno el tema es que la categoria y la subcategoria se la quiero pasar a esta tabla company por intermedio de dos combox dependientes uno del otro , lleno todo el formulario luego despliego el primer combox , segun lo elegido el segundo combox me muestra la sub categoria y ahi un click y empresa dada de alta , en su catgoria y subcategoria correspondiente -

se entendio ?
  #15 (permalink)  
Antiguo 19/05/2005, 15:37
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
te repito lo que escribí en el último mensaje:
insert into company values ("&request.form("catid")&","&request.form("subcati d")&",'nombredelacompañia')

y si lo que quieres es armar esos combobox, busca en el foro.
  #16 (permalink)  
Antiguo 19/05/2005, 17:00
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
de verdad te agradezco tengo un codigo de listas dependientes pero solo me carga en primer combox no me arma el segundo y ya me duele la cabeza y no entiendo por que no me carga el segunco combox




<H2><CENTER>Listas dinámicas dependientes</CENTER></H2>
<P>&nbsp;
<P>
<FORM NAME="Listas" METHOD="POST" ACTION="receive.asp">
<B>Categorías</B>
<SELECT NAME="category" SIZE="1"
OnChange="ComponerLista (document.forms.Listas.Category[selectedIndex].value);">
<%
Dim oConn, rs, SQL, cuenta, categoria

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("CATEGORY.mdb")

SQL="SELECT * FROM category"
rs.Open SQL, oConn
cuenta=1
while not rs.EOF
%>
<OPTION VALUE="<%=rs.Fields("catID")%>"
<% if cuenta=1 then%>
SELECTED
<%end if%>>
<%=rs.Fields("catName")%></OPTION>
<%
rs.MoveNext
cuenta=cuenta+1
wend
rs.Close
%>
</SELECT>
<P><B>Subcategorias</B>
<SELECT NAME="subcategory" SIZE="1">
</SELECT>
<P><INPUT TYPE="submit"></FORM>

<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}

<%
'Vamos a crear nuestros arrays de productos desde ASP
'El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript

SQL="SELECT * FROM subcategory "
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("catID") then
' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("catID")
'además tengo que crear un nuevo array para la categoría
%>
var opciones<%=cat%> = new Array();
<%
end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("catName")%>","<%=rs.Fields("s ubcatID")%>");

<%
cuenta=cuenta+1
rs.MoveNext
wend
%>


<%
'Limpiamos objetos
rs.Close
set rs=nothing
oConn.Close
set oConn=nothing
%>

var contador;

function ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);

for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );

Listas.category.options[contador] = optionObj;
} // for
} // ComponerLista


function BorrarLista() {

Listas.category.length=0;
}

//Inicializamos
ComponerLista (1);

-->
</SCRIPT>
<br>
</FORM>

Alguien se da cuenta por que no carga el segundo com box y si carga el primero ?

Última edición por hugorei; 19/05/2005 a las 20:04
  #17 (permalink)  
Antiguo 19/05/2005, 17:02
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

A mi me parece mejor dejarlo como esta, mas facil, pero lo que dices es que los nombres de las categorias se repiten, ese es el problema al momento de visualizarlo verdad?

Bueno, entonces puedes hacer esto:

SubCategoria: [Select Box]

CategoriaNombre1
- SubcategoriaNombre1.1
- SubcategoriaNombre1.2
- SubcategoriaNombre1.3
- SubcategoriaNombre1.4

CategoriaNombre2
- SubcategoriaNombre2.1
- SubcategoriaNombre2.2
- SubcategoriaNombre2.3
- SubcategoriaNombre2.4

....

Asi seria mas facil, cambiar solamente la parte visual, porque viendo muy rapido el esquema, no necesitas guardar el CategoriaID, te explico porque...

SubacategoriID es lineas, es decir, tienes esto:

subCatID = 1,2,3,4,5,6,7,8,9,10
catID ==== 1,1,1,2,2,2,3,3,3,3

Espero haberme explicado, las SubCatID nunca se repiten, el nombre si, pero la forma de relacionarlas con la tabla de categorias es mendieante en CatID en la tabla de subcategorias.

Entonces el esquema esta bien, de hecho es ligero y facil... ahora lo que necesitas solamente es crear un SELECT BOX donde puedas facilmente distinguir entre las diferetnes categorias, lo que vas a guardar en la tabla compania seguira siendo lo mismo, tal como funciona ahorita, eso es lo mas facil...

Entonces en lo que tienes que trabajar es en armar el Select Box primero.

trasgukabi, para usar tu insert el tendria que cambiar la estructura de sus tablas no solamente el select.

Ahora, para obtener en una consulta toda la relacion de categorias y subcategorias seria algo como:

select c.catid, c.catname, sc.catid, sc.subcatname from Categoria c
join SubCategoria sc on c.catid = sc.catid
group by c.catID

Algo asi, debes probar, ya con esta consulta podras construir tu select box.

Existen mil metodos, los dos select box tambien son validos, pero me parece que en tu caso esto que te digo seria lo mas facil de implementar para evitar muchos cambios radicales.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #18 (permalink)  
Antiguo 19/05/2005, 18:05
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
las categorias no se repiten las subcategoria se repiten , y se muestra en la pagina web categoria - subcategoria - y el contenido de esta -

El tema por ejemplo es que tengo una categoria que se llama electricidad y otra que se llama computacion en las dos figura una subcategoria accesorios entonces cuando voy a insertar el negocio no se cual es la subcategoria que le corresponde -
  #19 (permalink)  
Antiguo 19/05/2005, 20:01
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
Bueno estoy muy mareado ya no se ni lo que tengo que hacer me voy a dormir mañana seguire pensando , gracias a todos los que me ayudaron .-
  #20 (permalink)  
Antiguo 20/05/2005, 13:37
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 21 años, 10 meses
Puntos: 0
El codigo que puse en esta web alguien encontro el error por que deberìa funcionar , no se donde esta el Puto error -
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 21:14.