Access - Informe basado en consulta de unión

 
Vista:
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 05/03/2021 20:02:31
Hola a tod@s
Tengo una consulta de unión con la siguiente sql:
SELECT cuentas_balance.numero_cta_balance AS NºCTA_BALA, Len(LTrim([numero_cta_balance])) AS longcta, saldo FROM cuentas_balance
UNION select diario.subcuenta_diario, len(diario.subcuenta_diario), format(sum(diario.euros_diario),"Standard")
from diario
group by diario.subcuenta_diario;
La ejecuto y por pantalla sale
NºCTA_BALA longcta saldo
10 2
100001 6 244,49
100002 6 -144,49
100003 6 -2.345.678,00
100004 6 -100,00
100005 6 45,65
100006 6 -45,65
y más registros de la misma forma:nº de cuenta, longitud de la cuenta y su saldo
Cree un informe basado en esta consulta con los campos NºCTA_BALA y saldo, me pinta el dato de nºcta pero no el dato que hay en saldo, alguien puede decirme dónde está el fallo?
La columna saldo son números estandar, no deberían aparecer a la derecha?, aparecen pegados a al izquierda.

Gracias
Pablo
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 06/03/2021 22:42:07
SI se le da 'formato' a un numero se le convierte en texto (y los textos solo 'parecen' números), es por ello que el dato se alinea a la izquierda.

El formato se le aplica a los datos en el ultimo momento y en su destino final (la presentación: sea en informe o formulario)
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 06/03/2021 23:27:38
Hola Anónimo:
Al dar formato a un número se convierte en texto!!, si pongo format(datotexto, "Standar") sigue siendo texto?!?!
Y el problema de que no me pinte en el informe ese dato, sabes por qué puede ser?

Gracias
Pablo
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 06/03/2021 23:45:45
Hola otra vez
Acabo de ver otra respuesta tuya a un tema parecido, utilizas CDouble para hacer la conversión, estudiaré la función.
Buenas noches
Pablo
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 07/03/2021 10:57:15
La función FORMAT genera por defecto TEXTO por eso escribe un millón así: 1.000.000,00

Ese dato lo guarda en cuatro u ocho bytes (aunque el valor fuera un cero o negativo)

El mismo dato formateado (texto) ocupa 12 bytes (tiene doce caracteres) mas el indicador de que es un TEXTO (¿otros diez bytes?)

String
(longitud variable) 10 bytes + longitud de la cadena Desde 0 a 2.000 millones


En la ayuda de Access (F1) se puede consultar 'el resumen de tipo de datos' para optimizar el funcionamiento general y no cometer errores de bulto.

Que el formato sea uno de los predefinidos le da lo mismo que si lo escribes en redondilla itálica o negrita (es simple estética)

Por cierto: la conversión con CDouble la suelo aplicar con FECHAS para convertir 'un texto que representa a una fecha' en su valor numérico equivalente en Access (que las guarda como CDouble ) y solo a titulo de curiosidad:

.- la parte entera: el numero de días transcurrido (puedes dale formato de fecha al CERO para ver desde donde cuenta 'por consenso')
.- la parte decimal: (por eso se utiliza un Double) es la fracción del día trascurrido.

1
2
3
4
5
6
7
aaa= now
?aaa
07/03/2021 10:54:23
?cdbl(aaa)
 44262,4544328704
?format(aaa, "yyyy mmm dd hh mm ss")
2021 mar 07 10 54 23
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 07/03/2021 20:14:23
Hola Anónimo:
Ayer quedé extrañado de que yo usara un texto en vez de un número, hoy lo revisé, el campo euros_diario es un número simple de 2 decimales, en la consulta lo único que hago es poner Sum(euros_diario), no debería pasarlo a texto, no?

Pablo
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 08/03/2021 00:10:29
Solo un trozo del código que has posteado:

.... enta_diario), format(sum(diario.euros_diario),"Standard")

Si no logras verlo, no encontraras el camino a la solució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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 08/03/2021 18:53:24
Pues no lo logro
Probé a poner csng(sum(euros_diario)) y tampoco
Debo de estar muy espeso, podrías ayudarme.
Gracias

Pablo
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 08/03/2021 21:10:14
Las consultas de unión requieren que los conjuntos de datos sean homogéneos, en la SQL publicada no se cumple la condición.

Se están combinando tres campos:

Aceptado: cuentas_balance.numero_cta_balance AS NºCTA_BALA <==> diario.subcuenta_diario

Aceptado: Len(LTrim([numero_cta_balance])) AS longcta <==> len(diario.subcuenta_diario)
¿para que utiliza?, son de longitud fija (y suele utilizarse texto)

No aceptable: saldo <==> format(sum(diario.euros_diario),"Standard")

El campo SALDO se supone que es numérico, el campo EUROS_DIARIO al que se le aplica una suma, se supone que es numérico, su resultado también pero al darle FORMATO se le pasa a texto .... ya no son del mismo tipo y no se cumple la condición de homogeneidad

El formato no se asigna en las consultas, con la excepción de que se quiera modificar su tipo para poder combinarlo, es en el cuadro de texto que lo muestre en el informe donde se le aplica el formato (también el tamaño y el tipo de caracteres, el color ......)

Me surge una duda, el campo 'saldo' de la primera consulta .... ¿existe o es imaginario?
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 09/03/2021 19:26:01
Hola Anónimo
Gracias por la contestación
De la sql del informe saqué lo de format(sum(euros_diario)---, y dejé sólo: sum(euros_diario) as SALDO, desde esta ventana ejecuto la consulta y si me salen los saldos, en el informe no aparecen en el cuadro de texto SALDO, deberían aparecer?, o no
Gracias
Pablo

PD El campo SALDO del informe tiene formato estandar con 2 decimales
El 2º campo de la 'subconsulta' lo cambié por
dlookup("descripcion_subcuenta","subcuentas","numero_subcuenta='" & diario.subcuenta_diario & "'"), con lo que consigo que pinte los nombres de las subcuentas
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 09/03/2021 23:15:01
Si en la consulta se obtienen resultados y estos no se muestran en el informe, lo mas probable es que ese cuadro de texto (en el que se verían los datos) no tenga como origen de datos: el mismo campo que la consulta (verifica el nombre).

El resto .. depende de lo que necesites para el informe.
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 10/03/2021 18:05:11
Hola Anónimo
El informe lo hice a partir de un informe en blanco, en origen corté y pegué la sql de la consulta, añadí los campos que me proponía, el tercero era SALDO, el que sí aparece en la consulta pero no en el informe, por qué?, no lo se,
Alguna idea?
Gracias

Pablo

PD: Trabajo con access 2010
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 10/03/2021 21:32:55
No es cuestión de ideas.

Supongamos que es una receta de cocina.
Se puede seguir una receta y recibir (a distancia) las sugerencias de otro cocinero, pero ....

En la distancia no se puede catar lo que se ha cocinado y concluir si esta soso o salado, si el que da las sugerencias cocina la misma receta seguro que no tendrá el mismo problema.
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 11/03/2021 18:48:11
Son muchas vueltas a lo hecho.
Voy a empezar de 0 otra vez y a ver que pasa
Un saludo

Pablo
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 11/03/2021 20:31:56
Lo que quiero conseguir es un balance, se me ocurrió crear las tablas: cuentas_balance, diario y subcuentas
En cuentas_balance guardo el orden teórico de aparición de subcuentas, un campo es: numero_cta_balance
En diario guardo los movimientos de la subcuentas, euros_diario
En subcuentas guardo el número de subcuenta( de tipo texto) y su descripción
Hice una consulta con la siguiente sql: SELECT cuentas_balance.numero_cta_balance, cuentas_balance.descripcion_cta_balance, SALDO (campo inventado, sí es necesario el campo euros_diario de la 2ª tabla)
FROM cuentas_balance; el resultado de esta consulta es:
numero_cta_balance descripcion_cta_balance SALDO
10 CAPITAL
11 RESERVAS
20 INMOV. INTANGIBLE
204 FONDO DE COMERCIO
205 DCHOS DE TRASPASO
210 TERRENOS Y BN
213 MAQUINARIA
28 AA INMOVILIZADO
281 AA INMOV. MATERIAL
57 TESORERIA
570 CAJA
572 BANCOS
Una segungda consulta con sql
SELECT diario.subcuenta_diario, subcuentas.descripcion_subcuenta, Sum(diario.euros_diario) AS SumaDeeuros_diario
FROM diario INNER JOIN subcuentas ON diario.subcuenta_diario = subcuentas.numero_subcuenta
GROUP BY diario.subcuenta_diario, subcuentas.descripcion_subcuenta;->Resultado
subcuenta_diario descripcion_subcuenta SumaDeeuros_diario
100001 Capital Social 1 244,48999786377
100002 Capital Social 2 -144,48999786377
100003 Capital Social 3 -2345678
100004 1234567890123456789012345 -100
100005 prueba 45,6500015258789
100006 prueba 6gdadgdfg -45,6500015258789
205001 Dchos de traspaso 2345678
280501 A.A.Derechos de traspaso -14,8999996185303
572001 Banco 1 empresa 1 500
680001 Dot.Amort. I.Intangible 14,8999996185303
700001 Ingresos por naturaleza -500
Los numero están ajustados a la derecha aunque al copiar y pegar no lo parece.
Lo que quiero es obtener una mezcla de las 2 consultas. Si cojo sólo los campos nº de cuenta y SALDO-euros puedo agrupar por nº de cuenta y sum(euros)->Aquí es donde en el informe, cuando empezamos, no me aparecía SALDO
A lo mejor hay alguna forma de hacer esto mucho más rápido y simple, si alguien sabe como que me lo diga
Gracias
Pablo
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 11/03/2021 23:25:54
Para crear un campo 'fantasma' se necesitan dos elementos: un valor y un titulo

Si SALDO es el fantasma (y se le desea numérico) su definición debería ser así:
0 As Saldo ('cero' como valor y 'Saldo' como alias)

Espero que con esa modificación resuelvas el problema (si la suposición y antes sospecha son certeras)
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 12/03/2021 19:56:44
Lo conseguí!!!!!!
Acabo de ver el último mensaje de Anónimo, lo hice de otra forma, explico:
Comprobé que la 2ª consulta el campo Suma(euros_diario) era numérico, la uní con la 1ª y vi que el resultado cambiaba a texto. Lo que hice fue crear un campo en la 1ª de nombre SALDO numérido estandar con 2 decimales, volví a hacer la consulta de unión y sí conserva el formato como yo quiero.
Ahora probare lo de 0 as SALDO

Gracias
Pablo
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 12/03/2021 20:25:02
Acabo de probarlo, funciona
Supongo que es mejor crear el campo fantasma en la sql con 0 as SALDO que crearlo en la tabla, la única ventaja que tiene lo de crearlo en la tabla es que ya lo creo como estandar con 2 decimales, haciéndolo con 0 as SALDO tengo que formatear el campo del informe, pero no ocupo espacio con un campo en la tabla, es así?

Gracias otra vez
Pablo
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 12/03/2021 23:24:04
A un cero le puedes poner los decimales que quieras (el valor será el mismo)

Creo que no tienes claro para que sirve el formato y donde utilizarlo por eso el empeño en mezclar y complicar la programación.

Lo que ocupa un dato en una tabla lo pone en la ayuda (tecla F1), mi sugerencia es y ha sido siempre la misma: los lacitos y el adorno, siempre al final de todo el trasteo con los datos.
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 13/03/2021 17:08:12
En la tabla defino el campo euros_diario como numérico, simple, 2 decimales y formato estandar, lo de formato mejor no ponerlo por lo que dices, no?
Gracias
Pablo
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

Informe basado en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 13/03/2021 17:57:36
Insisto en que en la ayuda de Access (que es la mas fiel) indica que posibilidades tiene cada campo, lo de ponerle el numero de decimales ... solo es realista en un campo de tipo decimal (que es otro tipo de campo y para usos concretos).

Lo de indicar un decimal o dos, tres .... lo utilizara para presentar los datos, pero 'eso' se puede hacer en cada destino final (no siempre son precisos los decimales ni dos decimales son un numero mágico).

Para uso concreto de (por ejemplo) euros o asimilables esta el campo de tipo MONEDA que trabaja de forma interna con cuatro decimales y es bastante preciso en el redondeo (redondeo que cumple con los requisitos de la banca americana).

Lo que indico es tan sencillo como introducir un dato que cumpla el requisito de ser una periódica pura (Ejemplo: la unidad dividido entre tres) y verificar su contenido con y sin formato.

Ya has logrado tu objetivo que era tan simple como utilizar campos de tipo numérico para hacer operaciones aritméticas y de texto para ... lo que se necesite (siempre que no sean operaciones aritméticas).

Aplica esa regla y utiliza el campo que permita introducir el dato con la mayor fidelidad y ocupando lo que se necesite en el presente y el futuro.
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Informe basado en consulta de unión

Publicado por Pablo (328 intervenciones) el 13/03/2021 17:59:54
Hola otra vez
Ahora quiero pintar los datos que me da la consulta de unión en un informe
Al final del informe tengo 2 cuadros de texto, totalactivo y totalpasivo, en detalle_paint si saldo>0 totalactivo=totalactivo+saldo. En qué evento igualo los cuadros de texto a 0? para que acumulen el saldo?
No se si sería mejor abrir otro hilo con este tema.

Gracias
Pablo
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