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

Funcion error

Estas en el tema de Funcion error en el foro de ASP Clásico en Foros del Web. Hola a todos, tengo una funcion que me llena una lista pero me genera este error. Tipo de error: Error de compilación de Microsoft VBScript ...
  #1 (permalink)  
Antiguo 18/05/2006, 15:31
Avatar de aurelitus  
Fecha de Ingreso: marzo-2006
Mensajes: 59
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Funcion error

Hola a todos, tengo una funcion que me llena una lista pero me genera este error.

Tipo de error:
Error de compilación de Microsoft VBScript (0x800A0401)
Se esperaba un final de instrucción
/persistencia/METAS_PERSISTENCIA.asp, línea 150, columna 20
ComponerLista(xsuc);
-------------------^


Esta funcion la tengo dentro de un SELECT y la ejecuto con un evento ONCHANGE y funciona perfecto, pero cuando la llamo por fuera del SELECT en otra parte del programa me sale error....que esta mal?
  #2 (permalink)  
Antiguo 18/05/2006, 15:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Para empezar, creo que no deberia tener ese punto y coma ";"
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 18/05/2006, 15:47
Avatar de aurelitus  
Fecha de Ingreso: marzo-2006
Mensajes: 59
Antigüedad: 19 años, 1 mes
Puntos: 0
sin punto y coma

Ya lo probe sin punto y coma y tampoco...lo he probado de mil formas diferentes, y no se que me falta.....
  #4 (permalink)  
Antiguo 18/05/2006, 15:49
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Puedes poner tu codigo funcional?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 18/05/2006, 16:19
Avatar de aurelitus  
Fecha de Ingreso: marzo-2006
Mensajes: 59
Antigüedad: 19 años, 1 mes
Puntos: 0
UGOLDMAN, gracias por tu atención

Este es el SCRIPT donde estan las funciones que utilizo:


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

<%
'ARREGLO PARA LISTA DE SUCURSALES
'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 DISTINCT LOCALIDADES.[Codigo Oficina Comercial] AS SUC, LOCALIDADES.[Descripcion Oficina Comercial] AS DESCSUC, LOCALIDADES.[Codigo Agencia] AS OFI, LOCALIDADES.DescABRV AS DESCOFI FROM METAS LEFT JOIN LOCALIDADES ON METAS.LOCALIDAD = LOCALIDADES.[Codigo Agencia] ORDER BY LOCALIDADES.[Codigo Oficina Comercial]"
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("SUC") then
' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("SUC")
'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("DESCOFI")%>","<%=rs.Fields("O FI")%>");

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


<%
'Limpiamos objetos
rs.Close
set rs=nothing
set rs1=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.OFICINAS.options[contador] = optionObj;

} // for
} // ComponerLista


function BorrarLista() {

Listas.OFICINAS.length=0;
}

//Inicializamos
ComponerLista (1);

-->
</SCRIPT>


Esta parte es donde lo llamo dentro del SELECT y funciona perfecto.


<SELECT NAME="SUCURSALES" SIZE="1"
OnChange="ComponerLista (document.forms.Listas.SUCURSALES[selectedIndex].value);" >


Por ultimo esta parte es de donde llamo la función fuera del SELECT y me genera error.


XSUC=REQUEST.FORM("SUCURSALES")
XOFI=REQUEST.FORM("OFICINAS")
IF XSUC="" OR XSUC=0 THEN
ELSE

ComponerLista("XSUC");

END IF


Debo aclarar que la variable XSUC trae el valor correcto, todo esta dentro de los <% y %> necesarios....

Agradezco tu ayuda....
  #6 (permalink)  
Antiguo 18/05/2006, 16:32
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
ComponerLista es una funcion de javascript, no de ASP, por lo tanto no la puedes llamar asi, el error es de conceptos, ASP se ejecuta en el servidor, en tanto que javascript lo hace en el cliente, para el momento que quieres llamar a tu funcion javascript desde ASP, esta no existe...no se que pretendes, pero podrias hacer algo asi:

IF XSUC="" OR XSUC=0 THEN
ELSE
%>
<script language="javascript">
ComponerLista("<%=XSUC%>");
</script>
<%
END IF

Pero tienes que ver como lo implementas porque veo que tambien inicializas esa funcion previamente.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 18/05/2006, 16:55
Avatar de aurelitus  
Fecha de Ingreso: marzo-2006
Mensajes: 59
Antigüedad: 19 años, 1 mes
Puntos: 0
No Funciona

No Funciono, Ahora No Sale El Mensaje De Error Pero Igual La Segunda Lista Pierde Lo Que Ya Habia Cargado.
De Que Otra Forma Puedo Hacer Que La Segunda Lista No Pierda Lo Que Ya Cargo?...por Ejemplo Si Le Meto Al Select El Evento On Mousemove Funciona Pero Igual El Cliente Vera La Segunda Lista Vacia Mientras Pasa El Mouse Encima De La Primera.

Podria Cambiar El Script A Vbscript?

O Como Hago Para Llenar La Segunda Lista Sin Tener Que Pasar Por La Funcion?
  #8 (permalink)  
Antiguo 18/05/2006, 17:49
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Cita:
Pero tienes que ver como lo implementas porque veo que tambien inicializas esa funcion previamente.
Mas bien deberias modificar tu codigo, hay muchos ejemplos de listas dependientes en este foro.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 19/05/2006, 04:55
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Una solucion muy elegante para las listas dependientes es usar AJAX aunque, cmo dice u_goldman, hay muchos ejemplos en el foro sobre listas dependientes. Existe 3 formas de implemetarlas:

1 - Recargar la página cada vez que en la lista principal se produce un cambio (evento onChange -javascript- de la lista envia POST o GET a la pagina que la procesa al inicio). Es engorroso, obsoleto y poco profesional pero es facil de implementar.

2 - Cargar en un array (o multiarray) javascript todas las posibilidades que se puedan dar en la lista dependiente. Luego, en el evento onChange de la lista, llamas a una funcion javascript que seleccione de ese array los datos y rellene la lista dependiente. Es algo mas complicado de implementar pero es muy efectivo y hay muchos ejemplos en el foro. Lo malo es que si hay muchos datos (por ejemplo, todas las localidades de todas las provincias de España -serán unas 15.000 aprox.- ) la página tarda mucho en cargar un produce una página fuente larguísima (aunque esto no debe importarte mucho).

3 - Usando AJAX. Al usar una llamada asincrona a otra pagina, no tienes ni que recargar la página cada vez que seproduce el evento onChange, ni que procesar todos los posibles datos (con lo que aligeras la carga de la pagina). AJAX es muy util para estas cosas.


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
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 18:09.