none
Convertir datos en consulta MS Query en VBA de Excel RRS feed

  • Pregunta

  • Hola

    Estoy tratando de realizar la siguiente consulta a través de VB en Excel:

     With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
            "ODBC;DRIVER=SQL Server;SERVER=xxx;UID=xxx;Trusted_Connection=Yes;APP=Microsoft Office 2010;WSID=xxx;DATABASE" _
            ), Array("=CONSULTA")), Destination:=Cells(Fila + 1, Columna + 7)).QueryTable
            .CommandText = Array( _
            "SELECT BASE.ALTURA_MORA, Sum(BASE.EDI) AS 'SALDO'" & Chr(13) & "" & Chr(10) & _
            "FROM COSECHAS_CONSULTA.dbo.COSECHA_201501 CSH, CONSULTA.dbo.REFERENCIA_201501 BASE" & Chr(13) & "" & Chr(10) & _
            "WHERE BASE.CUENTA = CSH.C_NUM_CUENTA AND ((CSH.C_SITUACION NOT IN (3)))" & Chr(13) & "" & Chr(10) & _
            "GROUP BY BASE.ALTURA_MORA" & Chr(13) & "" & Chr(10) & _
            "ORDER BY BASE.ALTURA_MORA")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "Tabla_Consulta_desde_Saldo_por_mora_CC_" & Fecha
            .Refresh BackgroundQuery:=False
        End With

    Sin embargo, me sale un error de que no coinciden los tipos, pues BASE.CUENTA es texto y CSH.C_NUM_CUENTA es numérico.

    En las consultas de MS SQL Server Management Studio mi solución es colocar WHERE BASE.CUENTA  = CAST(CSH.C_NUM_CUENTA as VARCHAR), mi pregunta es si existe una función similar que pueda utilizar en MS QUERY, pues si coloco

     Array("=CONSULTA")), Destination:=Cells(Fila + 1, Columna + 7)).QueryTable
            .CommandText = Array( _
            "SELECT BASE.ALTURA_MORA, Sum(BASE.EDI) AS 'SALDO'" & Chr(13) & "" & Chr(10) & _
            "FROM COSECHAS_CONSULTA.dbo.COSECHA_201501 CSH, CONSULTA.dbo.REFERENCIA_201501 BASE" & Chr(13) & "" & Chr(10) & _
            "WHERE BASE.CUENTA = CAST(CSH.C_NUM_CUENTA as VARCHAR) AND ((CSH.C_SITUACION NOT IN (3)))" & Chr(13) & "" & Chr(10) & _
            "GROUP BY BASE.ALTURA_MORA" & Chr(13) & "" & Chr(10) & _
            "ORDER BY BASE.ALTURA_MORA")

    me sigue apareciendo el error.

    Muchas gracias.

    martes, 17 de febrero de 2015 14:32