deshacer cambios

26/04/2004 - 19:18 por reo | Informe spam
como puedo deshacer cambios hechos en la BD de sql server, desde un fichero
ASP, ya sea de insercion, modificacion o borrado.

es decir, tengo una tabla donde introduzco cantidad,precio,importe,cliente y
en otra tabla tengo clientes,precio_maximo
lo que intento hacer es que no se pueda insertar un importe mayor que el
importe que tengo en la tabla de clientes, para ello o lo hago controlando
con javascript o lo hago en vbscript una vez guardardo

(en javascript es mas rapido pero si inserto decimales, puede que no
coincida, ya que debo utilizar la funcion round, y esta funcion da valores
distintos en javascript y vbscript aun siendo la misma cantidad
otra cosa de no utilzar vbscript es que una vez insertado, si necesito
cambiar lo guardado, no hay forma de deshacer)

mi pregunta es:
1.- hay alguna forma de deshacer lo insertado,modificado o borrado
en sql server, para dejarlo tal y como no hubiera pasado nada

2,.hay alguna manera de hacer que el round de javascript funcione
como el round de vbscript o incluso como el round de sql server.

muchas gracias

Preguntas similare

Leer las respuestas

#1 danicastillo
26/04/2004 - 21:18 | Informe spam
Hola
¿porque una vez grabado?

tu tienes supongo en la tabla de clientes almacenado siempre el valor maximo

luego una tabla de articulos o lo que sea que vas cargando y modificando con
un formulario ¿no?

eso es un formulario que al hacer submit llama a un asp donde actualizas el
valor, pues simplemente haz la comprobacion antes de esa actualizacion

algo como (por encima)
<%
cliente=request.form("cliente")
precio=request.form("precio")
cantidad=
importe=

' abres un recordset sobre la tabla de clientes
rs.open "select * from clientes where idcliente= " & cliente , ..
if importe > rs("precio_maximo") then
response.write "no puedes"
else
' abres recordset para grabar /actualizar
' o haces un update from
end if

rs.close
set rs=nothing
%>


si eso no te vale prueba con begintrans, rollback y committrans, pero creo
que es liar mucho para lo que quieres hacer :)

-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"reo" escribió en el mensaje
news:%
como puedo deshacer cambios hechos en la BD de sql server, desde un


fichero
ASP, ya sea de insercion, modificacion o borrado.

es decir, tengo una tabla donde introduzco cantidad,precio,importe,cliente


y
en otra tabla tengo clientes,precio_maximo
lo que intento hacer es que no se pueda insertar un importe mayor que el
importe que tengo en la tabla de clientes, para ello o lo hago controlando
con javascript o lo hago en vbscript una vez guardardo

(en javascript es mas rapido pero si inserto decimales, puede que no
coincida, ya que debo utilizar la funcion round, y esta funcion da valores
distintos en javascript y vbscript aun siendo la misma cantidad
otra cosa de no utilzar vbscript es que una vez insertado, si necesito
cambiar lo guardado, no hay forma de deshacer)

mi pregunta es:
1.- hay alguna forma de deshacer lo insertado,modificado o borrado
en sql server, para dejarlo tal y como no hubiera pasado nada

2,.hay alguna manera de hacer que el round de javascript funcione
como el round de vbscript o incluso como el round de sql server.

muchas gracias


Respuesta Responder a este mensaje
#2 Manuel Etcheto
26/04/2004 - 22:57 | Informe spam
Me parece que más que deshacer cambios (rollback) lo que
tendrías que hacer es no grabar si no es correcto
1 -(dentro del store) "INSERT ... WHERE (AquíTuCondición)
y retornas la cantidad de filas afectadas
2- (dentro del store)
IF EXISTS(tal cosa)
BEGIN
raiserror(tu error...)
else INSERT..
3- Lo ideal, Para integridad de la BD, para que no puedan
insertar desde otra aplicación o conexión, un trigger
INSTEAD OF (en vez de)
CREATE TRIGGER... as
If talcosa generas un error y no graba nada

Suerte
Manuel

como puedo deshacer cambios hechos en la BD de sql


server, desde un fichero
ASP, ya sea de insercion, modificacion o borrado.

es decir, tengo una tabla donde introduzco


