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

Traspaso de datos a formulario

Estas en el tema de Traspaso de datos a formulario en el foro de ASP Clásico en Foros del Web. Hola¡¡¡ estoy intentando mostrar el campo Codigo de una tabla de mi base de datos en un control select, hasta hay se me ejecuta bien, ...
  #1 (permalink)  
Antiguo 29/03/2008, 07:36
 
Fecha de Ingreso: marzo-2008
Mensajes: 42
Antigüedad: 16 años, 2 meses
Puntos: 0
Traspaso de datos a formulario

Hola¡¡¡ estoy intentando mostrar el campo Codigo de una tabla de mi base de datos en un control select, hasta hay se me ejecuta bien, ahora lo que quiero hacer es que al pulsar un determinado código y darle a modificar pase a la página siguiente y en un formulario esten los datos de ese producto rellenos, para poder ser editados y finalizar dandole al boton guardar para hacer efectivos los cambios.

Ahora mismo lo único que he conseguido es que me llene el formulario de la página de edición con el primer registro, y tras las últimas modificaciones intentando que me lo rellenara con el articulo seleccionado, directamente se pasa a la sentencia ("No existe ningún artículo con dicho código").

Código:
<FORM ACTION="Editar.asp" METHOD="POST">
<INPUT TYPE="Submit" VALUE="Modificar">
</FORM>
<%
session("servidor")="***********"

session("usuariobd")="**********"

session("contrasenabd")="**********"

session("bd")="***********"
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")

conexion.Open = "driver={MySQL};server="&session("servidor")&";uid="&session("usuariobd")&";pwd="&session("contrasenabd")&";database="&session("bd")&""
dim registros
set registros = Server.CreateObject("ADODB.RecordSet") 
registros.open "select Codigo,Descripcion,Precio, Referencia from articulos",conexion
%>
<select name="Codigo" value="<%= Request.Form("Codigo") %>" size="1" id="select2" onchange="cambia()">
<option value="0">==Seleccionelo !!==</option>
<%
do until registros.EOF
%>
<%
if registros.fields("Codigo")=value then
response.Write("<option selected>" & registros.fields("Codigo") & "</option>")
else 
response.Write("<option>" & registros.fields("Codigo") & "</option>")
end if
%>
<%
registros.movenext
loop
conexion.close
%>

Código:
<html>
<head>
<title>Edicion</title>
</head>
<body>
<%

session("servidor")="*********"

session("usuariobd")="*********"

session("contrasenabd")="*******"

session("bd")="*******"
dim conexion 
set conexion = Server.CreateObject("ADODB.Connection")

conexion.Open = "driver={MySQL};server="&session("servidor")&";uid="&session("usuariobd")&";pwd="&session("contrasenabd")&";database="&session("bd")&""
dim registros

set registros = Server.CreateObject("ADODB.RecordSet") 

guardado=request.querystring("Codigo") 

registros.Open "SELECT * FROM articulos where Codigo='"&guardado&"'", conexion


if not registros.eof then
%>
<form action="Editar.asp" method="post">
<input type="text" name="Codigo"
value="<%response.write(registros("Codigo"))%>"><br>
<input type="text" name="Descripcion"
value="<%response.write(registros("Descripcion"))%>"><br>
<input type="text" name="Precio"
value="<%response.write(registros("Precio"))%>"><br>
<input type="text" name="Referencia"
value="<%response.write(registros("Referencia"))%>"><br>
<input type="submit" value="Guardar"><br>
</form>
<%
else
  response.write("No existe ningún artículo con dicho código")
end if
conexion.close
%>
</body>
</html>
Gracias ¡¡¡
  #2 (permalink)  
Antiguo 29/03/2008, 10:33
 
Fecha de Ingreso: marzo-2008
Mensajes: 342
Antigüedad: 16 años, 2 meses
Puntos: 4
Re: Traspaso de datos a formulario

no se entiende mucho lo que quieres hacer, más que todo en el código que lo has hecho en 2 partes

solo te explico algo de teoria a ver si lo puedes aplicar a tu código

en el formulario

<form...>
<input name"valor"...>

en la página de destino

dim valor
valor= request.form("valor")

<form...>

<input name "valor_recibido" value="<%=valor%>">...


asi escribes un formulario con lso mismos valores recogidos del formulario anterior

PD. trata de llevar el valor de la session en el código de destino. asi no te saldra el error de no se encuentra el producto.

Un saludo
  #3 (permalink)  
Antiguo 29/03/2008, 13:06
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Traspaso de datos a formulario

Hola:

Se me ocurre hacer esto:

Aqui esta el formulario en donde cargas los datos de la tabla "ARTICULOS"

Código HTML:
<form name="cualquiera" action="editar.asp" method="post">
	<!-- Aqui pones todos los parametros de conexion-->
<%
	dim conexion
	set conexion = Server.CreateObject("ADODB.Connection")
	
	conexion.Open = "driver={MySQL};server="&session("servidor")&";uid="&session("usuariobd")&";pwd="&session("contrasenabd")&";database="&session("bd")&""
	dim registros
	set registros = Server.CreateObject("ADODB.RecordSet") 
	registros.open "select Codigo,Descripcion,Precio, Referencia from articulos",conexion

%>
	<table>
		<tr>
			<td>Codigo:</td>
			<td>
				<select name="codigo">
					<option selected value="">==Seleccionelo !!==</option>
					<%
						if not registros.EOF then
							do while not registros.EOF %>
								<option value="<%response.Write(registros("Codigo"))%>"><%response.Write(registros("Codigo"))%></option>
					<%			registros.movenext
							loop
						else %>
							<option value=" ">No hay Códigos resistrados</option>
					<%	end if
						registros.close
					%>
				</select>
			</td>
		</tr>
	</table>
	<input type="submit" value="modificar">
</form> 
En este otro, recibes el codigo que seleccionaste en la pagina anterior y por medio de el, filtras los otros datos para llenar tus cajas de texto y hacer la modificacion...
Código HTML:
<form name="cualquiera" action="modificar.asp" method="post">
	<!-- Aqui pones todos los parametros de conexion-->
<%
	dim conexion
	set conexion = Server.CreateObject("ADODB.Connection")
	
	conexion.Open = "driver={MySQL};server="&session("servidor")&";uid="&session("usuariobd")&";pwd="&session("contrasenabd")&";database="&session("bd")&""
	dim registros
	set registros = Server.CreateObject("ADODB.RecordSet") 
	registros.open "select Codigo,Descripcion,Precio, Referencia from articulos where"& request.form("codigo"),conexion

%>
	<table>
		<tr>
			<td>Codigo:</td>
			<td>
				<input type="text" name="cod" readonly="readonly" value="<%response.Write(registros("Codigo"))%>"/>
			</td>
		</tr>
		<tr>
			<td>Descripción:</td>
			<td>
				<input type="text" name="descrip" value="<%response.Write(registros("Descripcion"))%>"/>
			</td>
		</tr>
		<tr>
			<td>Precio:</td>
			<td>
				<input type="text" name="precio" value="<%response.Write(registros("Precio"))%>"/>
			</td>
		</tr>
		<tr>
			<td>Referencia:</td>
			<td>
				<input type="text" name="referen" value="<%response.Write(registros("Referencia"))%>"/>
			</td>
		</tr>
	</table>
	<input type="submit" value="Guardar">
</form> 
Una ves teniendo eso en la sentencia UPDATE te quedaria algo como:
Código HTML:
update articulos set Descripcion='" & request.form("descrip") & "',Precio=" & request.form("precio") & ", Referencia='" & request.form("referen") & "' where Codigo="& request.form("cod") & ""
A reserva de lo que digan los "MASTERS" creo que con esto quedaria, listo... habria que tener en cuenta los tipos de datos que estes manejando, para utilizar ' ó " en el UPDATE...

Saludos....
  #4 (permalink)  
Antiguo 29/03/2008, 13:09
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Traspaso de datos a formulario

Hola:

Se me ocurre hacer esto:

Aqui esta el formulario en donde cargas los datos de la tabla "ARTICULOS"

Código HTML:
<form name="cualquiera" action="editar.asp" method="post">
<%
	dim conexion
	set conexion = Server.CreateObject("ADODB.Connection")
	
	conexion.Open = "driver={MySQL};server="&session("servidor")&";uid="&session("usuariobd")&";pwd="&session("contrasenabd")&";database="&session("bd")&""
	dim registros
	set registros = Server.CreateObject("ADODB.RecordSet") 
	registros.open "select Codigo,Descripcion,Precio, Referencia from articulos",conexion

%>
	<table>
		<tr>
			<td>Codigo:</td>
			<td>
				<select name="codigo">
					<option selected value="">==Seleccionelo !!==</option>
					<%
						if not registros.EOF then
							do while not registros.EOF %>
								<option value="<%response.Write(registros("Codigo"))%>"><%response.Write(registros("Codigo"))%></option>
					<%			registros.movenext
							loop
						else %>
							<option value=" ">No hay Códigos registrados</option>
					<%	end if
						registros.close
					%>
				</select>
			</td>
		</tr>
	</table>
	<input type="submit" value="modificar">
</form> 
En este otro, recibes el codigo que seleccionaste en la pagina anterior y por medio de el, filtras los otros datos para llenar tus cajas de texto y hacer la modificacion...
Código HTML:
<form name="cualquiera" action="modificar.asp" method="post">
<%
	dim conexion
	set conexion = Server.CreateObject("ADODB.Connection")
	
	conexion.Open = "driver={MySQL};server="&session("servidor")&";uid="&session("usuariobd")&";pwd="&session("contrasenabd")&";database="&session("bd")&""
	dim registros
	set registros = Server.CreateObject("ADODB.RecordSet") 
	registros.open "select Codigo,Descripcion,Precio, Referencia from articulos where"& request.form("codigo"),conexion

%>
	<table>
		<tr>
			<td>Codigo:</td>
			<td>
				<input type="text" name="cod" readonly="readonly" value="<%response.Write(registros("Codigo"))%>"/>
			</td>
		</tr>
		<tr>
			<td>Descripción:</td>
			<td>
				<input type="text" name="descrip" value="<%response.Write(registros("Descripcion"))%>"/>
			</td>
		</tr>
		<tr>
			<td>Precio:</td>
			<td>
				<input type="text" name="precio" value="<%response.Write(registros("Precio"))%>"/>
			</td>
		</tr>
		<tr>
			<td>Referencia:</td>
			<td>
				<input type="text" name="referen" value="<%response.Write(registros("Referencia"))%>"/>
			</td>
		</tr>
	</table>
	<input type="submit" value="Guardar">
</form> 
Una ves teniendo eso en la sentencia UPDATE te quedaria algo como:
Código HTML:
update articulos set Descripcion='" & request.form("descrip") & "',Precio=" & request.form("precio") & ", Referencia='" & request.form("referen") & "' where Codigo="& request.form("cod") & ""
A reserva de lo que digan los "MASTERS" creo que con esto quedaria, listo... habria que tener en cuenta los tipos de datos que estes manejando, para utilizar ' ó " en el UPDATE...

Saludos....
  #5 (permalink)  
Antiguo 29/03/2008, 18:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 42
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Traspaso de datos a formulario

Hola ¡¡¡¡
Muchisimas gracias por contestar ¡¡¡
ciisteado con tu código modificando solo esta parte:

registros.open "select Codigo,Descripcion,Precio, Referencia from articulos where"& request.form("codigo"),conexion

por
(este ya tiene el nombre de mis campos)

registros.open "select Nombre,Apellidos,Telefono, Foto from usuario where Apellidos='"&request.form("GUARDADO")&"'",conexion

Modifique eso porque siempre me rellenaba el formulario con el primer registro, tras esa modificación todo perfecto.

Ahora he puesto este código para el update:

Código:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
session("servidor")="**********"

session("usuariobd")="********"

session("contrasenabd")="*********"

session("bd")="**********"
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")

conexion.Open = "driver={MySQL};server="&session("servidor")&";uid="&session("usuariobd")&";pwd="&session("contrasenabd")&";database="&session("bd")&""
dim registros
set registros = Server.CreateObject("ADODB.RecordSet") 

conexion.Execute "update usuario set " & "Nombre = '" & Request.Form("Nombre") & "', " & "Telefono = '" & Request.Form("Telefono") & "', " & "Foto = '" & Request.Form("Foto") & "' where Apellidos='"& request.form("Apellidos") & "'"
conexion.close
response.write("Los datos fueron modificados")
%>
</body>
</html>
Con esto me modifica todos los campos menos el campo Apellidos, he quitado del código que me pusiste readonly, pero aunque lo modifique, los cambios sobre este campo no se hacen efectivos.
¿Cómo podría modificar también este campo?

Un saludo
y muchas gracias de nuevo ¡¡
  #6 (permalink)  
Antiguo 30/03/2008, 05:43
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 16 años, 2 meses
Puntos: 5
Re: Traspaso de datos a formulario

Parece que todo esta en orden, que raro que no te aplique los cambios... Te tira algun error? Cual?

Lo unico que me llamo la atencion es que guardas el numero de telefono usando ' y los numeros no llevan ' solo los strings.... despues de eso esta bien... (creo)

Quizas sea algun problema de como abres la base de datos o el lock que tenga. Yo de MySQL no entiendo... asi que no se

Por cierto... estos son las formas de abrir una base de datos: (en Access por lo menos)

Código:
Const adOpenForwardOnly = 0 'Es el cursor por defecto y nos permite recorrer el Recordset en forma secuencial.
Const adOpenKeySet = 1 'Permite movernos hacia delante y atrás. Permite observar las modificaciones en los datos del Recordset , no así si existen ingresos de nuevos registros.
Const adOpenDynamic = 2 'Permite movernos en cualquier sentido, viendo cualquier modificación, ingreso o eliminación de datos del Recordset.
Const adOpenStatic = 3 'Permite movernos en cualquier sentido, pero no se verá ningún cambio ocurrido en la tabla.
Y estos son los Locks: (en Access tmb)

Código:
Const adLockReadOnly = 1 'Es el cerrojo por defecto y no permite modificar los registros de la tabla.
Const adLockPessimistic = 2 'Una vez que alguien abre la tabla, ésta queda bloqueada para los demás usuarios. Con este modo se asegura la integridad de los datos.
Const adLockOptimistic = 3 'La tabla sólo será bloqueada a los demás usuarios mientras se ejecute una operación Update. De esta forma la tabla se bloqueará durante mucho menos tiempo que con el método anterior.
Const adBatchOptimistic = 4 'Los registros serán actualizados en modo batch.
  #7 (permalink)  
Antiguo 30/03/2008, 06:54
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: Traspaso de datos a formulario

hola prueba así

conexion.Execute "update usuario set " & "Nombre = '" & Request.Form("Nombre") & "', " & "Telefono = '" & Request.Form("Telefono") & "', " & "Foto = '" & Request.Form("Foto") & "' , "&"Apellido ='"&requet.form("Apellidos") &"' where Apellidos='"& request.form("Apellidos") & "'"

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 31/03/2008, 13:04
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Traspaso de datos a formulario

Hey FlashO:

Hay algo que no entiendo,, ¿¿por que haces el UPDATE filtrandolo por el APELLIDO?? es decir:
where Apellidos='"& request.form("Apellidos") & "'"

que no se supone deberia de ser por un ID o por el GUARDADO que vas arrastrando desde la primer pagina,,, es que obviamente si modificas Apellidos y el UPDATE lo filtras por ese campo, nunca va encontrar algo igual, es decir NUNCA se cumplira el WHERE... lo que pusieras en el WHERE tendria que ser algo que NO CAMBIE...

podria ser algo como esto:
Código HTML:
conexion.Execute "update articulos set Nombre='" & request.form("nombre") & "',Apellidos='" & request.form("apellidos") & "', Telefono=" & request.form("referen") & ",Telefono='" & request.form("foto") & "' where ID="& request.form("GUARDADO") & """
No entiendo muy bien, con que estas controlando los registros... no tienes un ID por registro o algo asi..??

Tal ves lo ideal sería que postearas el código donde modificas los parametros, para ver como los recibes y ver de que manera armar el UPDATE....

Saludos...
  #9 (permalink)  
Antiguo 02/04/2008, 15:59
 
Fecha de Ingreso: marzo-2008
Mensajes: 42
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Traspaso de datos a formulario

Gracias a todos lo conseguí ¡¡¡¡, ese era el problema que filtraba con el apellido y nunca se cumplía el where, he modificado para hacerlo por el id y se ha quedado todo bien ¡¡

Muchísimas gracias ¡¡¡¡¡¡¡¡
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 16:32.