Furmulario en Nuevo registro con algunos campos fijos

Te consulto la idea por si puedes ayudarme:
En una hoja de una ficha veo (en vista hoja de datos) un formulario que viene filtrado de una consulta donde muestra los trabajos pendientes de realizar, en otra hoja veo los trabajos ya realizados (también filtrados desde otra consulta). Quisiera, si se puede, que al seleccionar un registro de los trabajos pendientes, a través de un botón se abriera otro formulario donde se pudiesen editar los registros. Por otro lado, con un segundo botón que se pudiese abrir otro formulario y que lo hiciese en un registro nuevo pero cargando ciertos campos de las fichas, con la finalidad de poder pasar los trabajos pendientes a los trabajos finalizados.

1 respuesta

Respuesta
1
Cuando hablas de ficha u hoja ¿te refieres al contro Ficha o a varios formularios?
Buenas tardes, en primer lugar agradecerte la molestia que te tomas en contestar.
Bueno, verás, es un formulario donde solo hay un control ficha (grande) con dos hojas, en una veo los trabajos pendientes y en la otra los terminados o mejor dicho el tipo de actuación que se ha realizado en los trabajos ya hechos, o sea, cada hoja muestra su subformulario respectivo. También tengo varios formularios más que sirven para dar de alta un encargo o modificarlo, otro para añadir las tareas realizadas etc. y son estos los que quiero enlazar con los del control ficha, y por lo peculiar de mi trabajo y como llegan los encargos y como asocio las tareas realizadas a cada encargo me he visto obligado a llevarlo todo en la misma tabla. Debido a ello he ideado que lo mejor es que desde control ficha-subformulario trabajo pendiente- seleccionar un registro y por un botón abrir otro formulario que se sitúe en un registro nuevo pero que arrastre cierta información común a ese trabajo (de la tabla general) y este segundo formulario tendría otro botón para guardar el registro.
No se si esto te aclara mucho, últimamente he leído mucho en las preguntas y respuestas y los expertos, a veces, tienen que ser adivinos. La verdad es que para una buena respuesta debe de haber antes una buena pregunta y uno no quiere ser pesado ni aprovechado.
Un saludo, Jose Luis.
La forma que yo utilizo para pasar valores entre formularios es la de declarar variables públicas.
Te explico, por ejemplo tenemos un cuadro de texto en un formulario que lo llamaremos Texto1 y su valor lo queremos trasladar a otro formulario en otro cuadro de texto que llamaremos Texto2. Bien, vas a la pestaña módulos y abres uno nuevo, ahí declararemos nuestra variable que por ejemplo llamaremos var, la declaramos: Public var as string, guardas el módulo con el nombre que quieras y volvemos al formulario 1º, tenemos que igualar el valor del cuadro Texto1 a la variable, para ello pondremos en la acción Al perder el enfoque, por ejemplo, un procedimiento de evento ---> var=Form! Texto1. Value
Como esta variable la hemos declarado publica nos vale para toda la aplicación, por lo que al abrir el 2º formulario pondremos en la acción al cargar ---> Procedimiento de evento ---> form! Texto2. Value=var
No se si es esto lo que necesitas, me cuentas.
Buenas tardes, tengo el formulario1 que me sirve para dar de alta el encargo de trabajo; este carga y descarga datos de la tabla, (campo1, campo2, campo3, etc..) ahora para realizar el control de las actuaciones asociadas a ese encargo, necesito con un botón en el form1 que se abra el formulario2, al abrirse que se sitúe en un registro nuevo y que a la vez cargue el campo1, campo2, campo3 etc.. que tenia seleccionado en el form1. Luego, en este segundo formulario, después de rellenar otros campos distintos al 1,2,3, etc, tendría otro botón para guardar el registro nuevo y cerrar el formulario.
Todos los datos están en la misma tabla. Bueno eso es más o menos lo que pretendo.
Muchas gracias, Jose Luis
Para pasar los valores de los campos Campo1, Campo2, Campo3... tendremos que utilizar variables públicas, abres un módulo nuevo y las declaramos:
Public var1 as string
Public var2 as string
Public var3 as string
...
...
Cierras el modulo y lo guardar, por ejemplo como Modulo1
En el formulario1 tendrás los cuadros de texto Campo1, Campo2, Campo3... con los datos de la tabla
En el código del botón pondrás:
var1=Form!Campo1.Value
var2=Form!Campo2.Value
var3=Form!Campo3.Value
...
DoCmd. OpenForm "Formulario2", acNormal
El formulario2 lo pones como entrada de datos y no pones nada en origen del registro, es decir, será un formulario independiente.
Los cuadros de texto donde meteremos los valores anteriores los llamaremos Texto1, Texto2, Texto3... En las propiedades de este formulario, en la acción Al cargar ---> Procedimiento de evento ---> Picas en el cuadrado de la derecha, el de los ... y pones el código:
Form!Texto1.Value=var1
Form!Texto2.Value=var2
Form!Texto3.Value=var3
...
...
Supongamos que los otros valores, los que metes nuevos están en los cuadros de texto Texto4 y Texto5 y los campos de la tabla son Campo4 y Campo5
En el botón para guardar el registro pondrás el código:
DoCmd.RunSql "Insert Into tablaA (Campo1, Campo2, Campo3) Values ('" & Form!Texto1.Value & "', '" & Form!Texto2.Value & "','" & Form!Texto3.Value & "','" & Form!Texto4.Value & "','" & Form!Texto5.Value & "')"
Ves que los valores se pone '" & ElValor & "' esto es si el campo de la tabla es de texto, si fuese numérico quitas las comillas simples: " & Form!Texto1.Value & " y su fuese campo fecha, tendrías que pasarlo a tipo fecha: cDate('" & Form!Texto1.Value & "')
Me cuentas.
Lo que dices funciona siempre que el formulario de dónde sacas los datos esté abierto, lo que yo te digo es igual que esté abierto o cerrado, es una forma que sirve para cualquier situación, ya que como te he dicho las variables públicas las puedes utilizar en CUALQUIER PARTE y en CUALQUIER MOMENTO de la aplicación, por ello me parece mejor hacerlo así.
Me cuentas.
Hola, buenos días, este finde semana he probado esto:
Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "fmRegistroActuacion"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    DoCmd.GoToRecord acDataForm, Forms!fmRegistroActuacion.Name, acNewRec
    Forms!fmRegistroActuacion!Control_Guardas = Me.Control_Guardas
    Forms!fmRegistroActuacion!Control_Asuntos = Me.Control_Asuntos
    Forms!fmRegistroActuacion!Expediente = Me.Expediente
    Forms!fmRegistroActuacion!Interesado = Me.Interesado
    Forms!fmRegistroActuacion!Paraje = Me.Paraje
    Forms!fmRegistroActuacion!Control_Cauces = Me.Control_Cauces
    Forms!fmRegistroActuacion!FechaActuacion = Me.FechaRespuesta
    Forms!fmRegistroActuacion!Control_TM = Me.Control_TM
    Forms!fmRegistroActuacion!RefActuacion = Me.RefRespuesta
    Forms!fmRegistroActuacion!FechaActuacion = Me.FechaRespuesta
Exit_salir_fmRegistroNS_Click:
    Exit Sub
Err_salir_fmRegistroNS_Click:
    MsgBox Err.Description
    Resume Exit_salir_fmRegistroNS_Click
Lo pongo al hacer clic en el botón del fmRegistroNS y me pasa esos datos al fmRegistroActuacion, abriendomelo, entonces ternino de rellenar y lo guardo. En este momento estaba viendo la forma de que automáticamente, al dar al botón, abra el 2º formulario, copie los campos referenciados (hasta ahí funciona) y que se cierre el primer formulario origen de esos campos. También estaba viendo la posibilidad de que el dichoso botón que manda todo esto que no esté activo hasta que en el 1er formulario no rellene dos campos concretos, RefActuacion y FechaActuacion.
Voy a probar lo que me indicas y esta tarde te cuento
muchas gracias
No se lo que ha pasado, quizás hemos coincidido en la respuesta...
Me cuentas cuando lo pruebes.
Te hago una reverencia. Muchísimas gracias. Además me gusta mucho como explicas paso a paso las instrucciones, eso hace que los que no sabemos programar... vayamos entendiendo un poquillo como funciona esto y hacer nuestros pinitos, no dedicándonos solamente a preguntar, copiar y pegar.
Ahora estoy con los combos y el notlnlist. Si te parece cierro esta pregunta y pongo otra referente a un evento NotlnList a ver que te parece.
Muchas gracias de nuevo y que tengas un buen día.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas