Consultas que pierden el formato temporalmente

Perdona que te moleste otra vez, pero me ha surgido un problema que me descoloca demasiado.
Tengo una aplicación hecha en formularios Access, basada en formularios, y genera informes, consultas, etc. En algunas de las pantallas he metido algún cuadro de texto que muestran consultas suma utilizando el típico "=DSum [campo] [tabla] [criterios]".
Vale, pues todo funcionaba bien, hasta que me fijo en que si la aplicación está recién abierta a la consulta se le va la olla y aparece dividida por mil, aun cuando los datos en la tabla están perfectamente. A veces al revés, se multiplica por mil.
Y así hasta que entras y sales un par de veces, en ocasiones más, y ya las consultas aparecen bien. Me dice un usuario que le pasó lo mismo al ejecutar consultas (normales, desde el asistente), pero que eso, las cerraba, las volvía abrir y ya salían bien.
Los campos sumados son de tipo moneda. Espero que eso no sea problema, porque la tablas están vinculadas a una base de datos en SQL Server (espero que esto tampoco sea el problema) y con todos los triggers y procedimientos que he metido es difícil plantearse cambiar todos estos tipos de dato.
¿Has oído o visto algo parecido a lo que te cuento?

1 Respuesta

Respuesta
1
Alguna vez he oído algo así... lo que creo es que la Función Dsum son muy propias de Access...
Lo que te puedo sugerir es que tu te crees una función propia que la tienes que definir como publica en un modulo que más o menos seria así (en caso de que tengas problemas con definirla):
Public Function MiDsum(campo as string, tabla as string, optional criterios as string="") as double
dim Qry as string
Dim Rst as Recordset
Qry = "Select sum(" & campo & ") as Suma from " & tabla
if criterio <>"" then qry = qry & " where " & criterio
set rst = application.Currentdb. OpenRecordset(qry)
if Rst.recordcount<>0 then
  MiDsum= rst(0)
else
 MiDsum=0
end if
end function
... esto para DAO
Hola Jeddy.
En primer lugar muchas gracias por contestar, y por proponerme, incluso, el código de la función.
La verdad es que el tema se ve complicado por que ya probé hace un par de días lo hacerme mi propia función, y no cambió las cosas, e incluso a hacerme una consulta para hacerle un "DBusq" igual que se le hace a una tabla cualquiera, y sucede lo mismo. Eso hace que me crea lo que me dijo el usuario de que las consultas normales le fallaban igual que estos cuadros de los formularios.
La cosa es que en el PC del despacho no me ha fallado nada de esto ni una sola vez, así que voy a comparar las versiones (con actualizaciones, service packs, etc) de Access, SQL Server, Office y hasta Windows, por ver si en el de su oficina hay algo que gestione mal el formato moneda.
¿Te parece esto posible?
Muchas gracias. Saludos.
Lo más probable es el cliente de SQL Server o algún otro software que use SQL Server
Sin duda, usando determinadas versiones de Access y de SQL Server no se da este problema, que ya he visto que es eminente de formato, ya que el misterio "a veces divide las cifras por mil y otras los multiplica por 100" es porque en ciertos casos no interpreta bien los puntos y comas del valor del campo.
Ahora, que he descubierto esta mañana que el error se daba si y sólo si en cualquier otra pantalla abierta el sistema cargaba un registro de una tabla relacionada con todas las que contienen cantidades monetarias (incluidas las del conflicto que te digo) y a raíz de entonces provocaba conflictos con las otras tablas como en un efecto en cadena.
¿Por qué? Expediente POR, pero lo solucioné provocando que nunca se cargaran a la vez los registros de las tablas que, a saber si alguna vez sabré por qué, chocan. Por suerte ha sido posible sin quitar ninguna funcionalidad al programa.
Lamento haberte entretenido con algo que no ha dado fruto y tal vez provocado demasiado curiosidad con algo difícil de explicar, pero, de verdad, te agradezco mucho el esfuerzo realizado.
Saludos y que tengas un buen día.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas