Hola, muchas gracias. El campo fechabaja aparece tanto en la tabla tbinventario como en la consulta invEnriquecido. He deshecho todo y he vuelto a empezar de nuevo. Ahora lo que tengo es un formulario que se basa en una consulta "cbaja" que he realizado sobre la consulta invEnriquecido y que sólo muestra ciertos campos que necesito para identificar el artículo que voy a dar de baja, le llamaremos datos del bloque 1 y son Bloque 1:
(NInventario -que es un campo número y clave-; fechaalta ;articulo; marcas; modelo; nSerie; nSistema; codCECO; codServicio: codCentro, cod,Planta,y codZona) y a continuación los campos que quiero actualizar al generar la baja desde el nuevo que integrarían el bloque 2 y son:
Bloque 2:
frmBajaActivos (fechabaja;, cod_tipo_baja; paradonacion -que es de tipo bolean-; destinatarioDonacion y ObservacionesBaja).
He creado un combobox que busca el nInventario en la consulta invEnriquecido (y funciona) y tengo una etiqueta "avisoBaja" que sólo quiero que se muestre cuando el artículo que se selecciona desde el combobox ya está de baja (es decir, tiene datos en los campos fechabaja y, cod_tipo_baja (del bloque 2) ya que ambos campos son de obligada cumplimentación) y eso no lo consigo, no se muestra nunca.
Por otra parte quiero que cuando se carga el formulario(frmBajaActivos) basado en la consulta (invEnriquecido) con los datos del nInventario seleccionado, los campos informativos del bloque 1 siempre estén bloqueados y no se puedan modificar y los del bloque 2, sólo esten habilitados si el artículo aún no está de baja (o sea, no tiene datos en los campos fechabaja y, cod_tipo_baja) , pero si el nInventario sí está de baja, permitir agregar información solo en el campo observacionesBaja y eso tampoco lo consigo. El formulario carga bien, no muestra nunca la etiqueta y siempre me aparecen todos los campos bloqueados.
No sé si está vez me he explicado bien. Te copio el código que de momento tengo:
Private Sub buscaNInventario_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[NInventario] = " & Str(Nz(Me![buscaNInventario], 0))
If Not rs.EOF Then
Me.Bookmark = rs.Bookmark
End If
End Sub
Private Sub buscaNInventario_Change()
If Not IsNull(FechaBaja) Then
avisoBaja.Visible = True
FechaBaja.Enabled = False
cod_tipo_baja.Enabled = False
DestinatarioDonacion.Enabled = False
ObservacionesBaja.Enabled = False
Else
avisoBaja.Visible = False
FechaBaja.Enabled = True
cod_tipo_baja.Enabled = True
DestinatarioDonacion.Enabled = True
ObservacionesBaja.Enabled = True
End If
End Sub
Private Sub Cancelar_Click()
On Error GoTo errorcancelar:
DoCmd.RunCommand acCmdUndo
errorcancelar:
If Err.Number = 2046 Then
MsgBox ("Registro cancelado")
End If
Exit Sub
End Sub
Private Sub Form_Current()
Form_Load
End Sub
Private Sub Form_Load()
avisoBaja.Visible = False
Dim Campos As Object
For Each Campos In Me.Controls
If TypeOf Campos Is TextBox Or TypeOf Campos Is ComboBox Then
Campos.Locked = True
End If
Next Campos
[buscaNInventario].Locked = False 'Cuadro Comb. que NO debe bloquearse
End Sub
Private Sub Guardar_Click()
DoCmd.RunCommand acCmdSaveRecord
MsgBox ("BAJA REGISTRADA"), vbInformation
End Sub
Private Sub SALIR_Click()
On Error GoTo salir
DoCmd.Close acForm, "FrmBajaActivos"
DoCmd.OpenForm "menu_BAJAS"
salir:
If Err.Number = 2046 Then
Dim msg As String
msg = "Error #" & Err.Number & Chr(13) & Error
MsgBox ("No se guardará ningún cambio")
End If
Err.Clear
End Sub