Pasar datos desde formulario A, hacia formulario B y desde formulario B a formulario C, en access

Espero saber explicarme:

En el formulario llamado frmCie, quiero que al dar doble clic sobre algunos de los registros me pase esos datos al formulario llamado frmEnfermedad, concretamente me los tiene que poner en el campo enfermedad y que cuando le de al botón guardar me guarde todos los datos en su tabla y al mismo tiempo una serie de datos del formulario frmEnfermedad me los pase a un tercer formulario llamado frmConsultaPaciente, esos datos los tendría que poner directamente en el subformulario que veis en la imagen. Gracias por vuestra ayuda.

1 respuesta

Respuesta
1

Con los datos que das es difícil decir algo concreto, ya que no dices, si en el cuadro de lista del formulario CyE vas a seleccionar sólo un ítem o varios. Por otro lado, por la imagen, da la impresión de que el formulario Consulta, tiene un subformulario en vista hoja de datos, que parece que es donde quieres que te ponga los datos. Tampoco dices como abres( desde que botón o desde que evento) el formulario FrmEnfermedad desde el formulario FrmConsulta. Ante la duda, vamos a suponer que tengo un formulario, que sería el FRMConsulta.

Cuando pulso el botón, en el que en el evento Al hacer clic  tengo puesto

Private Sub Comando246_Click()
DoCmd.OpenForm "frmenfermedad", , , , acFormAdd, acDialog
End Sub

Cuando pulso el botón, en el que en el evento Al hacer clic le tengo puesto

Private Sub Comando7_Click()
DoCmd.OpenForm "frmcye", , , , , acDialog
End Sub

Selecciono A013    Dolor de muelas y al cerrar el formulario

En este caso, en el código del evento Después de actualizar del control Lista0 del formulario FrmCyE le tengo puesto

Private Sub Lista0_AfterUpdate()
If CurrentProject.AllForms("frmenfermedad").IsLoaded Then
Forms!frmenfermedad!Enfermedad = "" & Lista0 & ""
Forms!frmenfermedad!Descripción = "" & Me.Lista0.Column(1) & ""
End If
End Sub

Es decir, si el formulario FrmEnfermedad está cargado( que si lo está, ya que has abierto desde él) el valor del control Enfermedad sea igual a lo que has elegido en Lista0 y el valor del campo Descripción sea igual a lo que has elegido, pero en la columna(1)

En código VB la primera columna es 0.

En caso de que en el formulario Consulta, donde quieres que aparezca el valor sea un subformulario, tendrías que añadir al código anterior

If currentproject.allforms("frmConsultas"),isloaded then

forms!FrmConsulta!nombredelsubformulario.form!codigo="" & me.lista0 ""

forms!frmconsulta!nombredelsubformulario.form!enfermedad="" & me.lista0.column(1) & ""

end if

Vale el mismo razonamiento de que sí está cargado

Te comento que en el frmCie solo voy a seleccionar un item para pasarlo al frmEnfermedad y colocarlo en el campo enfermedad de este segundo formulario.

Y como explico anteriormente del frmEnfermedad a parte de guardar los datos en su tabla, también me ha de pasar una seria de datos al frmConsultaPacientes, concretamente en un SUBFORMULARIO, como explicaba.

Espero que estas aclaraciones te sirvan y desde ya te doy las gracias por tu interés en ayudarme

Si lo que vas a pasar está en el formulario FrmEnfermedad y quieres que aparezca en unos controles(controlA, Controlb,... del subformulario Penalidades(basado en la tabla del mismo nombre, por comodidad mía) del formulario FrmConsultas, puedes hacerlo en algún evento del formulario Enfermedades, por ejemplo, al hacer click de un botón, pones lo que te decía arriba

If currentproject.allforms("frmConsulta").isloaded then

forms!frmconsulta!Penalidades.form!controla=Enfermedad

forms!frmconsulta!Penalidades.form!controlB=Descripcion

etc

end if

Otra forma sería. Vamos a suponer que en el formulario Consultas y el subformulario Penanlidades están relacionados por un campo común Idenfermo. En el evento al hacer clic del botón que te decía antes del formulario FrmEnfermedades poner

docmd.setwarnings false

Docmd. Runsql"insert into penalidades(campo1, campo2, Campo3)values(enfermedad, descripcion, otrocampo)"

docmd.runsql"update penalidades set Idenfermo=forms!FrmConsulta!idenfermo where idenfermo is null"

forms!frmconsulta!penalidades.form.requery

Es decir, introduce en un nuevo registro de penalidades, en los campos Camp1, campo2 y Campo3 los valores que figuran ebn ese momento en Enfermedad, descripcion y OtroCampo.

Después, actualiza el campo Idenfermo de ese nuevo registro al valor que tiene el idenfermo del formulario FrmConsulta

Y por último, que el subformulario "reconsulte" su origen.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas