Duplicar un registro en Access solo si cumple condición.

Realizo una pequeña aplicación para un archivo, dentro de la cual un archivo puede tener varios (tomos) y tendrían el mismo numero de archivo, pero me gustaría saber si puedo hacer que no se duplique el núm. De expediente a menos que se determine que tiene más de un tomo. El formulario está hecho de una tabla en la que se encuentra el campo de numero de expediente y la id del expediente está en otro campo pero ese no se utiliza, solo para hacer la relación con otras tablas.

2 Respuestas

Respuesta
1

Lo puedes hacer de mil formas, por eso sería conveniente que pusieras una imagen de tus tablas, o lo que quieres que diga si "repites" archivo, etc.. Por ejemplo, supongamos que tengo la tabla Tabla1 con

Y con ella hago un formulario. Da igual que sea único o continuo, pero creo que continuo lo verás mejor.

Es cribo los registros que sea. Como de momento no hay repetidos, el número de expediente tengo que ponérselo yo. Pero cuando llega a uno que ya está(puedes ver que el cursor aún está en el control Archivo), en cuanto pulso Enter

Si pulso en Sí, automáticamente me pone el valor en el campo NumExpediente

El código del evento Después de actualizar del control Archivo es

Private Sub Archivo_AfterUpdate()
If DCount("*", "tabla1", "archivo='" & Me.Archivo & "'") >= 1 Then
MsgBox "Ese archivo ya está guardado. ¿Quiere repetir su número de expediente?", vbYesNo + vbInformation, "No digas que no te avisé"
If vbYes Then
NumExpediente = DLookup("numexpediente", "tabla1", "archivo='" & Me.Archivo & "'")
Else
Exit Sub
End If
End If
End Sub

Pero como te decía, lo puedes hacer de mil formas.

Según la imagen, supongo, que lo primero es elegir en el combinado Caja. Pero por otro lado, en el formulario no sé donde determinas la cantidad de tomos de que consta un archivo. Por eso, si tengo el formulario basado en la Tabla1

Elijo una caja y la primera vez le digo de cuantos tomos se compone la caja. En cuanto pulso Enter, en Tomo me pone 1, ya que es el primero, y en NumExpediente le pongo su valor

Vamos a suponer que vuelvo a elegir la caja 4. En el momento que la elijo, en Num Tomos me pone los que componen la caja, o sea 3 y en Tomo me pone el siguiente al último que tenía, o sea el 2 y además me pregunta si quiero repetir el número de expediente

Si le digo Si, en Numexpediente me repite el valor almacenado. Si le digo No, lo deja en blanco.

Lo mismo con los demás

Si le digo Si, me pondría el 222 correspondiente a la caja 5. Si le digo no, me lo deja en blanco.

El código general del formulario es

Private Sub Caja_AfterUpdate()
If DCount("*", "tabla1", "caja=" & Me.Caja & "") >= 1 Then
NumTomos = DLookup("numtomos", "tabla1", "caja=" & Me.Caja & "")
Tomo = Nz(DMax("tomo", "tabla1", "caja=" & Me.Caja & "")) + 1
Dim respuesta As Byte
respuesta = MsgBox("¿Quiere repetir el número de expediente?", vbYesNo + vbInformation, "Tu decides")
If respuesta = vbYes Then
NumExpediente = DLookup("numexpediente", "tabla1", "caja=" & Me.Caja & " and numexpediente not is null")
Else
NumExpediente.SetFocus
Exit Sub
End If
End If
End Sub
Private Sub NumTomos_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Tomo = Nz(DMax("tomo", "tabla1", "caja=" & Me.Caja & "")) + 1
End Sub
Respuesta
1

Suba las tablas y seguro que le doy una respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas