Select con operaciones iner join

He diseñado esta consulta a través de la Vista SQL de Access

SELECT tb_factura.N_FACT AS [FACTURA DE VENTA], tb_facturar.cantidad AS [CANT VEND], tb_facturar.producto AS PRODUCTO, tb_facturar.UNI_MEDIDA AS [UNIDAD VEND], tb_productos.UNIDAD_MEDIDA_Min AS [UNI MED MIN], tb_productos.UNIDAD_MEDIDA_Med AS [UNI MED MED], tb_productos.UNIDAD_MEDIDA_Max AS [UNI MED MAX], tb_productos.CANTIDAD_INICIAL AS EXISTENTE, tb_productos.EQUIVALENTE_UNI_MED_MIN, tb_productos.EQUIVALENTE_UNI_MED_MED, tb_productos.EQUIVALENTE_UNI_MED_MAX
FROM tb_productos INNER JOIN (tb_factura INNER JOIN tb_facturar ON tb_factura.N_FACT = tb_facturar.N_FACT_ID) ON tb_productos.NOMBRE_PRODUCTO = tb_facturar.producto
WHERE (((tb_factura.N_FACT)=[Formularios]![frm_Factura_Anular]![N_FACT_ID]));

Ahora necesito convertirla a VBA para Access y asignarla como Valor a la Variable:

Dim SQLs As String

He usado este código pero se genera el error -2147217900 en tiempo de ejecución, y no consigo donde esta el error.

SQLs = "SELECT tb_factura.N_FACT AS [FACTURA DE VENTA]," _
& "tb_facturar.cantidad AS [CANT VEND], tb_facturar.producto AS PRODUCTO, tb_facturar.UNI_MEDIDA AS [UNIDAD VEND]," _
& "tb_productos.UNIDAD_MEDIDA_Min AS [UNI MED MIN], tb_productos.UNIDAD_MEDIDA_Med AS [UNI MED MED]," _
& "tb_productos.UNIDAD_MEDIDA_Max AS [UNI MED MAX], tb_productos.CANTIDAD_INICIAL AS EXISTENTE, tb_productos.EQUIVALENTE_UNI_MED_MIN," _
& "tb_productos.EQUIVALENTE_UNI_MED_MED, tb_productos.EQUIVALENTE_UNI_MED_MAX from tb_facturar,tb_factura, tb_productos" _
& "INNER JOIN tb_factura" _
& "INNER JOIN tb_facturar" _
& "ON tb_factura.N_FACT =" _
& "tb_facturar.N_FACT_ID" _
& "ON tb_productos.NOMBRE_PRODUCTO =" _
& "tb_facturar.producto" _
& "WHERE tb_factura.N_FACT = 'VMCC 00002';"

2 respuestas

Respuesta
2

De un primer vistazo, en todas las líneas que empiezan por & te falta poner un espacio a continuación de las primeras comillas dobles:

& " tb_facturar.....

Con eso solo ya te debiera funcionar

¡Gracias!

Hice lo que me dijiste pero aun me faltaban unos paréntesis.

Me ha quedado así, y funciona.

SQLs = "SELECT tb_factura.N_FACT AS [FACTURA DE VENTA], " _
& "tb_facturar.cantidad AS [CANT VEND], tb_facturar.producto AS PRODUCTO, tb_facturar.UNI_MEDIDA AS [UNIDAD VEND], " _
& "tb_productos.UNIDAD_MEDIDA_Min AS [UNI MED MIN], tb_productos.UNIDAD_MEDIDA_Med AS [UNI MED MED], " _
& "tb_productos.UNIDAD_MEDIDA_Max AS [UNI MED MAX], tb_productos.CANTIDAD_INICIAL AS EXISTENTE, tb_productos.EQUIVALENTE_UNI_MED_MIN, " _
& "tb_productos.EQUIVALENTE_UNI_MED_MED, tb_productos.EQUIVALENTE_UNI_MED_MAX from  tb_productos " _
& "INNER JOIN (tb_factura " _
& "INNER JOIN tb_facturar " _
& "ON tb_factura.N_FACT = " _
& "tb_facturar.N_FACT_ID) " _
& "ON tb_productos.NOMBRE_PRODUCTO = " _
& "tb_facturar.producto " _
& "WHERE (((tb_factura.N_FACT) = 'VMCC 00002'));"

Ya me funciono. Ahora me faltara convertirlo a una Instrucción Update ¡sera Muy Dificil?

En Realidad es primera vez que hago esto.

Respuesta
1

Ya tengo la Solución, Después de tanto Cacharrear, Resulto ser un Espacio en Blanco Faltante.

Os dejo Todo el Código Usado en este Modulo.

Option Compare Database
Option Explicit
Sub CONECTA_ACTUAL()
Dim ConectaGolden As New Connection 'Crear la Coneccion desde el objeto Connection
Dim RecordSetGolden As New Recordset 'Creacion del Objeto Recordset (Tabla Virtual)
Dim SQLs As String 'Variable Tipo Texto que Almacena la Consulta SQL
Set ConectaGolden = CurrentProject.Connection 'Establecemos la Conexion con la Base de Datos actual
'Este Tambien Funciona
SQLs = "SELECT tb_factura.N_FACT AS [FACTURA DE VENTA], tb_facturar.cantidad AS [CANT VEND], tb_facturar.producto AS PRODUCTO, tb_facturar.UNI_MEDIDA AS [UNIDAD VEND], tb_productos.UNIDAD_MEDIDA_Min AS [UNI MED MIN], tb_productos.UNIDAD_MEDIDA_Med AS [UNI MED MED], tb_productos.UNIDAD_MEDIDA_Max AS [UNI MED MAX], tb_productos.CANTIDAD_INICIAL AS EXISTENTE, tb_productos.EQUIVALENTE_UNI_MED_MIN, tb_productos.EQUIVALENTE_UNI_MED_MED, tb_productos.EQUIVALENTE_UNI_MED_MAX, tb_productos.NOMBRE_PRODUCTO " _
& "FROM tb_productos INNER JOIN (tb_factura INNER JOIN tb_facturar ON tb_factura.N_FACT = tb_facturar.N_FACT_ID) ON tb_productos.NOMBRE_PRODUCTO = tb_facturar.producto " _
& "WHERE (((tb_factura.N_FACT)= 'VMCC 00002'));"
'& "from tb_factura INNER JOIN (tb_facturar INNER JOIN tb_productos ON tb_facturar.producto=tb_productos.NOMBRE_PRODUCTO) ON tb_factura.N_FACT = tb_facturar.N_FACT_ID;"
RecordSetGolden. Open (SQLs), ConectaGolden 'Abrir el Recordset Utilizando la Conexion Activa e insertar la Informacion SQL
Do Until RecordSetGolden.EOF
    Debug.Print RecordSetGolden![FACTURA DE VENTA] & " " & RecordSetGolden![CANT VEND] & " " & RecordSetGolden!producto & " " & RecordSetGolden![UNIDAD VEND] & " " & RecordSetGolden![UNI MED MIN] & " " & RecordSetGolden![UNI MED MED] & " " & RecordSetGolden![UNI MED MAX] & " " & RecordSetGolden!NOMBRE_PRODUCTO
    RecordSetGolden.MoveNext
Loop
RecordSetGolden.Close 'Cierra el RecordSet
Set RecordSetGolden = Nothing 'Liberar Recursos Utilizados por el RecordSet
ConectaGolden.Close 'Cierra la Conexion
Set ConectaGolden = Nothing 'Liberar Recursos Utilizados por la Conexion
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas