Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Multiplicar un dato de un Form por uno de una tabla en ACCESS

Estas en el tema de Multiplicar un dato de un Form por uno de una tabla en ACCESS en el foro de Bases de Datos General en Foros del Web. Holaa todos. Por favor alguien puede echarme un cable con esto? Necesito que un formulario me rellene un campo con un dato del propio formulario ...
  #1 (permalink)  
Antiguo 16/02/2010, 04:04
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Multiplicar un dato de un Form por uno de una tabla en ACCESS

Holaa todos.

Por favor alguien puede echarme un cable con esto?

Necesito que un formulario me rellene un campo con un dato del propio formulario y otro de una tabla multiplicándolos. ¿Pueden ayudarme?

He puesto:



Código:
Private Sub num_klm_AfterUpdate()
Me.kilometraje = Me.num_klm * "SELECT euros_km FROM sala_maquinas WHERE id=1;"
End Sub
Pero no lo ejecuta, me da error.

Por favor que alguien me diga que está mal? estoy algo perdido.

Gracias.!
  #2 (permalink)  
Antiguo 16/02/2010, 07:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Intenta esto

Código vb:
Ver original
  1. Dim rs As New ADODB.Recordset
  2. Sql = "SELECT euros_km FROM sala_maquinas WHERE id=1;"
  3. rs.Open Sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  4.  
  5. Me.kilometraje = Me.num_klm * rs!euros_km

Quim
  #3 (permalink)  
Antiguo 16/02/2010, 13:08
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Muchas gracias por tu respuesta.

No me funciona.


Código:
Private Sub num_klm_AfterUpdate()
Dim rs As New ADODB.Recordset
SQL = "SELECT euros_km FROM sala_maquinas WHERE id=1;"
rs.Open SQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Me.kilometraje = Me.num_klm * rs!euros_km
End Sub
Me da error de compilación. "No se ha definido el tipo definido por el usuario"

Alguna idea?
Gracias.
  #4 (permalink)  
Antiguo 17/02/2010, 02:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Código vb:
Ver original
  1. Private Sub num_klm_AfterUpdate()
  2. Dim rs As New ADODB.Recordset
  3. Dim Sql as String
  4. Sql = "SELECT euros_km FROM sala_maquinas WHERE id=1;"
  5. rs.Open Sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  6. Me.kilometraje = Me.num_klm * rs!euros_km
  7. End Sub

No te da más pistas.... eso debe funcionar.... puede que te falten referéncias a ADO...

Incluso podrias hacer depender el calculo del registro si el id lo tienes en un campo...

Código vb:
Ver original
  1. Private Sub num_klm_AfterUpdate()
  2. Dim rs As New ADODB.Recordset
  3. Dim Sql as String
  4. Sql = "SELECT euros_km FROM sala_maquinas WHERE id=" & me.id & ";"
  5. rs.Open Sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  6. Me.kilometraje = Me.num_klm * rs!euros_km
  7. End Sub

Claro que estamos suponiendo que "sala_maquinas" tiene como mínimo el registro buscado.

Quim
  #5 (permalink)  
Antiguo 17/02/2010, 03:14
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Me sigue dando el mismo error y me remarca la línea 2.

Código:
Private Sub num_klm_AfterUpdate()
Dim rs As New ADODB.Recordset
Dim Sql as String
Sql = "SELECT euros_km FROM sala_maquinas WHERE id=1;"
rs.Open Sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Me.kilometraje = Me.num_klm * rs!euros_km
End Sub
Lo que me remarca es "rs As New ADODB.Recordset"

Alguna idea?
Gracias.
  #6 (permalink)  
Antiguo 17/02/2010, 03:14
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Tambien puedes usar dlookup:

Me.kilometraje = Me.num_klm * nz(dlookup("euros_km","sala_maquinas","id=1"),0)

Con la idea de quimfv, pero con dao, tienes que activar la refrencia microsoft dao X.XX object library. La tienes (con la ventana del editor de VBA abierta) en Herramientas >> Referencias

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT euros_km FROM sala_maquinas WHERE id=1")

Me.kilometraje = Me.num_klm * rs!euros_km

rs.Close
Set rs = Nothing

Un saludo
  #7 (permalink)  
Antiguo 17/02/2010, 05:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

El error que te da lo da porque no tienes activadas las referencias a ADO.

Tanto la referéncia a ADO como a DAO tienen que estar activadas para una u otra solucion. Se activan igual.

Quim
  #8 (permalink)  
Antiguo 22/02/2010, 03:22
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Muchísimas gracias a ambos.

Finalmente era eso, he activado las referencias y ahora ya me funciona.
Gracias

Ahora tengo otra cuestión. A ver si me podeis echar una mano también.

Necesito rellenar otro campo del formulario pero tengo que introducir una condición. Si el campo "pernocta" está activado, me multiplicará por un número y si no, por otro.
He puesto esto, pero evidentemente no sale nada:
Código:
Private Sub btn_rellenar_Click()
If Me.Pernocta = SI Then Me.beneficio = Me.horas_curso * 17.75
If Me.Pernocta = No Then Me.beneficio = Me.horas_curso * 14.50
End Sub
Puede alguien indicarme cómo puedo hacerlo??

Gracias.
  #9 (permalink)  
Antiguo 22/02/2010, 03:35
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Pernocta, beneficio y Horas_Curso son campos que forman parte del origen de registro del formulairo?? En caso afirmativo, toods tienen su respectivo control (cuadro d etexto) en el form con el mismo nombre??? Si esto es asi, deberia funcionar:

If me.pernocta=true then
me.beneficio=nz(me.horas_curso,0)*17.74
else
me.beneficio=nz(me.horas_curso,0)*14.50
end if

Un saludo
  #10 (permalink)  
Antiguo 22/02/2010, 05:21
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

A ver... sale pero no.

A ver los campos Pernocta, beneficio y horas_curso estan en la tabla "gastos" y en el "subformulario gastos" que está dentro del formulario "cursos". He puesto en un botón rellenar (dentro del subformulario):
Código:
Private Sub btn_rellenar_Click()
If Me.Pernocta = True Then
Me.beneficio = Nz(Me.horas_curso, 0) * 17.74
Else
Me.beneficio = Nz(Me.horas_curso, 0) * 14.5
End If

End Sub
De manera que si pruebo directamente en el "Subformulario_gastos" funciona a la perfección. Pero si lo pruebo en el formulario gastos (Que es dónde realmente debe funcionar) no es capaz de mostrar el subformulario dentro del formulario. Y me muestra el mensaje de error:
Cita:
Esta expresión no está escrita correctamente o es muy compleja para evaluarse. Por ejemplo, una expresión numérica puede contener muchos elementos complicados. Intente simplificar la expresión asignando a variables partes de la misma.
Alguna idea?
Gracias.
  #11 (permalink)  
Antiguo 24/02/2010, 03:06
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Nadie sabe por qué me da este error?

Debe haber algo mal escrito ya que no creo que la expresión sea muy compleja, pero no doy con lo que es.

Ayuda please!

Gracias.
  #12 (permalink)  
Antiguo 24/02/2010, 05:52
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Hola de nuevo, he descubierto algo por si le sirve de ayuda a alguien para resolverlo.

Si coloco cualquiera de los dos códigos por separado no da problemas.
Si pongo en el form:
Código:
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT euros_km FROM sala_maquinas WHERE id=1")

Me.kilometraje = Me.num_klm * rs!euros_km

rs.Close
Set rs = Nothing
Me rellena el campo kilometraje sin problemas.
Si pongo:
Código:
If Me.Pernocta = True Then
Me.beneficio = Nz(Me.horas_curso, 0) * 17.74
Else
Me.beneficio = Nz(Me.horas_curso, 0) * 14.5
End If
Me hace el if perfectamente rellanando el campo beneficio.

Pero si pongo ambos códigos (da igual el orden e incluso da igual si lo pongo cada uno como envento de un boton distinto) me saca el mensaje de antes, no muestra ningún dato del subform y además no hay posibilidad de vuelta atrás aunque borre todo el código. La solución es tirar la aplic, y coger una copia de seguridad que hecha antes de introducir el código.

Pueden ayudarme?
Gracias.
  #13 (permalink)  
Antiguo 24/02/2010, 05:54
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Multiplicar un dato de un Form por uno de una tabla en ACCESS

Intenta compilar la aplicacion antes de ejecutarla, seguramente descubra algun error que tengas que solucionar

un saludo

Etiquetas: access, dato, multiplicar, tablas, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:46.