Access - Valores en campos de formulario según otra tabla i

 
Vista:

Valores en campos de formulario según otra tabla i

Publicado por Gema (29 intervenciones) el 17/03/2008 22:12:04
Buenas noches: Plis, necesito orientación y ayuda con lo siguiente:

Tengo un form principal (gastos viajantes):
CodNombre
Año
Mes
IdHoja = CodNombre + Año + Mes
Subformulario Linea gastos
IdHoja
Tipo Gasto (hotel, Avión, tren…)
NºKm

Hasta la fecha todo iba bien, ya que en el formprincipal tengo creado un campo que multiplicaban el TOTAL Nº de Km por un valor fijo (0,19) para obtener los € que cobrara el “viajante” por el nº de Km realizados.

Pero ahora, por unos motivos, un viajante puede cobrar el Km a un importe diferente a otro viajante, por lo que como lo tenía hasta ahora ya no vale. Esto me ha hecho darme cuenta de que cuando en un momento determinado, en un año en concreto se suba el precio del km tampoco sería correcto el planteamiento que tengo ahora mismo.

He creado una tabla a la cual le llamo AÑO con los siguientes campos:

Año, KmG1 KmG2
2008 0,19 0,22
2007 0,17 0,20

Con esto pretendo que en la Form principal,
SI Año= 2008 y CodNombre(ViajanteGrupo1) entonces TOTAL€KM : NºKm * 0,19
SI Año= 2007 y CodNombre(ViajanteGrupo2) entonces TOTAL€KM : NºKm * 0,20

Es aquí donde no se como hacer correctamente la función que realice esta operación correctamente.
Espero haberme explicado ya que intento ser lo mas breve posible.
Gracias por la atención y felices días.
Gema.
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

RE:Valores en campos de formulario según otra tabl

Publicado por Pepe (766 intervenciones) el 18/03/2008 08:27:38
Hola Gema

Te cuento como lo hago yo para otras cosas.

Prepara un formulario basado en la tabla AÑO, cuyo criterio de busqueda sea el año del formulario principal y el viajante que hayas seleccionado en el formulario principal. (llamamosle "precio KM")

En el evento de despues de actualizar del campo donde introduces el nº de km, haces que se abra en modo oculto el formulario "Precio km"

Establece el valor del campo total, con el poroducto del nº de km por el precio del km del formulario oculto y luego cierra el formulario "Precio km"

Suerte, Pepe
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

RE:Valores en campos de formulario según otra tabl

Publicado por Gema (29 intervenciones) el 18/03/2008 15:29:11
Gracias Pepe, sigo intentándolo…

He creado un Sub en el principal con la tabla que mencionaba antes: (relacionada por el año)
Ejemplo:
ForEjercicio
Año, KmG1 KmG2
2008 0,19 0,22

Tengo también un campo en el que sumo el total de NºKm llamado: KmHoja del Sub_Lineagastos.
Si en su origen de control le indico:
=(Nz([KmHoja]))*ForEjercicio.Formulario!KmG1
Todo es correcto y multiplica el nº de km por el precio que indico en KmG1.

Pero otro problema es que según sea un viajante u otro el km se paga de una u otra manera. Entonces en vez de la formula anterior, he intentado hacer lo siguiente:
En el Campo KmHoja, en el evento después de actualizar he indicado:

Private Sub KmHoja_AfterUpdate()
If ComboConsultor.TipoKm = 2 Then
Tot€kmHoja = TLineaGastosSubformulario.Formulario!Texto12 * ForEjercicio.Formulario!KmCE
ElseIf ComboConsultor.TipoKm = 0 Then
Tot€kmHoja = 0
Else
Tot€kmHoja = TLineaGastosSubformulario.Formulario!Texto12 * FormEjercicio.Formulario!Km
End If
End Sub

Pero no hace nada. No da error pero tampoco muestra ningún dato. Cualquier consejo, ayuda o sugerencia ¿?
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

RE:Valores en campos de formulario según otra tabl

Publicado por Pepe (766 intervenciones) el 18/03/2008 15:54:52
Gema, lo primero decirte que yo no tengo conocimientos de código. Pero de todas maneras te mando a tu correo un pequeño ejemplo de como lo puedes hacer, seguro que cuando lo veas sabras adaptarlo a tu BD.

Pepe
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

Gracias

Publicado por Gema (29 intervenciones) el 18/03/2008 15:59:43
Muchas Gracias. Lo espero ansiosa.
Ya te comentaré como ha ido.
Gracias. Un saludo. Gema
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

RE:Valores en campos de formulario según otra tabl

Publicado por Enrique (1299 intervenciones) el 18/03/2008 16:16:50
Pepe, no se cual será tu solución, pero como dices que no sabes hacerlo con código, por si a alguien le interesa, podría ser así:

Suponiendo que Año en la Tabla sea un Campo de tipo Texto, se puede hacer al Actualizar el Campo Año en el Formulario: Si fuera Numérico habría que quitarle las comillas dobles a ambos lados de Año:

Private Sub Año_AfterUpdate()
If Me.Año = "2008" And Me.CodNombre = "ViajanteGrupo1" Then
Me.TOTAL€KM = DLookup("KmG1", "AÑO", "Año="2008")
ElseIf Me.Año = "2008" And Me.CodNombre = "ViajanteGrupo2" Then
Me.TOTAL€KM = DLookup("KmG2", "AÑO", "Año="2008")
ElseIf Me.Año = "2007" And Me.CodNombre = "ViajanteGrupo1" Then
Me.TOTAL€KM = DLookup("KmG1", "AÑO", "Año="2007")
ElseIf Me.Año = "2007" And Me.CodNombre = "ViajanteGrupo2" Then
Me.TOTAL€KM = DLookup("KmG2", "AÑO", "Año="2007")
End If
End Sub

Me.Año es el nombre del campo en el Formulario. AÑO (en mayúsculas enmedio
de la función DLookup) es la Tabla AÑO y Año (al final de la función Dlookup)
es el nombre del campo en la Tabla AÑO. Según el Año y el ViajanteGrupo que
tenga el Registro, el campo TOTAL€KM toma el valor que le corresponde.

Un saludo y espero no haber sido inoportuno en este caso.

Saludos
Enrique
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

RE:Valores en campos de formulario según otra tabl

Publicado por Pepe (766 intervenciones) el 18/03/2008 16:54:35
Enrique, para nada eres inoportuno.

Saludos, Pepe
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