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

Paso de variables

Estas en el tema de Paso de variables en el foro de ASP Clásico en Foros del Web. Buenos días, alguien me podría ayudar con un problema de paso de variable? el problema es que no puedo pasar los datos de una noticia ...
  #1 (permalink)  
Antiguo 05/03/2008, 04:37
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Paso de variables

Buenos días, alguien me podría ayudar con un problema de paso de variable? el problema es que no puedo pasar los datos de una noticia ya insertada en la base de datos a otro formulario para agregarle una imagen. De antemano gracias por la ayuda

Objetivo:
1) tengo un formulario en el cual se recogen datos de una noticia (nueva_noticia.asp)
2) Existe un fichero que guarda las noticias en la base de datos (agreganoticias.asp)
3) Si el usuario lo desea puede agregar imagenes a la noticia pinchando un botón
4) Si lo pincha, muestra un formulario donde puede cargar la imagen (anexos.asp)

Problema:
El problema está en el paso 2 y 3, es decir, no me pasa la variable, por lo que la imagen se carga en la carpeta del servidor pero no en la base de datos, aquí muestro los ficheros 1, 2 y 4 y los campos de la tabla:

campos de la tabla: Noticias
id_noticia (autonumerico)
fecha=fecha
titulo=texto
noticia=memo
fuente=texto

Formulario donde se recogen los datos:

<form action="agreganoticia.asp" method="post" name="form1" id="form1">

Fecha (dd/mm/aaa)
<input name="fecha" type="text" id="fecha" size="10" />
Titulo
<input name="titulo" type="text" id="titulo" size="60" />
Detalle
<textarea name="noticia" cols="55" rows="6" id="noticia"></textarea>
Fuente
<input name="fuente" type="text" id="fuente" size="60" />

<input name="SUBMIT" type=SUBMIT value="Aceptar">
<input type="reset" name="Submit" value="Cancelar" />

</form>


agreganoticia.asp

<%
dim vfecha, vtitulo, vnoticia, vfuente


vfecha=request.form("fecha")
vtitulo=request.form("titulo")
vnoticia=request.form("noticia")
vfuente=request.form("fuente")


Set Conn=Server.CreateObject("ADODB.connection") Conn.open "miservidor.mdb"
sql = "insert into noticias (fecha, titulo, noticia, fuente) values ('"&vfecha&"','"&vtitulo&"','"&vnoticia&"','"&vfue nte&"')"
conn.execute sql
%>


<a href="administrador/noticias/anexos.asp?id_noticia="<%=("id_noticia")%>>Si desea agregar archivos al documento</a>"

<%
Conn.close
Set Conn=nothing
%>

Anexos.asp
<form action="agregaanexo.asp" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input type="hidden" name="id_noticia" value="<%=id_noticia%>" >

Subir anexo
<input type=FILE size=30 name="THEFILE" />
Nombre anexo
<input name="Description1" type=TEXT id="Description1" size=50 />
Tipo de documento <select name="Category" id="Category">
<option>Archivo </option>
</select>
<input name="SUBMIT" type=SUBMIT value="Aceptar" />
</form>
  #2 (permalink)  
Antiguo 05/03/2008, 04:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 21
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Paso de variables

Para subir ficheros con ASP utilizo la librería xelupload.asp (http://www.aspfacil.com/) y el código que utilizo en la página que recibe el form de la imagen, en tú caso agregaanexo.asp es este:

Dim up, fich
Set up = new xelUpload
up.Upload()

For each fich in up.Ficheros.Items
NOMBREFICHERO = fich.Nombre
fich.GuardarComo NOMBREFICHERO, Server.MapPath("ficheros")

Next

Set up = Nothing


Lo siguiente que tendrías que hacer es con el fich.Nombre y la ruta guardarlo todo en la base de datos para poder ver la imagen cuando cargues la noticia.

Saludos!
  #3 (permalink)  
Antiguo 05/03/2008, 05:11
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Paso de variables

Gracias mikikornella, pero el problema no es subir los archivos, ya que lo hace perfectamente con el componente aspupload, que es el que estoy utilizando, el problema es que no logro pasar la variable que identifica la noticia al formulario de anexos.asp para así poder asociar el documento a dicha noticia.

Una vez más mil gracias por responder ;.)
  #4 (permalink)  
Antiguo 05/03/2008, 05:22
 
Fecha de Ingreso: marzo-2008
Mensajes: 21
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Paso de variables

Cameron en el caso del xelupload para obtener la variable no tienes que utilizar el Request.Form sino fich.id_noticia. Tal vez sea ese tu problema.

Prueba también a ponerle al campo hidden el id y no sólo el name.
  #5 (permalink)  
Antiguo 05/03/2008, 05:45
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Paso de variables

Gracias otra vez, pero ese no es el problema, el problema está entre el fichero: agreganoticias.asp y anexos.asp, es decir que no logro pasar la variable entre ellos... no se si me explico bien, o tal vez sea yo que no entiendo... lo siento.

Para subir el fichero a una carpeta del servidor lo hago perfectamente con aspUpload, el problema está que cuando paso de agreganoticias.asp -> anexos.asp no viene la variable asociada, es decir que viene en blanco, ejemplo:

http://www.mipagina.es/agreganoticia.asp?id_noticia=
  #6 (permalink)  
Antiguo 05/03/2008, 05:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 21
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Paso de variables

Ok, ahora te entiendo.

El problema es que al hacer el insert no veo que recogas el valor del id:

Set Conn=Server.CreateObject("ADODB.connection") Conn.open "miservidor.mdb"
sql = "insert into noticias (fecha, titulo, noticia, fuente) values ('"&vfecha&"','"&vtitulo&"','"&vnoticia&"','"&vf ue nte&"')"
conn.execute sql
%>

AQUI FALTA EL CÓDIGO PARA OBTENER EL ID DE LA NOTICIA

<a href="administrador/noticias/anexos.asp?id_noticia="<%=("id_noticia")%>>Si desea agregar archivos al documento</a>"


Lo que debes hacer es poner este código en ese apartado, siempre y cuando el id_noticia este definido en la tabla como clave principal:

SQL = "SELECT IDENT_CURRENT('noticias')"
Set Recordset = Conexion.execute(SQL)
id_noticia= Recordset(0).Value


A ver si esta es la solución.

Saludos!
  #7 (permalink)  
Antiguo 05/03/2008, 09:51
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Paso de variables

Hola, gracias de nuevo, ahora me dice que se requiere un objeto en la linea 61, y la línea 61 es esta:

Set Recordset = Conexion.execute(SQL)
  #8 (permalink)  
Antiguo 05/03/2008, 10:07
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Paso de variables

Cambié conexion.execute(SQL) por conn.execute(SQL)
----------------------------------------------------------------------------------------------------------

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Controlador ODBC Microsoft Access] La función 'IDENT_CURRENT' no está definida en la expresión.

/its/administrador/noticias/agreganoticia.asp, línea 61
  #9 (permalink)  
Antiguo 05/03/2008, 10:29
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Re: Paso de variables

veamos tu código de la pagina:

agreganoticia.asp
Cita:
<%
dim vfecha, vtitulo, vnoticia, vfuente


vfecha=request.form("fecha")
vtitulo=request.form("titulo")
vnoticia=request.form("noticia")
vfuente=request.form("fuente")


Set Conn=Server.CreateObject("ADODB.connection") Conn.open "miservidor.mdb"
sql = "insert into noticias (fecha, titulo, noticia, fuente) values ('"&vfecha&"','"&vtitulo&"','"&vnoticia&"','"&vf ue nte&"')"
conn.execute sql
%>


<a href="administrador/noticias/anexos.asp?id_noticia="<%=("id_noticia")%>>Si desea agregar archivos al documento</a>"

<%
Conn.close
Set Conn=nothing
%>
no puedes incluir <%=("id_noticia")%> dado que solo haces un insert, y no retraes el id de la noticia ingresada. mi sugerencia de como quedaría tu código esta mas abajo

Cita:
<a href="administrador/noticias/anexos.asp?id_noticia="<%=("id_noticia")%>>Si desea agregar archivos al documento</a>"

mi idea es

agreganoticia.asp
Cita:
<%
dim vfecha, vtitulo, vnoticia, vfuente


vfecha=request.form("fecha")
vtitulo=request.form("titulo")
vnoticia=request.form("noticia")
vfuente=request.form("fuente")


Set Conn=Server.CreateObject("ADODB.connection") Conn.open "miservidor.mdb"
sql = "insert into noticias (fecha, titulo, noticia, fuente) values ('"&vfecha&"','"&vtitulo&"','"&vnoticia&"','"&vf ue nte&"')"
conn.execute sql
%>

'aqui deverias de manejar un control de errores, busca informacion sobre
'on resume next
'si el insert se produce correctamente

'tenemos que colocar una SQL en donde podamos lograr retraer el valor anterior
'si guardaras el codigo de usuario que esta creandola fuera perfecto
'pero no lo veo en el insert
'entonces con lo que tenemos podrias ser
sql = "select * from noticias where fecha = '"&vfecha &"' and titulo = '"&vtitulo&"'"

'ejecutamos RS y asignamos el valor a tu id
id_noticia = rs("id_noticia")

'limpiamos rs

'ahora que si tenemos el id podemos usar esta instrucción.
<a href="administrador/noticias/anexos.asp?id_noticia="<%=("id_noticia")%>>Si desea agregar archivos al documento</a>"