cantidad,precio,importe,cliente y
en otra tabla tengo clientes,precio_maximo
lo que intento hacer es que no se pueda insertar un


importe mayor que el
importe que tengo en la tabla de clientes, para ello o lo


hago controlando
con javascript o lo hago en vbscript una vez guardardo

(en javascript es mas rapido pero si inserto decimales,


puede que no
coincida, ya que debo utilizar la funcion round, y esta


funcion da valores
distintos en javascript y vbscript aun siendo la misma


cantidad
otra cosa de no utilzar vbscript es que una vez


insertado, si necesito
cambiar lo guardado, no hay forma de deshacer)

mi pregunta es:
1.- hay alguna forma de deshacer lo


insertado,modificado o borrado
en sql server, para dejarlo tal y como no hubiera pasado


nada

2,.hay alguna manera de hacer que el round de


javascript funcione
como el round de vbscript o incluso como el round de sql


server.

muchas gracias


.

Respuesta Responder a este mensaje
#3 reo
27/04/2004 - 09:28 | Informe spam
esta fue mi primera idea, pero resulta que si no se puede tengo que
preguntar al que esta delante del navegador (de ahora en adelante cliente)
que diga si quiero continuar o no, para ello se me ocurre con javascript ,
pero tendria que recargar la pagina tanto si dice que si, como que no, lo
cual haria mas lento el guardado.

"danicastillo" escribió en el
mensaje news:%
Hola
¿porque una vez grabado?

tu tienes supongo en la tabla de clientes almacenado siempre el valor


maximo

luego una tabla de articulos o lo que sea que vas cargando y modificando


con
un formulario ¿no?

eso es un formulario que al hacer submit llama a un asp donde actualizas


el
valor, pues simplemente haz la comprobacion antes de esa actualizacion

algo como (por encima)
<%
cliente=request.form("cliente")
precio=request.form("precio")
cantidad=
importe=

' abres un recordset sobre la tabla de clientes
rs.open "select * from clientes where idcliente= " & cliente , ..
if importe > rs("precio_maximo") then
response.write "no puedes"
else
' abres recordset para grabar /actualizar
' o haces un update from
end if

rs.close
set rs=nothing
%>


si eso no te vale prueba con begintrans, rollback y committrans, pero creo
que es liar mucho para lo que quieres hacer :)

-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"reo" escribió en el mensaje
news:%
> como puedo deshacer cambios hechos en la BD de sql server, desde un
fichero
> ASP, ya sea de insercion, modificacion o borrado.
>
> es decir, tengo una tabla donde introduzco


cantidad,precio,importe,cliente
y
> en otra tabla tengo clientes,precio_maximo
> lo que intento hacer es que no se pueda insertar un importe mayor que el
> importe que tengo en la tabla de clientes, para ello o lo hago


controlando
> con javascript o lo hago en vbscript una vez guardardo
>
> (en javascript es mas rapido pero si inserto decimales, puede que no
> coincida, ya que debo utilizar la funcion round, y esta funcion da


valores
> distintos en javascript y vbscript aun siendo la misma cantidad
> otra cosa de no utilzar vbscript es que una vez insertado, si necesito
> cambiar lo guardado, no hay forma de deshacer)
>
> mi pregunta es:
> 1.- hay alguna forma de deshacer lo insertado,modificado o


borrado
> en sql server, para dejarlo tal y como no hubiera pasado nada
>
> 2,.hay alguna manera de hacer que el round de javascript


funcione
> como el round de vbscript o incluso como el round de sql server.
>
> muchas gracias
>
>


Respuesta Responder a este mensaje
#4 Dani Castillo
27/04/2004 - 10:18 | Informe spam
Bueno no creo que haga falta recargar o pasar por server, aunq depende

cuando pides los datos a añadir ¿son de "ese" cliente?
es decir , la mecanica normal en una pagina seria

1 presentacion etc etc , pido identificacion del cliente
2 en otra pagina muestro las cosas a hacer, entre ellas "comprar" cosas para
ese cliente
3 guardo

si es asi, en la 1 puedes sacar ya el precio maximo, y se lo pasas a la 2
por parametro (o lo calculas guardandolo en javascript cuando la muestras)
algo como
<script>
function comprueba{
var maximo=<%=recordsetquetengas("max_precio")%> ;



Si por el contrario, lo que quieres es mas o menos un "mantenimiento de
facturas" o algo asi, donde un encargado mete los pedidos de varios clientes
puede ser un poco mas complicado pero aun asi deberias poder sacarlo, en ese
caso tu tendras algo como
desplegable de clientes (para elegir a quien le toca) , desplegable de
productos, etc

el desplegable lo puedes montar usualmente como un select con value de cada
opcion el "idcliente" y texto el nombre del cliente (similar para
productos)

puedes hacer que el value sea en si mismo varios valores, algo como
"idcliente | preciomaximo" , y para productos "idproducto | preciounitario"
(el "|" es un separador, cualquiera, que luego te permita partir el valor en
trozos, tambien valdria por caracteres fijos, algo como 10 digitos para el
id y el resto para el precio)

ahora desde javascript o vbscript en cliente deberas :
coger el valor del combo de productos, partirlo en dos trozos con el | ,
multiplicar por la cantidad (una caja de texto o desplegable normal) y ver
si es mayor que el "trozo" de la derecha del combo de clientes, si es mayor
mostrar aviso y si se contesta que adelante se hace el submit del formulario

el asp que recoja los datos debera tambien partir los valores de los combos
pero es facil

:-S creo que me he explicao fatal pero a ve si mas o menos va por ahi el
tema


"reo" escribió en el mensaje
news:
esta fue mi primera idea, pero resulta que si no se puede tengo que
preguntar al que esta delante del navegador (de ahora en adelante cliente)
que diga si quiero continuar o no, para ello se me ocurre con javascript ,
pero tendria que recargar la pagina tanto si dice que si, como que no, lo
cual haria mas lento el guardado.

"danicastillo" escribió en el
mensaje news:%
> Hola
> ¿porque una vez grabado?
>
> tu tienes supongo en la tabla de clientes almacenado siempre el valor
maximo
>
> luego una tabla de articulos o lo que sea que vas cargando y modificando
con
> un formulario ¿no?
>
> eso es un formulario que al hacer submit llama a un asp donde actualizas
el
> valor, pues simplemente haz la comprobacion antes de esa actualizacion
>
> algo como (por encima)
> <%
> cliente=request.form("cliente")
> precio=request.form("precio")
> cantidad=
> importe=
>
> ' abres un recordset sobre la tabla de clientes
> rs.open "select * from clientes where idcliente= " & cliente , ..
> if importe > rs("precio_maximo") then
> response.write "no puedes"
> else
> ' abres recordset para grabar /actualizar
> ' o haces un update from
> end if
>
> rs.close
> set rs=nothing
> %>
>
>
> si eso no te vale prueba con begintrans, rollback y committrans, pero


creo
> que es liar mucho para lo que quieres hacer :)
>
> -o|o|--
> -o|o| dani castillo
> -o|o| http://www15.brinkster.com/danic/
> -o|o| tutorial y trucos asp, vb, diseño
> -o|o|--
> "reo" escribió en el mensaje
> news:%
> > como puedo deshacer cambios hechos en la BD de sql server, desde un
> fichero
> > ASP, ya sea de insercion, modificacion o borrado.
> >
> > es decir, tengo una tabla donde introduzco
cantidad,precio,importe,cliente
> y
> > en otra tabla tengo clientes,precio_maximo
> > lo que intento hacer es que no se pueda insertar un importe mayor que


el
> > importe que tengo en la tabla de clientes, para ello o lo hago
controlando
> > con javascript o lo hago en vbscript una vez guardardo
> >
> > (en javascript es mas rapido pero si inserto decimales, puede que no
> > coincida, ya que debo utilizar la funcion round, y esta funcion da
valores
> > distintos en javascript y vbscript aun siendo la misma cantidad
> > otra cosa de no utilzar vbscript es que una vez insertado, si necesito
> > cambiar lo guardado, no hay forma de deshacer)
> >
> > mi pregunta es:
> > 1.- hay alguna forma de deshacer lo insertado,modificado o
borrado
> > en sql server, para dejarlo tal y como no hubiera pasado nada
> >
> > 2,.hay alguna manera de hacer que el round de javascript
funcione
> > como el round de vbscript o incluso como el round de sql server.
> >
> > muchas gracias
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida