Te cuento, yo creo que el error está en que el formulario abre la tabla tbInventario a través de un combo para localizar el equipo que quiero dar de baja y eso me está complicando mucho todo el código, porque no me termina de funcionar ningún comando bien.
Yo lo que quiero es que el usuairo abra un artículo en concreto, el formulario muestre sólo ciertos campos de la tabla tbInventario, y que si no está de baja, registre ciertos datos y después me devuelva el mensaje de Ok y el formulario en blanco preparado para el siguiente registro. Este es el código que tengo hasta ahora, pero me da varios errores ( no me calcula la fecha de fin de garantía, no me limpia los campos, me pide el campo clave de un nuevo registro....pufff....estoy deseperada, porque no termino de conseguir que funcione.
Option Compare Database
Option Explicit
Private Sub aptoDonacion_Click()
If (aptoDonacion) = (-1) Then
DestinatarioDonacion.Locked = False
Else
DestinatarioDonacion.Locked = True
End If
End Sub
Private Sub BuscaNumero_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[nInventario] = " & Str(Nz(Me![BuscaNumero], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
If Not IsNull(IdTipoBaja) Then
Me.avisoBaja.Visible = True
Me.avisoObservaciones.Visible = True
ObservacionesBaja.Locked = False
aptoDonacion.Locked = False
Vretirado.Locked = False
Else
Me.avisoBaja.Visible = False
Me.avisoObservaciones.Visible = False
IdTipoBaja.Locked = False
FechaBaja.Locked = False
ObservacionesBaja.Locked = False
aptoDonacion.Locked = False
Vretirado.Locked = False
End If
End Sub
Private Sub cancelar_Click()
On Error GoTo errorcancelar:
DoCmd.RunCommand acCmdUndo
DoCmd.GoToRecord acActiveDataObject, , acNewRec
IdTipoBaja = ""
Me.ObservacionesBaja = ""
Me.DestinatarioDonacion = ""
MsgBox ("BAJA CANCELADA"), vbInformation
NInventario.SetFocus
BuscaNumero.SetFocus
errorcancelar:
If Err.number = 2046 Then
DoCmd.GoToRecord acActiveDataObject, , acNewRec
MsgBox ("No se guardará ningún cambio"), vbInformation
NInventario.SetFocus
BuscaNumero.SetFocus
Err.Clear
Exit Sub
End If
End Sub
Private Sub FechaPuestaMarcha_AfterUpdate()
'Dim intervalo As String
'Dim number As Double
'
'intervalo = yyyy
'number = Garantia
'Date = FechaPuestaMarcha
'
'Private Sub FechaPuestaMarcha_AfterUpdate()
' If Not IsNull(FechaPuestaMarcha) Then
' Me.finGarantia = DateAdd("yyyy", Me.Garantia, Me.FechaPuestaMarcha)
' End If
End Sub
Private Sub Form_Current()
Form_Load
End Sub
Private Sub Form_Load()
'DoCmd.GoToRecord acActiveDataObject, , acNewRec
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
BuscaNumero.Value = ""
BuscaNumero.SetFocus
Me.avisoBaja.Visible = False
Me.avisoFecha.Visible = False
Me.avisoTipo.Visible = False
Me.avisoObservaciones.Visible = False
[BuscaNumero].Locked = False 'Comb. que NO debe bloquearse
End Sub
Private Sub guardar_Click()
On Error GoTo errorguardar
If Not IsNull(IdTipoBaja) And Not IsNull(FechaBaja) Then
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RefreshRecord
Me.BuscaNumero.SetFocus
Me.BuscaNumero.Requery
MsgBox ("BAJA REGISTRADA"), vbInformation
Me.avisoFecha.Visible = False
Me.avisoTipo.Visible = False
Me.avisoObservaciones.Visible = False
ElseIf IsNull(IdTipoBaja) Then
Me.avisoTipo.Visible = True
IdTipoBaja.SetFocus
ElseIf IsNull(FechaBaja) Then
Me.avisoBaja.Visible = True
FechaBaja.SetFocus
End If
errorguardar:
Err.Clear
''If Err.number = 0 Then
'' Resume Next
'' Else
' MsgBox Err.number
' MsgBox Err.Description
' Err.Clear
''End If
Exit Sub
End Sub
Private Sub salir_Click()
On Error GoTo salir
DoCmd.Close acForm, "Frm2Bajas"
DoCmd.OpenForm "menu_principal"
salir:
If Err.number = 2046 Then
Dim msg As String
' msg = "Error #" & Err.Number & Chr(13) & Error
MsgBox ("NO SE REALIZARA NINGUNA MODIFICACIÓN"), vbInformation
Err.Clear
End If
End Sub
Private Sub Vretirado_Click()
If (Vretirado) = (-1) Then
FechaRetirada.Locked = False
Else
FechaRetirada.Locked = True
End If
End Sub