Access - Cuadros combinados

   
Vista:

Cuadros combinados

Publicado por Miguel maserranom@gmail.com (51 intervenciones) el 10/06/2016 14:00:07
Buenas.
Tengo un problemilla con una base y no sé realmente si es un tema de relaciones o realmente de código.
El caso es que parto de un formulario independiente que me muestra tres cuadros combinados ( que tienen reflejo en sus tablas). En ese formulario, tengo un botón que al hacer click me produce el evento de ir a otro formulario y mostrarme la selección previa que he hecho. El caso es que me lleva hasta allí pero, al hacer de nuevo la misma operación me sobreescribe el registro anterior ( o sea, que no me lo graba...). Os muestro el código del botón:
(notas:
-AÑO, Entidad y Documento son los tres cuadros combinados
-RESUELVE es el formulario que me abre
)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub Comando47_Click()
On Error GoTo xEr
 
    If IsNull(Me.AÑO) Or IsNull(Me.Documento) Or IsNull(Me.Entidad) Then
        MsgBox "Debe seleccionar año, entidad y documento.", vbCritical
        Exit Sub
    End If
 
    DoCmd.OpenForm "Resuelve", acNormal
    Forms!RESUELVE!AÑO = Me.AÑO
    Forms!RESUELVE!Enti = Me.Entidad
    Forms!RESUELVE!TD = Me.Documento
    Forms!RESUELVE!FecRec = DLookup("[FECHA REC]", "Entidades", "[CIF] ='" & Me.Entidad & "'")
    Forms!RESUELVE!Presi = DLookup("[REPRESENTANTE]", "Entidades", "[CIF] ='" & Me.Entidad & "'")
    Forms!RESUELVE!NIF = DLookup("[NIF_REPRESENTANTE]", "Entidades", "[CIF] ='" & Me.Entidad & "'")
    Forms!RESUELVE.Requery
 
Salir:
    'cerrar todo abierto...
    Exit Sub
 
xEr:
    MsgBox Err.Description
    Resume Salir
End Sub


Porqué no se me guarda el registro en el Formulario RESUELVE??
AL abrir de nuevo el formulario de inicio, todo parecenormal lo que hace es sobreescribirlo..
Alguna ayuda. Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Cuadros combinados

Publicado por Jesús Manuel (202 intervenciones) el 10/06/2016 14:29:35
Tal y como tienes el código, mi impresión no es la de que abras RESUELVE por los campos filtrados de los cuadros combinados, lo que haces es abrir RESUELVE (DoCmd.OpenForm "Resuelve", acNormal) y como no indicas ningún criterio, pues abre el primer registro, y luego, asignas valores a cada campo (Forms!RESUELVE!AÑO = Me.AÑO,...) con lo cual, solo vas a tener 1 registro en la tabla que sea origen de datos de RESUELVE y lo estas cambiando cada vez que lo abres.

Pongamos un ejemplo (aumo que los 3 campos son tipo texto):
AÑO = 2016
ENTIDAD= ent001
DOCUMENTO= doc001


Entiendo que quieres abrir el formulario RESUELVE que tiene como valor del año 2016, como valor de entidad ent001 y como valor de documento doc001. Lo primero es que los cuadros combinados tendrían que estar en cascada para asegurarte que tal registro existe, o bien antes de abrir el formulario comprobar que existe mediante una función de dominio (Dlookup).

En caso de existir, abriríamos el formulario:

DoCmd.OpenForm "RESUELVE", , , "[AÑO]='" & Me.AÑO & "' AND [ENTIDAD]='" & Me.ENTIDAD & "' AND [DOCUMENTO]='" & Me.DOCUMENTO & "'"


Si el tipo de dato en los campos no es texto, tendrías que adaptar el código anterior para el formato de dato adecuado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cuadros combinados

Publicado por Enrique Heliodoro (1663 intervenciones) el 10/06/2016 15:57:51
No lo tengo claro .....

Si partimos del supuesto:
..... me muestra tres cuadros combinados ( que tienen reflejo en sus tablas). ....

Los registros SIEMPRE existen (si los cuadros combinados están 'bien combinados'), por lo que lo adecuado seria APLICAR un filtro que mostrase el registro (dado que se parte del supuesto de que existe físicamente).

En la apertura del formulario se le puede añadir una condición en al menos tres puntos:
.- Un filtro guardado
.- una condición creada expresamente
.- Enviándole parámetros en 'OpenArgs'

Además de ello, (dado que se desconoce el estado del formulario tras la primera 'llamada') esta la posibilidad de utilizar el propio filtro del formulario, pues si permanece abierto entre llamadas, no pasaría por los procesos adecuados para gestionar los filtros (como si hace la primera vez) pero permitiría manipular 'su' filtro en tiempo de ejecución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cuadros combinados

