Access - Habilitar Registros para una nueva insercion

 
Vista:

Habilitar Registros para una nueva insercion

Publicado por Sandra Veronica (203 intervenciones) el 24/12/2007 06:39:45
Hola a todos .... Debo estar loca por poner un post en visperas de Navidad .... es que esto me urge muchisimo. He estado leyendo en el foro para solucionar el tema de bloqueo y activacion de registros pero realmente no encontre la solucion a lo que necesito y es por eso que me remito a un nuevo mensaje.
El tema es el siguiente:
Yo bloque todos los registros (como me ha enseniado Enrique) con este codigo

Option Compare Database
Dim Campos As Object
Option Explicit

Private Sub Form_Load()
For Each Campos In Me.Controls
If TypeOf Campos Is TextBox Or TypeOf Campos Is ComboBox Then
Campos.Locked = True
End If
Next Campos
MontoCompensa.Locked = False
End Sub

Esto funciona a la perfeccion. Pero el problema viene cuando quiero dar de alta un nuevo registro. Vieron ... cuando le doy clic a >* (o algo asi al pie del formulario). Necesito que los campos esten activados nuevamente y no se en que lugar debo colocar el c'odigo para que solo se activen los campos cuando los doy de alta.

Vale aclarar que el formulario en cuestion esta en vista HOJA DE CALCULO y es un subformulario incrustado dentro de otro formulario.

Lo he puesto en la seccion Private Sub Form_Current() pero me los activa sin que yo les de la orden de dar de alta.
Espero no haberlos abrumado.
Les mando un saludos y muy feliz navidad desde Argentina.
Sandra!!!
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:Habilitar Registros para una nueva insercion

Publicado por Victoria (1530 intervenciones) el 24/12/2007 10:19:04
Buenos dias:

Lo que yo haría sería crear un procedimiento de esta forma:

Private Sub bloquear(bloqueo As Boolean)
For Each Campos In Me.Controls
If TypeOf Campos Is TextBox Or TypeOf Campos Is ComboBox Then
Campos.Locked = bloqueo
End If
Next Campos
MontoCompensa.Locked = False

End Sub

La llamas de esta forma:

Private Sub Form_Load()

bloquear True 'Llamada al procedimiento: bloquea

End Sub

Y ya tienes lo mismo que ahora.

Pero, ahora la puedes llamar cuando quieras dar de alta un registro, creando, por ejemplo, un botón que agrege registros:

Private Sub añadirReg_Click()
On Error GoTo Err_Comando4_Click

bloquear False 'Llamada al procedimiento, habilita

DoCmd.GoToRecord , , acNewRec


Exit_Comando4_Click:
Exit Sub

Err_Comando4_Click:
MsgBox Err.Description
Resume Exit_Comando4_Click

End Sub

Y después de insertar el nuevo registro, vuelves a bloquear:

Private Sub Form_AfterInsert()
bloquear True 'Llamada al procedimiento, bloquea
End Sub

Si tienes alguna duda más, preguntame

Felices Fiestas
Victoria
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:Habilitar Registros para una nueva insercion

Publicado por Sandra Verónica (203 intervenciones) el 26/12/2007 15:40:29
Hola Victoria, Muchas gracias por tu sugerencia ... la estoy aplicando. Me gustaría preguntarte si es posible escribir todo este código en el Formulario Principal, pero que en realidad se aplique en el Sub-Formulario que esta incrustado en el mismo? Se entiende?
Aguardo anciosa tu respuesta y nuevamente un millon de gracias!
Sandra!
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:Habilitar Registros para una nueva insercion

Publicado por Enrique (1299 intervenciones) el 27/12/2007 12:39:36
Hola Sandra:
Mi sugerencia es que el Evento Form_Load lo dejes como lo tienes, para que al abrir el formulario los campos de los registros existentes entren BLOQUEDOS por defecto y luego en el Evento Form_Current se desbloqueen si es Registro Nuevo o se vuelvan a bloquear si es Registro existente:

Private Sub Form_Current()
For Each Campos In Me.Controls
If TypeOf Campos Is TextBox Or TypeOf Campos Is ComboBox And Not Me.NewRecord Then
Campos.Locked = True
Else
Campos.Locked = False
End If
Next Campos
End Sub

Si el Formulario está en Vista Hoja de Datos, como dices, verás que se muestran todos los registros y podrás insertar o modificar los campos del registro activo, pero cuando saltes a nuevo registro, ya no podrás modificar ni el que acabas de crear ni los anteriores. Creo que esto es lo que quieres, pero le veo un problema, ¿ que pasa si necesitas modificar uno o varios campos de un registro existente ? porque no te dejará hacerlo desde el Formulario.

Saludos
Enrique
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:Habilitar Registros para una nueva insercion

Publicado por Sandra Verónica (203 intervenciones) el 27/12/2007 14:49:50
Hola Enrique .... gracias por tu respuesta .... lo que me decis es verdad .... podría hacer las modificaciones desde este formulario .... pero conociendo a las personas que van a usarlo .... es mejor ponerselos en otro módulo.
Ademas no es solo un ABM de registros ... sino un módulo de compensaciones de FC que es un poco mas complejo.
Enrique .... te agradezco mucho, mucho tu ayuda y si Dios quiere me voy de vacaciones los primeros días de Enero y vas a poder descansar de mis preguntas.
Te mando un fuerte abrazo.
Sandra!
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