Copiar campos

Juanito1:
Tengo un problema que hasta la fecha nadie me ha podido solucionar, y voy para dos meses.
Tengo un subformulario con campo1, campo2
Etc cuyo origen es la tabla1 campo1, campo2 etc.
Como copio todos los registro de ese subformulario a otra Tabla2 que es idéntica a la tabla1 con los mismos campos.
Me seria de una ayuda importantísima, estoy estancado y no puedo avanzar con la base.
Si tienes dudas por favor me lo dices y te explicaría mejor la consulta.
Gracias
Fran

1 Respuesta

Respuesta
1
Puedes ponerte un botón en tu subformulario que haga:
Private Sub cmdCopia_Click()
Dim base As DAO.Database
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim i%
Set base = CurrentDb
Set rs2 = base.OpenRecordset("select * from tabla2")
Set rs = Me.RecordsetClone
rs.MoveFirst
While Not rs.EOF
rs2.AddNew
For i = 0 To rs.Fields.Count - 1
rs2.Fields(i) = rs.Fields(i)
Next
rs2.Update
rs.MoveNext
Wend
rs.Close
rs2.Close
Set rs = Nothing
Set rs2 = Nothing
Set base = Nothing
End Sub
Y a correr!!!
Ante todo agradecerte tu interés, ya había perdido la esperanza de poder encontrar una solución a este problema.
Como veras por mi pregunta mi nivel de Access esta en pañales.
Bueno...
He hecho lo que me indicas en una prueba
Base da datos= Subformulario.mbd
Formulario1,origen Tabla1 y Tabla2 el destino.
Cuando corro la copia me sale el siguiente error:
Error de compilación
No se ha definido el tipo definido por el usuario.
Saludos
Lo que debes hacer es referenciar los objetos DAO de access (Objetos de acceso a datos) para poder instanciar las variables objeto base, rs y rs2. Esto se hace entrando al menu herramientas->referencias de tu módulo, para después marcar el checkBox que hace mención a Microsoft DAO 3.6 Object Library, o la más moderna de que dispongas. Así funcionará.
Has contestado tan rapido que efectivamente ese era el error y lo había corregido.Con tu permiso me voy a extender para ver las modificaciones que sean necesarias para que funcione correctamente.
Lo que pretendo es copiar los datos de un subformulario no de un formulario, es decir:
Tengo un formulario " Presupuestos " con un subformulario relacionado Uno a Varios en el que pongo los elementos que interviene en ese presupuesto.
Cuando me lo aprueban genero una orden en la que me abre un formulario de " Ordenes" con un Subformulario.
Los campos de formulario a formulario lo tengo solucionado, pero de Subformulario a subformulario.. NO.
En la prueba que he hecho veo que cada vez que copio me pasa todos los datos repitiéndolos lo cual no quiero, me explico:
Copio por ejemplo dos registros, y cierro el formulario, si vuelvo abrir el formulario y copio dos registro nuevos, que no me copie otra vez los dos anteriores.
En los subformulario no puedo tener campos clave.
Estoy convencido que es difícil pero confío en tu experiencia.
Gracias
Fran
Para darte una respuesta 100% efectiva debería conocer muchas cosas de tu aplicación que, como es lógico, ignoro completamente. El programita que te he implementado se limita a copiar todos los registros de una tabla en otra (select * from tabla2). Entiendo que si sabes aplicarlo a tus procesos de presupuestos y compras con una condición where donde consigas especificarle el código de compra, o algo así, tu problema estará resuelto. Yo sin conocer tu aplicación, poco más puedo ayudarte, como comprenderás.
Entiendo que solucionarlo sin tener el programa es en ocasiones prácticamente imposible.
En el formulario y subformulario hay un campo común que lógicamente cambia según el presupuesto.
Como ultima pregunta, se puede con el código anterior a la hora de copiar, evitar que copie los campos que sean iguales porque así estaría resuelto.
Saludos.
Fran
No se, la lógica del procesito está basada en copiar 'campo a campo' todos los REGISTROS de tabla2..., y no en campos.
Sorry

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas