Ms access - duplicar un registro
Actualmente tengo un formulario en el que se introducen datos, este formulario, por la cantidad de campos que hay en el registro, está separada por un "salto de línea o página" y con dos botones navego de una página a otra. Este formulario tiene un botón para poder duplicar un registro, realizado con el asistente de access-2002/XP y funciona perfectamente.
Aunque disponga de Access-2007, el formato de archivo predeterminado es "Access 2002-2003".
Ahora me han solicitado que en lugar de hacerlo de esta forma, lo haga con un "control ficha". De hecho ya lo tengo todo hecho y funcionando, pero el problema es que el botón para duplicar, que es el mismo que antes, no funciona ni con el sistema anterior, ni con la macro incrustada de Access 2007 (asistente para botones). Tampoco funciona si convierto la macro a VBA.
¿Cómo lo puedo resolver?, ya que es de vital importancia para el trabajo, de lo contrario se deberán volver a introducir los datos de nuevo.
Te muestro el código que tengo actualmente y el que genera la conversión de la macro a VBA. En el primero (1) el código es el mismo que he visto en una respuesta del foro:
1 - Sistema con Access-2002/XP (generada con el asistente para botones)
Private Sub cmdDuplicar_Click()
On Error GoTo Err_cmdDuplicar_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70
Exit_cmdDuplicar_Click:
Exit Sub
Err_cmdDuplicar_Click:
MsgBox Err.Description
Resume Exit_cmdDuplicar_Click
End Sub
2 - Sistema de macro (copiada de la macro incrustada que genera Access-2007 con el asistente para botones) y (convertida a VBA)
Private Sub cmdDuplicar_Click()
On Error GoTo cmdDuplicar_Click_Err
On Error Resume Next
DoCmd.RunCommand acCmdSelectRecord
If (MacroError = 0) Then
DoCmd.RunCommand acCmdCopy
End If
If (MacroError = 0) Then
DoCmd.RunCommand acCmdRecordsGoToNew
End If
If (MacroError = 0) Then
DoCmd.RunCommand acCmdSelectRecord
End If
If (MacroError = 0) Then
DoCmd.RunCommand acCmdPaste
End If
If (MacroError <> 0) Then
Beep
MsgBox MacroError.Description, vbOKOnly, ""
End If
cmdDuplicar_Click_Exit:
Exit Sub
cmdDuplicar_Click_Err:
MsgBox Error$
Resume cmdDuplicar_Click_Exit
End Sub
Por último, preguntar que cuando cierras el formulario, si se ha realizado alguna duplicación de registro, te muestra un mensaje de advertencia que dice:
"Copió una gran cantidad de datos en el Portapales. Cuando copia datos en el portapapeles..."
¿Hay alguna forma de que no salga este mensaje?
Aunque disponga de Access-2007, el formato de archivo predeterminado es "Access 2002-2003".
Ahora me han solicitado que en lugar de hacerlo de esta forma, lo haga con un "control ficha". De hecho ya lo tengo todo hecho y funcionando, pero el problema es que el botón para duplicar, que es el mismo que antes, no funciona ni con el sistema anterior, ni con la macro incrustada de Access 2007 (asistente para botones). Tampoco funciona si convierto la macro a VBA.
¿Cómo lo puedo resolver?, ya que es de vital importancia para el trabajo, de lo contrario se deberán volver a introducir los datos de nuevo.
Te muestro el código que tengo actualmente y el que genera la conversión de la macro a VBA. En el primero (1) el código es el mismo que he visto en una respuesta del foro:
1 - Sistema con Access-2002/XP (generada con el asistente para botones)
Private Sub cmdDuplicar_Click()
On Error GoTo Err_cmdDuplicar_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70
Exit_cmdDuplicar_Click:
Exit Sub
Err_cmdDuplicar_Click:
MsgBox Err.Description
Resume Exit_cmdDuplicar_Click
End Sub
2 - Sistema de macro (copiada de la macro incrustada que genera Access-2007 con el asistente para botones) y (convertida a VBA)
Private Sub cmdDuplicar_Click()
On Error GoTo cmdDuplicar_Click_Err
On Error Resume Next
DoCmd.RunCommand acCmdSelectRecord
If (MacroError = 0) Then
DoCmd.RunCommand acCmdCopy
End If
If (MacroError = 0) Then
DoCmd.RunCommand acCmdRecordsGoToNew
End If
If (MacroError = 0) Then
DoCmd.RunCommand acCmdSelectRecord
End If
If (MacroError = 0) Then
DoCmd.RunCommand acCmdPaste
End If
If (MacroError <> 0) Then
Beep
MsgBox MacroError.Description, vbOKOnly, ""
End If
cmdDuplicar_Click_Exit:
Exit Sub
cmdDuplicar_Click_Err:
MsgBox Error$
Resume cmdDuplicar_Click_Exit
End Sub
Por último, preguntar que cuando cierras el formulario, si se ha realizado alguna duplicación de registro, te muestra un mensaje de advertencia que dice:
"Copió una gran cantidad de datos en el Portapales. Cuando copia datos en el portapapeles..."
¿Hay alguna forma de que no salga este mensaje?
1 Respuesta
Respuesta de xavi -ae soft-
1