<%
Conn.close
Set Conn=nothing
%>


suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #10 (permalink)  
Antiguo 05/03/2008, 11:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 21
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Paso de variables

El ejemplo que te pasé era para bases de datos SQL Server por eso te debe de fallar. ¿No es SQL Server, verdad?

Lo que deberías hacer es lo que dice JuanRAPerez pero poniendo la consulta así
select MAX(id_noticia) from noticias

Con esto obtendrías el valor máximo del id_noticia y podrías pasarlo como variable
  #11 (permalink)  
Antiguo 05/03/2008, 11:29
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Re: Paso de variables

el lio de usar select MAX(id_noticia) from noticias es que si hay dos usuarios ingresando noticias

usuario a y usuario b y sos vos usuario A, y le das insert, y se ejecuta tu insert de usuario a, luego insert usuario b (casi al mismo instante) al retraer el max te retraera el ultimo que se inserto eso quiere decir el del usuario b

por eso lo correcto tendría que ser retraer el ultimo ingresado pro el usuario

"select top 1 from noticias where usuario = 'YO' order by id desc"

me retraería mi ultima noticia (la que acabo de insertar) y me permitiría adicionarle las imágenes
__________________
JuanRa Pérez
San Salvador, El Salvador
  #12 (permalink)  
Antiguo 05/03/2008, 12:01
 
Fecha de Ingreso: enero-2008
Mensajes: 3
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Paso de variables

Ahora me da este error que indico abajo, luego de haber dejado el código de esta manera:
--------------------------------------------------------------------------------------------------------------------


<%
dim vfecha, vtitulo, vnoticia, vfuente, id_noticia

'se recogen los datos del formulario, declarando las diferentes variables
vfecha=request.form("fecha")
vtitulo=request.form("titulo")
vnoticia=request.form("noticia")
vfuente=request.form("fuente")




Set Conn=Server.CreateObject("ADODB.connection")
Conn.open "miservidor.mdb"
sql = "insert into noticias (fecha, titulo, noticia, fuente) values ('"&vfecha&"','"&vtitulo&"','"&vnoticia&"','"&vfue nte&"')"
conn.execute sql
%>
<%
Set rs =Server.CreateObject("ADODB.RecordSet")
sql ="select top 1 from noticias order by id_noticia desc"
rs.open SQL, conn
id_noticia= rs("id_noticia")

%>


<a href="administrador/anexos.asp?id_noticia="<%=id_noticia%>>Agregar nueva oferta de empleo </a>
<p align="center"><a href="index.asp">Volver al listado de noticias </a>

<%
rs.close
Conn.close
Set rs=nothing 'se cierra la conexión
Set Conn=nothing
'se libera el objeto conexión
%>

-----------------------------------------------------------------------------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Controlador ODBC Microsoft Access] La instrucción SELECT incluye una palabra reservada, le falta un argumento o está mal escrito, o bien los signos de puntuación no son correctos.

/its/administrador/noticias/agreganoticia.asp, línea 62

------------------------------------------------------------------------------------------------------------------
Gracias de antemano por la colaboración
  #13 (permalink)  
Antiguo 05/03/2008, 12:21
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Re: Paso de variables

cambia esto
sql ="select top 1 from noticias order by id_noticia desc"

por esto
sql ="select top 1 * from noticias order by id_noticia desc"

me imagino que esa es la linea.....
__________________
JuanRa Pérez
San Salvador, El Salvador
  #14 (permalink)  
Antiguo 05/03/2008, 12:45
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Paso de variables

Gracias otra vez por la colaboración, me sigue saliendo la página así:

http://mipagina/administrador/anexos.asp?id_noticia=

con este error:


HTTP/1.1 500 Server Error
  #15 (permalink)  
Antiguo 05/03/2008, 15:41
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Re: Paso de variables

es error de algo en el asp

1 usa firefox y prueba o
2 lee este post

http://www.forosdelweb.com/f59/error...3/#post1729230

has el proceso de nuvo y te dira donde esta el error ene l codigo....

pega el error la linea en que te da y te diremos como solucionarlo

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #16 (permalink)  
Antiguo 06/03/2008, 03:12
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Paso de variables

Ya la línea estaba desmarcada, no obstante lo marqué y me indica que es un error interno del servidor, y lo desmarqué y me volvió a dar esto:

HTTP/1.1 500 Server Error
  #17 (permalink)  
Antiguo 06/03/2008, 03:18
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Paso de variables

Lo que pasaba es que estaba buscando una página que no existía, así que ese era ese error, no obstante continuo con no poder pasar la variable del identificador de la noticia para poderle agregar el anexo.

en la barra de direcciónes se ve así, sin la variable:

http://www.mipagina.es/administrador...sp?id_noticia=
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 15:30.