Llevar consulta sql a vba para formulario

A ver quien puede ayudarme, es posible llevar esta consulta:

SELECT DISTINCT Entradas_DTL_Detalle.Documento, Entradas_DTL_Detalle.Fecha, Entradas_DTL_Detalle.Codigo_Producto, Entradas_DTL_Detalle.Descripcion_Producto, Format([Cantidad],"#,##0") AS Unidades, Entradas_DTL_Detalle.Tipo_Entrada
FROM Entradas_DTL_Detalle
GROUP BY Entradas_DTL_Detalle.Documento, Entradas_DTL_Detalle.Fecha, Entradas_DTL_Detalle.Codigo_Producto, Entradas_DTL_Detalle.Descripcion_Producto, Format([Cantidad],"#,##0"), Entradas_DTL_Detalle.Tipo_Entrada
HAVING (((Entradas_DTL_Detalle.Fecha) Between [Formularios]![Frm_Consultas]![txtFecha_Desde] And [Formularios]![Frm_Consultas]![txtFecha_Hasta]) AND ((Entradas_DTL_Detalle.Codigo_Producto)=[Formularios]![Frm_Consultas]![ccCriterio_Consulta]))
ORDER BY Entradas_DTL_Detalle.Fecha;

¿A formato ACCESS VBA?

2 Respuestas

Respuesta

Esa SQL tiene un formato muy similar al que se obtendría con una consulta creada con el generador grafico de consultas de Access, esta escrita en una sola línea (algo que ni le quita ni le añade funcionalidad).

Las referencias a 'txtFecha_Desde' y 'txtFecha_Hasta' pueden ser un problema al intentar interpretarlas como fechas.

Deberían tener formato americano (mm/dd/yyyy) y marcadores de que el texto representa a una fecha (#), con la única excepción de que (en su origen) sean datos de tipo fecha.

 Between [Formularios]![Frm_Consultas]![txtFecha_Desde] .... ==>>
 Between Cdbl(CDate( [Formularios]![Frm_Consultas]![txtFecha_Desde])) ...

En Access CDate convierte a un texto que representa una fecha en un dato de tipo fecha ('traduciendo' el formato regional) y para garantizar que Between recibe un numero se le aplica CDbl.

Respuesta

Este es un script, espero haya entendido su pregunta

  Dim strSQl As String
  strSQL = "SELECT DISTINCT Entradas_DTL_Detalle.Documento" & vbCrLf
  strSQL = strSQL & "           , Entradas_DTL_Detalle.Fecha" & vbCrLf
  strSQL = strSQL & "           , Entradas_DTL_Detalle.Codigo_Producto" & vbCrLf
  strSQL = strSQL & "           , Entradas_DTL_Detalle.Descripcion_Producto" & vbCrLf
  strSQL = strSQL & "           , Format([Cantidad],""#,##0"") AS Unidades" & vbCrLf
  strSQL = strSQL & "           , Entradas_DTL_Detalle.Tipo_Entrada" & vbCrLf
  strSQL = strSQL & "        FROM Entradas_DTL_Detalle" & vbCrLf
  strSQL = strSQL & "    GROUP BY Entradas_DTL_Detalle.Documento" & vbCrLf
  strSQL = strSQL & "           , Entradas_DTL_Detalle.Fecha" & vbCrLf
  strSQL = strSQL & "           , Entradas_DTL_Detalle.Codigo_Producto" & vbCrLf
  strSQL = strSQL & "           , Entradas_DTL_Detalle.Descripcion_Producto" & vbCrLf
  strSQL = strSQL & "           , Format([Cantidad],""#,##0"")" & vbCrLf
  strSQL = strSQL & "           , Entradas_DTL_Detalle.Tipo_Entrada" & vbCrLf
  strSQL = strSQL & "      HAVING (((Entradas_DTL_Detalle.Fecha) Between [Formularios]![Frm_Consultas]![txtFecha_Desde] " & vbCrLf
  strSQL = strSQL & "         AND [Formularios]![Frm_Consultas]![txtFecha_Hasta]) " & vbCrLf
  strSQL = strSQL & "         AND ((Entradas_DTL_Detalle.Codigo_Producto)=[Formularios]![Frm_Consultas]![ccCriterio_Consulta]))" & vbCrLf
  strSQL = strSQL & "    ORDER BY Entradas_DTL_Detalle.Fecha;"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas