Oracle - Update\'s en Forms

 
Vista:

Update\'s en Forms

Publicado por ELIA (43 intervenciones) el 20/06/2003 12:37:27
Buenos días de nuevo.
Tengo dudas respecto a la forma de actualizar BD mediante forms, a ver si me explico. Quiero actualizar dos campo de un registro que se encuentran en un bloque de datos, entonces 1º selecciono el registro a actualizar de todos los q visualizo, y posteriomente , relleno un item (cantidad) de un bloque de control, q es con el q voy a actualizar los otros dos. A uno de ellos le resto la cantidad y a el otro se la sumo. Entonces me surge la duda, de cual es la forma correcta de actualizar,
mediante UPDATE o directamente.
Cantidad: es el item del bloque de control
:SUGERENCIAS.S_D_A y :SUGERENCIAS.S_R_A son items del bloque de datos,q se correponden con los datos de la BD a actualizar
DECLARE
Disponible NUMBER;
Reservado NUMBER;
BEGIN
Disponible := :SUGERENCIAS.S_D_A - :CANTIDAD;
Reservado := :SUGERENCIAS.S_R_A + :CANTIDAD;

/*OPCION 1 */
:SUGERENCIAS.S_D_A := :SUGERENCIAS.S_D_A - :CANTIDAD;
:SUGERENCIAS.S_R_A := :SUGERENCIAS.S_R_A + :CANTIDAD;

/*OPCION 2 */
update inventario_virtual SET S_D_A= Disponible,S_R_A = Reservado where peso= :SUGERENCIAS.peso;

con la opcion 1 he constatado q los cambios se hacen directamente en la bd, y al salir o haber otro acceso al bloq pide confirmacion para los cambios.
sin embargo la opcion 2 no me funciona,la clausula where no me funciona, intento acceder al registro utilizando un item del bloque, porq no me funciona?? si pongo directamente el valor en la clausula si me funciona. Gracias. Despues tengo duda de si aqui deberás hacer commit.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Update\'s en Forms

Publicado por Byron (300 intervenciones) el 20/06/2003 16:11:45
Oracle maneja bloques según los eventos, si tu haces cambios o insertas registros en un bloque, al momento de dar commit, oracle internamente arma la sentencia insert, update, delete o select. Yo recomendaria que forms haga esta sentencia, la opción dos si la seccion where del update es correcta debe funcionar, pero los cambios tu los estas haciendo internamente, inmediatamente después debes hacer commit; (Grabar) y luego un execute_query(Volver a consultar), para que puedas ver los cambios que acabas de hacer.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Update\'s en Forms

Publicado por Gilberto (119 intervenciones) el 20/06/2003 16:24:03
La estoy de acuerdo con la explicación de Byron, lo unico es que si el campo no esta al final no podrias hacer el COMMIT y luego el EXECUTE_QUERY puesto que habran campos requeridos que te pediran ser grabados, a parte que si el usuario de casualidad se confunde y se da cuenta antes de dar grabar aun tiene la opción de arreglarlo antes de que se modifique en la bd, porque segun veo trabajas nuevamente con el campo que actualizas en la bd y si se hizo una mala grabación y quieres recuperar el dato anterior tendrías que hacer otro procedimiento para volver a los datos anteriores y eso se te haría un poco mas tedioso. Te recomendaría que hagas el commit hasta el final al grabar todo el registro. (AL GRABAR AL FINAL TODO EL REGISTRO TE ACTUALIZA TAMBIEN TU CAMBIO EN LA BD).
Salu2

gilh.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Update\'s en Forms

Publicado por ELIA (43 intervenciones) el 25/06/2003 10:17:56
Muchas gracias a todos por vuestras aclaraciones, han sido de gran ayuda.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Update\'s en Forms

Publicado por DACH (258 intervenciones) el 20/06/2003 19:40:18
Hola
No te complikes la forma natural de Form es la OPCION 1, sin lugar a dudas debes escoger esa, pero estas sentencias deben estar en el trigger When-Validate-Item del campo donde inhresas el valor.

So no mas
Salu2
DACH
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar