Generar la Cadena Original de un XML (CFDI) en VB6/VBA

Para crear la Cadena Original de un XML usando la XSLT proporcionada por el SAT en VBA debes hacer lo siguiente:

  1. Agregar a las referencias: «Microsoft XML, v3.0» (o 6.0)
  2. Usar el siguiente código:

 

Function getCadenaOriginal()
    Dim oXSlT As New DOMDocument
    Dim xXML As New DOMDocument
    Dim sCadenaOriginal As String
    oXSlT.Load "D:\proyectos\cadenaoriginal_3_2.xslt"
    xXML.Load "D:\Proyectos\util\F.xml"
    sCadenaOriginal = xXML.transformNode(oXSlT)
    Debug.Print sCadenaOriginal
End Function

Esto te devolverá la cadena original generada a partir de un XML.

getCadenaOriginal

Recuerda que debes tener un XML ya timbrado, y el archivo «cadenaoriginal_3_2.xslt» que lo puedes descargar desde el SAT.

Dar formato a una Consulta SQL desde VBA

Cuando escribes una consulta SQL desde VBA, todo se escribe desde una línea y ahí insertas algunos parámetros para tu consulta SQL, pero si por alguna razón esa consulta SQL diera error y quisieras revisarla, al imprimirla en la consola (ventana inmediato) sería más difícil encontrar el error, puesto que la consulta SQL no está formateada. La solución más optima es copiar la consulta y pegarla en una Vista SQL y revisarla allí, pero esto se complica si trabajas con una versión de SQL Server mayor a tu versión de Access. Así que, aquí una función para formatear una Consulta SQL desde VBA.

String Between en VBA

Función para que VBA que retorna el contenido entre dos coincidencias. En otros lenguajes se conoce como StrBetween, o StringBetween.

 

Function Between(sCadena As String, Coincidencia1 As String, Coincidencia2 As String) As String
    'Devuelve una cadena que se encuentra entre dos coincidencias
    'En otros lenguajes es conocina como: StringBetween
    Dim PosC1, PosC2, nLetras As Integer
    
    PosC1 = InStr(1, sCadena, Coincidencia1)
    If PosC1 > 0 Then
        PosC1 = PosC1 + Len(Coincidencia1)
    Else
        GoTo NOCoincide
    End If
    
    PosC2 = InStr(PosC1, sCadena, Coincidencia2)
    If PosC2 <= 0 Then
        GoTo NOCoincide
    End If
    
    nLetras = PosC2 - PosC1
    
    Between = Mid(sCadena, PosC1, nLetras)
    
    Exit Function
NOCoincide:
    Between = ""
End Function

Function Between_Test()
  debug.print Between("Mi nombre es: [Ruperto Coronado]","[","]")
  'Imprime:
  'Ruperto Coronado
End Function

 

Solución: Esta versión de backend no admite el diseño de tablas o diagramas de base de datos.

Microsoft SQL Server Management Studio puede llegar a dar el error:

«Esta versión de backend no admite el diseño de tablas o diagramas de base de datos. (MS Visual Database Tools)»

errorMSSMS

Lo cual no permite que hagas ningún tipo de modificación a tu base de datos.

Solución:

Ocurre porque la versión de Microsoft SQL Server Management Studio que tiene instalada es menor que la versión del SQL Server. Por ejemplo, puede que la versión del Management que tengas sea la 2012 y tu SQL Server sea 2014.

Para solucionarlo, descarga e instala la misma versión (o mayor) de Microsoft SQL Server Management Studio.

Puedes comprobar la versión del Management en el menú ayuda y luego «Acerca de». La versión del SQL Server la puede ver ejecutando el comando:

SELECT @@version