Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Boquear o proteger registro

283 views
Skip to first unread message

José AF

unread,
Apr 4, 2008, 1:43:35 PM4/4/08
to
Hola.
Tengo una base de datos y deseo que una vez que se introduzca un dato en un
determinado registro éste ya no pueda ser modificado a fin de evitar errores
u otras cuestiones.
con los datos de propiedades del formulario puedo conseguir bloquear los
registros, pero en este caso se bloquean todos y yo sólo deseo que se
bloquee uno determinado.

¿Podéis ayudarme?

Gracias
JLuis

José Mª Fueyo

unread,
Apr 4, 2008, 2:40:38 PM4/4/08
to
Hola José AF.
¿Como identificas ese registro? puedes comprobar en el evento "al activar el
registro" (current es el nombre en el código) del formulario, sí es uno de
esos registros. Sí lo es, puedes recorrer la colección de controles, y
establecer su propiedad "bloqueado" a verdadero

Private Sub Form_Current()
dim ctlMiControl as control
if CampoValor es X 'hay que bloquear el registro
for each ctlMiControl in me.controls
if typeof ctlMiControl is textbox then'Hay que comprobar todos
los tipos de controles: checkbox, combo, etc...
me.ctlMiControl.Locked=true
endif
next
endif
End Sub

Salu2
--
José Mª Fueyo
[MS MVP Access]

Salu2
--
José Mª Fueyo
[MS MVP Access]

José AF

unread,
Apr 4, 2008, 3:08:14 PM4/4/08
to
Gracias por tu rápida y técnica respuesta

Bueno vamos a ver yo no estoy muy ducho en esto pero entiendo que donde
pones:
"CampoValor" te refieres al nombre del registro
o debo poner el nobre del registro en sustitución de "Current"
En "CampoValor es X" puedo poner "NombreRegistro<>" " " y así detectará
que tiene algun dato introducido
Y ya por último en lugar de al activar el registro debo poner el código al
perder el enfoque, pues quiero que el bloqueo se realice después de
introducir un dato en el

Perdona mis dudas pero es que estoy como ves muy verde en esto

Saludos
José AF.

"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje
news:5EE773AC-A159-43E5...@microsoft.com...

José Mª Fueyo

unread,
Apr 4, 2008, 6:01:36 PM4/4/08
to
Hola
Me refiero, a que tiene que haber algo que identifique ese registro como no
modificable (para ti). Por ejemplo, en un pedido la fecha de facturación.
Tiene que haber un campo o conjunto de campos, que te permitan saber que ese
registro no es modificable.
Yo dejaría que el usuario metiera los datos, y pondría un botón para grabar.
Déjale que tenga la opción de rectificar, ¿no? ;-). A la vez, en el momento
de grabar el regisgtro, lo marcas como no modificable y en ese momento
bloqueas todos los controles como te he indicado. Para no tener que escribir
la misma rutina varias veces (en el evento current y al grabar el registro),
crearía un procedimiento sub que lo hiciera, y sencillamente lo llamaba
tanto en el evento current como al final del código que graba el registro.

José AF

unread,
Apr 7, 2008, 2:22:20 PM4/7/08
to
Gracias por tu tiempo y tus respuestas.

A la vista de ella he repasado el mensaje que envié al grupo pues no
entendía lo de bloquear el registro del modo que lo expones, que es
correcto.

Yo me he explicado mal y te pido disculpas por ello y por el tiempo que has
gastado en ello

Lo que yo quise decir al principio es que de la base de datos "un
determinado campo" no el registro completo, sea el que se quede bloqueado de
tal manera que el dato que contenga ese campo una vez introducido ya no
pueda ser modificado.

Tenemos en cuenta que el dato que contendrá el campo proviene de una lista
desplegable y sólo puede tener valores que contenga esa lista. Pero no
queremos que se modifique ese campo por error si ya ha sido validado al
pasar al siguiente registro: El error puede producirse si al abrir de nuevo
la base de dato se toma otro valor de la lista.

No se si esto se podrá hacer.

Repito muchas gracias por tu tiempo y tu paciencia conmigo.

Saludos.


"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje

news:CA33563C-4775-432A...@microsoft.com...

Patxi Sanz

unread,
Apr 8, 2008, 11:41:19 AM4/8/08
to
Puedes seguir usando el evento Al activar registro del formulario, más la
propiedad NewRecord del formulario, que devuelve True si el registro es
nuevo:

Private Sub Form_Current()
Me.campo1.Locked = Not Me.NewRecord
End Sub

Y modificar el estado del control tras actualizar el registro (guardar un
registro nuevo):

Private Sub Form_AfterUpdate()
Me.NombreDelControl.Locked = Not Me.NewRecord
End Sub

Nota: Debes cambiar NombreDelControl por el nombre del cuadro de texto,
botón, casilla, etc., que deseas bloquear.

--
Un saludo,


Patxi Sanz
patxisanz[ARROBA]yahoo[PUNTO]es
http://es.geocities.com/patxisanz/index.html
Tudela (NA)

José AF

unread,
Apr 19, 2008, 5:01:37 PM4/19/08
to
Hola patxi.
Muchas gracias por tu ayuda. Era la que necesitaba.

Saludos
José AF


"Patxi Sanz" <patxisanz[ARROBA]yahoo[PUNTO]es> escribió en el mensaje
news:OYjiB8Ym...@TK2MSFTNGP05.phx.gbl...

Patxi Sanz

unread,
Apr 20, 2008, 5:19:27 AM4/20/08
to
De nada :-)
0 new messages