Publicado por Miguel (51 intervenciones) el 10/06/2016 20:30:15
No tengo muy claro lo que me comentas Enrique.
Los cuadros combinados son los tres de tres tablas normales con un código único: Año, Tipo Entidad y Tipo Documento.
Luego, la tabla Resuelve está vacía en principio.
Al hacer en un formulario (independiente) una selección en los cuadros combinados (p.e., Año:2015, Tipo Ent.: S.A.y tipo Doc.: Declaración), quiero que en el evento clic se me cree ese registro en la tabla Resuelve, que no existe y que lo guarde.

Aunque por otro lado, igual el formulario inicial de consulta podría estar basado en la tabla Resuelve, que contenga eseo tres campos vinculados ( de 1 a muchos) y6 que me abra otro formulario de esa misma tabla ya filtrado... no sé no sé...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cuadros combinados

Publicado por Miguel (51 intervenciones) el 10/06/2016 18:08:20
Muchas gracias. Miro y pruebo.
(Es que no he podido con los pequeñajos...).
Por cierto si quiero añadirle al formulario que se me carga (RESUELVE) unos datos agrupados por trimestre, cómo debo de hacerlo?
Yo tenía en mente poner como un control de ficha con 4 fichas (una por trimestre) y en cada una poner los campos que necesito ... pero no lo tengo claro.
Alguna sugerencia también ??

Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cuadros combinados

Publicado por Enrique Heliodoro (1663 intervenciones) el 10/06/2016 21:38:12
Intenta trasmitir información, no amontonarla ...

Has de partir de una realidad, tú sabes lo que buscas y sabes lo que tienes, el resto (los de 'afuera') desconocemos la realidad en que te mueves y solo sabemos lo que nos cuentas.

Si 'el tema' va de crear registros y (de momento) aun estas comenzando, te propondría otro método.

Lo del formulario se resuelve si creas una consulta de datos anexados (puedes diseñarla con el generador grafico de Access) solo tendrías que 'llamarla a golpe de botón' y problema resuelto.

Rellenas los combos y cuando lo consideres adecuado (por ejemplo con una macro que dispone de esa acción) ejecutas la consulta y ... dentro de la tabla.

para 'obtener' ese resultado:
.- creas una consulta en blanco
.- creas un alias como campo, por ejemplo:
Dato1:Formularios!NombreDelFormulario\Nombre_del_combo
.... igual par el segundo y tercer combo ......

La ejecutas y debería mostrarte los datos seleccionados en los combos ....
¿Funciona? ...
No ==> revisa de otra vez lo anterior
SI ==> continuamos

.- Conviértela en una consulta de datos anexados (es un simple Click)
.- indícale la tabla de destino
.- en el desplegable (y bajo cada campo), selecciona el correcto a cada caso

Fin.

La ejecución de esa consulta insertara los valores actuales de/en el formulario en la tabla de destino (y para ejecutarla, el botón que esta asociado a la supuesta macro que 'lanzaría' esa consulta)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cuadros combinados

Publicado por Miguel (51 intervenciones) el 11/06/2016 00:07:41
Hola de nuevo.
Lo siento, tardo en contestar por los niños que no me dejan...
Lo primero es agradecer a Jesús Manuel pues con su línea de código se me guarda el registro como quería;
también, por supuesto a Enrique pues con la consulta lo consigo de igual manera. Ahora la idea que me preocupa un poco es la de emparejar trimestres de información a un registro. Básicamente lo puedo hacer pero no me está saliendo de forma "elegante", digamos. Adjunto unas imágenes con las relaciones y la ficha que se crea.
Se observa en la imagen del formulario que tengo cuatro fichas, una por trimestre y en cada ficha unos subformularios. El caso es que, como son las mismas tablas (hay una por trimestre) lo que se me graba en un trimestre me aparece en otro y no es lo que busco. La solución sería hecer 4x4 tablas, pero me parece raro hacerlo cuando lo único que cambia en las cuatro tablas es el trimestre en cuestión, que además lo prdefino su valor en cada pestaña de ficha (1er. Trimestre; 2º Trim...).
También puedo eliminar las fichas y dejar los 4 subformularios con cuatro líneas de entrada, una por trimestre...

Ufff, creo que estoy un poco espeso explicándome. Lo siento.
De todas formas de una manera u otra creo que sabré afrontarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cuadros combinados

Publicado por Enrique Heliodoro (1663 intervenciones) el 11/06/2016 00:43:59
No se que problema puede haber con los trimestres .... Access en base a un dato de fecha, puede obtener cualquier parte 'standard' de ella (y los trimestres lo son, dejando aparte 'lo que viene de fabrica' si tenemos una fecha y de ella tomamos el mes ¿no eres capaz de obtener el trimestre? ...

Con lo que 'viene de fabrica' (la función FORMAT):

Trimestre = Format(Una_fecha_Access ,"q")
o así (en la ventana de inmediato):
?format (date,"q")
2

?format (date,"\t\r\i\m\e\s\t\r\e q")
trimestre 2

Alternativa, la 'formula mágica':

Month(aquí_una_fecha_Access) \ 4 + 1
?month(date)\4 +1
2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cuadros combinados

Publicado por Miguel (51 intervenciones) el 11/06/2016 01:47:14
Pues no lo había pensado Enrique.
Lo que es tener la mente clara...
Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar