Access - Cláusula where 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

Cláusula where en consulta de unión

Publicado por Pablo (328 intervenciones) el 20/10/2022 18:54:05
Hola a todos:
Estoy haciendo una consulta de unión que acaba con
where producto_muestra_v=forms!listado_muestras!Cuadro_combinado12.value;->funciona
si le añado
and fecha_muestreo>=#forms!listado_muestras!muestreo_desde#
me dice que hay error de sintaxis, probé con
and fecha_muestreo>=#format(forms!listado_muestras!muestreo_desde,"mm/dd/yy")#
y me sigue diciendo que hay error de sintaxis
No se donde está el error, alguien podría echarme una mano
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

Cláusula where en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 21/10/2022 04:33:13
Habría que saber la procedencia de 'forms!listado_muestras!muestreo_desde', si es un valor fecha o un cuadro de texto que recoge una fecha.

Si es un cuadro de texto, lo adecuado es convertir el texto a fecha Access con 'CDate', si además se la convierte a número con 'Doublé' se puede prescindir de Format para convertir la fecha al formato americano.

En el peor de los escenarios (que sea un texto que representa a una fecha):

1
And fecha_muestreo>= CDbl(CDate(Forms!listado_muestras!muestreo_desde))

Con CDate se convierte la fecha (un texto con el formato de fecha local) a fecha Access (que ya tendrá el mejor formato) y si además se utiliza CDbl se convierte la fecha a número (los números no tienen problemas con los idiomas) y Access lo aceptará sin quejarse (más bien lo agradecerá, las fechas internamente son números).
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

Cláusula where en consulta de unión

Publicado por Pablo (328 intervenciones) el 21/10/2022 17:32:43
Hola Anónimo
Pues sí y no.
Tal y como lo tenía yo ni siquiera abría el informe, poniendo CDbl(CDate(Forms!listado_muestras!muestreo_desde)) abre el informe pero presenta mal los datos, no hace caso de la fecha desde, presenta registros anteriores. El cuadro de texto muestreo_desde tiene formato fecha corta. Se me está ocurriendo, otra vez que había tenido problemas con las fechas me habían recomendado que las pasara al formato mm/dd/yy, puede ser eso?
Aprovechado este hilo hago otra pregunta
Abro el informe con docmd.openreport...,,,,openargs=opcion_orden que elijo en el formulario,y en su evento al abrir según un select case opcion_orden elijo un orden, por ejemplo: case 1 Me.order by PVP asc
Cómo puedo concatenar dos campos para ordenar: ejemplo Fecha y PVP, probé a poner "Fecha" + "PVP" y me pregunta el valor de FechaPVP, o sea que así no es, con & tanpoco, cómo se hace?
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

Cláusula where en consulta de unión

Publicado por Anonimo (3316 intervenciones) el 22/10/2022 02:45:19
La función CDate utiliza la configuración regional para convertir los textos que representan a una fecha (en el formato local) en una fecha en formato adecuado para Access (el formato americano).

Si el texto (que representa una fecha) se le asigna a un cuadro de texto cuyo origen de datos es un campo de tipo fecha/hora (origen= tabla/consulta) el proceso de conversión es automática.

Los pasos son:
Se parte de un texto (un cuadro de texto independiente) se deberá utilizar la funcion CDate o delimitarlo con el marcador de fechas (#) y se convierte en 'una fecha Access'.

Se parte de un campo de tipo Date (no permitirá fechas incorrectas: 30 de febrero) el dato es una fecha Access

Cualquiera de ellas (la convertida con CDate o la que proviene de un campo de tipo fecha) al convertirla a número (con la funcion CDbl) deberá devolver el mismo resultado, si no es el mismo ... algo no se está haciendo de forma correcta.

En VBA, las fechas en formato americano, pero una fecha (en Access) se guarda como un numero (aunque Access la muestre en formato texto).
La capa de abstracción del idioma hace conversiones automáticas de comandos, fechas ... así permite su uso en Japón, América, Europa, Rusia o China ... y el dato es el mismo = un número.
Si se convierten las fechas a número se evitan los posibles errores de conversión y el resultado es más fiel.

Unos ejemplos en la ventana de inmediato para apreciar cómo interpreta Access las fechas en VBA:

1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function Xperiodo()
'A 22 de octubre del 2022, se utiliza una fecha diez dias inferior a DATE para poder rotar el mes y el dia
Dim Fecha_1 As Date, Fecha_2 As Date, Fecha_3 As Date, Fecha_4 As Date, Fecha_5 As Date, Fecha_6 As Date
Fecha_1 = (Date - 10) 'ES
Fecha_2 = CDate("12/10/2022") 'ES
Fecha_3 = #12/10/2022# 'ES
Fecha_4 = #10/12/2022# ' US
Fecha_5 = CDate("10/12/2022") 'US
Fecha_6 = Format((Date - 10), "mm/dd/yyyy") ' ¿US?
Debug.Print "Fecha_1: ES", "Fecha_2: ES", "Fecha_3: ES", "Fecha_4: US", "Fecha_5: US", "Fecha_6: ¿US?"
Debug.Print Fecha_1, Fecha_2, Fecha_3, Fecha_4, Fecha_5, Fecha_6
Debug.Print CDbl(Fecha_1), CDbl(Fecha_2), CDbl(Fecha_3), CDbl(Fecha_4), CDbl(Fecha_5), CDbl(Fecha_6)
End Function

Los resultados:
Fecha_1: ES Fecha_2: ES Fecha_3: ES Fecha_4: US Fecha_5: US Fecha_6: ¿US?
12/10/2022 12/10/2022 10/12/2022 12/10/2022 10/12/2022 10/12/2022
44846 44846 44905 44846 44905 44905

Sobre el orden:

Igual que aplica en una consulta, valores separados con comas (en VBA), fuera de VBA -en España- se utiliza la coma como separador decimal y en su lugar el 'separador de listas' es el punto y coma, el punto pasa de separador decimal a separador de miles.

1
case 1 Me.order by Fecha, PVP asc
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

Cláusula where en consulta de unión

Publicado por Pablo (328 intervenciones) el 22/10/2022 10:18:09
Hola
Acabo de leer la contestación, más claro el agua.
Con CDbl no hay que preocuparse del formato
Los order separarlos por coma
Por la tarde lo probaré
Un saludo y 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

Cláusula where en consulta de unión

Publicado por Pablo (328 intervenciones) el 24/10/2022 13:00:40
Hola
Ahora mismo tengo
Private Sub Report_Open(Cancel As Integer)
Me.Caption = Space(84) & "P R E C I O S D E U N P R O D U C T O"
Me.OrderBy = ""
Select Case Forms!listado_muestras!opcion_orden
Case 1
Me.OrderBy = "PVP"
Case 2
Me.OrderBy = "100*PVP/UDADES"
Case 3
Me.OrderBy = "FECHA"
End Select
Me.OrderByOn = True
End Sub
Y así funciona

Pongo
Case 1
Me.OrderBy = FECHA , PVP asc->Se esperaba fin de instrucción
Me.Order By = FECHA, PVP->No se ha definido la variable
Probé con nombre de los campos entre comillas y tampoco funciona
Se me acaba de ocurrir, no será cuestión de agrupar por fechas ?
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

Cláusula where en consulta de unión

Publicado por Pablo (328 intervenciones) el 24/10/2022 13:17:47
Acabo de probar
Me.OrderBy="FECHA,PVP" y sí funciona
Se me ocurrió poner un cuadro de texto(txt29) en el informe que me diga qué orden tiene, puse en el evento al abrir Me.txo29=forms!..., me dice que no se puede asignar valor a este objeto, en qué evento tendría que ponerlo.
Por la tarde veré lo de CDbl para no preocuparme del formato.
Un saludo y 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

Cláusula where en consulta de unión

Publicado por Pablo (328 intervenciones) el 24/10/2022 17:23:22
Hola
Lo del Txt29 en vez de en evento open lo puse en el load y va bien
Cdbl lo puse tanto en el campo a comparar como en el dato de comparación y también funciona
Gracias
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