[RESUELTO]DUPLICAR REGISTROS
[RESUELTO]DUPLICAR REGISTROS
Hola, estoy diseñando una aplicación y me vendría muy bien poder duplicar algunos registros que van a tener básicamente los mismos datos, solo cambiando unos pocos campos. Desde el formulario sería lo ideal para facilitar su uso ya que al darle a "nuevo registro" logicamente se borra todo el formulario para recibir nuevos datos. La base de datos es Firebird.
Gracias!!
Gracias!!
Última edición por James07 el Mar Dic 28, 2021 5:42 pm, editado 2 veces en total.
Libre Office 6.4 en Windows 10
Re: DUPLICAR REGISTROS
Hola,
Si buscas en el foro de Base, encontraras ejemplos.
Saludos
Si buscas en el foro de Base, encontraras ejemplos.
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: DUPLICAR REGISTROS
Hola de nuevo, pues la verdad es que antes de hacer la consulta he buscado para no dar la lata innecesaramente pero lo que he visto o no se ajusta o no he comprendido bien lo que querían. Mi caso es sencillo de explicar, duplicar TODO el contenido de una fila de la BD (que se ve en un formjlaro) en un registro nuevo para poder cambiar solo algunos datos del nuevo (el que se ha generado y es copia). En mi caso es importante ya que muchos supuestos son casi iguales en todos los campos menos alguno/ os. Si me puedes indicar alguna respuesta que ya se haya dado me perece perfecto.
Gracias otra vez.
Un saludo
Gracias otra vez.
Un saludo
Libre Office 6.4 en Windows 10
Re: DUPLICAR REGISTROS
Hola,
Dejo en este hilo, un pequeño ejemplo de uno de mis proyectos para quien pueda necesitar esta solución. Lo que hace, es recoger los datos de los campos de un formulario e insertar un nuevo registro en la tabla y por ultimo refrescar el formulario para ver ese nuevo registro.
Saludos
Dejo en este hilo, un pequeño ejemplo de uno de mis proyectos para quien pueda necesitar esta solución. Lo que hace, es recoger los datos de los campos de un formulario e insertar un nuevo registro en la tabla y por ultimo refrescar el formulario para ver ese nuevo registro.
Código: Seleccionar todo
'Duplica los datos de un responsable seleccionado
Sub DuplicarResponsable (Evento)'Evento boton
Dim oStat As Object
Dim sSQL As String
Dim oForm As Object
Dim iParcela As Integer
Dim sNombre As String
Dim sApellidos As String
Dim sDNI As String
Dim sTfno As String
Dim sMovil As String
Dim dFianza As Double
Dim sEMail As String
Dim sFNacimiento As String
Dim sFExpedicion As String
Dim sCiudad As String
Dim sDomicilio As string
Dim sNacionalidad As String
Dim sMatricula As String
Dim iOpcion As Integer
oForm=Evento.Source.Model.Parent
If oForm.IsNew Or oForm.IsAfterLast Then
MsgBox "¡Atención! no se pueden cargar los datos si no estan grabados"
Exit Sub
End Sub
iOpcion = MsgBox ("Con esta acción se duplicaran los datos del responsable, ¿Realmente deseas duplicarlos?",36,"Duplicar datos")
If iOpcion = 6 Then
iParcela = oForm.Columns.getByName("NParcela").Value
sNombre = oForm.Columns.getByName("Nombre").String
sApellidos = oForm.Columns.getByName("Apellidos").String
sDNI = oForm.Columns.getByName("DNI").String
sTfno = oForm.Columns.getByName("Tfno").String
sMovil = oForm.Columns.getByName("Movil").String
dFianza = oForm.Columns.getByName("Fianza").Value
sEMail = oForm.Columns.getByName("EMail").String
sFNacimiento = oForm.Columns.getByName("FNacimiento").String
sFExpedicion = oForm.Columns.getByName("FExpedicion").String
sCiudad = oForm.Columns.getByName("Ciudad").String
sDomicilio = oForm.Columns.getByName("Domicilio").String
sNacionalidad = oForm.Columns.getByName("Nacionalidad").String
sMatricula = oForm.Columns.getByName("Matricula").String
'Cargamos los datos con los valores de la ultima ocupación
oStat=ThisDatabaseDocument.CurrentController.ActiveConnection.CreateStatement
sSQL = "INSERT INTO ""tabOcupaciones""(""NParcela"",""Nombre"",""Apellidos"",""DNI"",""Tfno"",""Movil"",""Fianza"","&_
" ""EMail"",""FNacimiento"",""FExpedicion"",""Ciudad"",""Domicilio"",""Nacionalidad"",""Matricula"")"&_
" VALUES (" & iParcela & ",'" & sNombre & "', '" & sApellidos & "', '" & sDNI & "', '" & sTfno & "',"&_
" '" & sMovil & "', " & dFianza & ", '" & sEMail & "', '" & Format(sFNacimiento,"YYYY-MM-DD") & "', '" & Format(sFExpedicion,"YYYY-MM-DD") & "',"&_
" '" & sCiudad & "', '" & sDomicilio & "', '" & sNacionalidad & "', '" & sMatricula & "')"
oStat.ExecuteUpdate(sSQL)
Else
MsgBox "Acción cancelada. No se ha cargado ningun dato",,"Acción cancelada"
Exit Sub
End If
oForm.Reload()
End Sub
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: DUPLICAR REGISTROS
muchas gracias RMG!! voy a estudiarlo y ver si lo puedo aplicar.
Un saludo
Un saludo
Libre Office 6.4 en Windows 10
Re: DUPLICAR REGISTROS
Hola de nuevo RMG. He estado estudiando el código de he me has indicado y tengo bastantes preguntas para intentar comprenderlo. No quisiera darte mucho la lata y a lo mejor, si no te es mucha molestia, sería mejor si pudiera verlo en un pequeño ejemplo, una tabla, un par de registros y un botón con la macro… lo analizaría y creo que podría entenderlo antes.
Si no puede ser, lo comprendo.
Muchas gracias!!
Si no puede ser, lo comprendo.
Muchas gracias!!
Libre Office 6.4 en Windows 10
Re: DUPLICAR REGISTROS
Hola,
Ya te he pedido un pequeño ejemplo en otro hilo y no lo has preparado, tienes que procurar que no tengamos que partir de cero a los que te queremos ayudar.
Saludos
Ya te he pedido un pequeño ejemplo en otro hilo y no lo has preparado, tienes que procurar que no tengamos que partir de cero a los que te queremos ayudar.
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: DUPLICAR REGISTROS
Perdón, pero no llegué a comprender la operativa. Efectivamente lo preparé pero como no me decidí al tema de los archivos externos por que iba a ser demasiada complicación y nula demanda pues ahí se quedó. Lo repaso y lo mando.
Mis disculpas por adelantado y agradecerte el trabajo que haces altruistamente por doomies como yo jajaja.
Un saludo muy cordial
Mis disculpas por adelantado y agradecerte el trabajo que haces altruistamente por doomies como yo jajaja.
Un saludo muy cordial
Libre Office 6.4 en Windows 10
Re: DUPLICAR REGISTROS
Hola de nuevo RMG. Aquí te adjunto un ejemplo que he llamado PRUEBA DUPLICADO con el código que mandaste. He intentado acoplarlo a la BD que he preparado pero no se como conectarla con el botón de prueba. No me aparece como macro el código.
Gracias por tu ayuda!
Un saludo.
Gracias por tu ayuda!
Un saludo.
- Adjuntos
-
- PRUEBADUPLICADO.rar
- (10.88 KiB) Descargado 139 veces
Libre Office 6.4 en Windows 10
Re: DUPLICAR REGISTROS
Hola,
Aquí tienes tu ejemplo funcionando, en el puedes ver como he modificado mi macro a tus datos.
Una recomendación que te hago para todas las BD en general que diseñes, evita poner tildes a los nombres de los campos, tipo número o teléfono etc, con ellos evitaras muchos problemas. A las etiquetas sí se los puedes poner sin problemas.
Saludos
Aquí tienes tu ejemplo funcionando, en el puedes ver como he modificado mi macro a tus datos.
Una recomendación que te hago para todas las BD en general que diseñes, evita poner tildes a los nombres de los campos, tipo número o teléfono etc, con ellos evitaras muchos problemas. A las etiquetas sí se los puedes poner sin problemas.
Saludos
- Adjuntos
-
- PRUEBADUPLICADO1.zip
- (11.69 KiB) Descargado 150 veces
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: DUPLICAR REGISTROS
Muchísimas gracias RMG por tu ayuda inestimable. Has tenido la amabilidad de adaptar el código al ejemplo que envié y por mi torpeza ni siguiera llevaba la macro que había preparado sobre el código que enviaste. Gracias nuevamente.
Solo por aprender más quería preguntarte cuando el código dice
Dim iOpcion As Integer
se está refiriendo al mensaje de aviso? ¿ y los valores 6 y 36 que salen en el código a que responden?
Gracias nuevamente y un afectuoso saludo.
Solo por aprender más quería preguntarte cuando el código dice
Dim iOpcion As Integer
se está refiriendo al mensaje de aviso? ¿ y los valores 6 y 36 que salen en el código a que responden?
Gracias nuevamente y un afectuoso saludo.
Libre Office 6.4 en Windows 10
Re: DUPLICAR REGISTROS
Hola,
Dim significa declarar una variable, iOption, el nombre de la variable, As Integer, el tipo de variable. En estos enlaces que te dejo puedes aprender mucho sobre ello.
https://wiki.open-office.es/Recursos_Basic
https://wiki.open-office.es/Basic
https://wiki.open-office.es/Base
Saludos
Dim significa declarar una variable, iOption, el nombre de la variable, As Integer, el tipo de variable. En estos enlaces que te dejo puedes aprender mucho sobre ello.
https://wiki.open-office.es/Recursos_Basic
https://wiki.open-office.es/Basic
https://wiki.open-office.es/Base
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)