Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/01/2003, 08:08
Avatar de DanielRey
DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 24 años, 3 meses
Puntos: 1
Hola numerito

Cuando hacés una consulta sobre la base de datos, se realiza un "bloqueo compartido", es decir, el o los registros que son objeto de la consulta pueden ser consultados por otros usuarios al mismo tiempo, pero no modificados.

Cuando hay un bloqueo compartido pueden realizarse más bloqueos compartidos pero no bloqueos exclusivos.

Cuando lo que querés hacer es una modificación (Agregar, borrar o modificar) el tipo de bloqueo que se debe realizar es un "bloqueo exclusivo".

De este modo, en un ambiente de red, el sistema se asegura que ningún usuario acceda a un dato que está siendo modificado.

Al abrir un cursor, si no se especifica otra cosa, el sistema realiza un bloqueo compartido, esto significa que NO se pueden modificar los datos.

Lo que tenés que hacer si querés modificarlos es un bloqueo exclusivo. ¿y como se hace?
Ejemplo:
Dim Conn
Dim Rs
Dim curDir
curDir = Server.MapPath("/Cronos/base/cronos.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set Rs = Server.CreateObject("ADODB.Recordset")
Set Rs.ActiveConnection = Conn
Rs.Source = "Select * FROM Proceso Where 1=2"
Rs.CursorType = adOpenStatic
Rs.LockType = adLockOptimistic

Rs.Open
Rs.Addnew
Rs("proceso_id").Value = Request.Form("proceso_id")
Rs("usuario_id").Value = Request.Form("usuario_id")
Rs.Update
Rs.Close
Set Conn = Nothing
Set Rs = Nothing
Set curDir = Nothing

Sin embargo, es más aconsejable, para Altas, Bajas y Modificaciones utilizar el método Execute en lugar de usar cursores (recordest)

¿Y esto otro como se hace?
Ejemplo:
Alta:
Conn.Execute "Insert into tabla (campo1, campo2, ... ) values (valorNumérico, 'ValorTexto', ... )"

Baja:
Conn.Execute "Delete from tabla where condicion "

Modificación:
Conn.Execute "Update tabla set campo1 = ValorNum, campo2 = 'ValorText' , ... where condicion "

Suerte