Hola, buenos dias.
Tengo una duda, y me gustaria pedir de su valiosa colaboracion.
Veran, tengo una macro en Excel 2013 en la cual tengo un formulario de login y posterior a esto, cuando dan click en el boton aceptar envio una cadena de coneccion a la DB para ejecutar tres consultas SQL que inserto en tablas #TMP, el punto es que siempre que lo ejecuto me devuelve el siguiente error:
Código:
La operacion de multiples pasos OLE DB genero errores... Compruebe los valores de estado OLD DB si es posible...
Me gustaria compartirles mi codigo para que vean como esta constituido.
Este bloque es mi codigo VBA:
Código:
CSet = "SET NOCOUNT ON; "
CSelect1 = "SELECT r.invoice_id, col.part_id, rl.reference, rl.amount, co.user_1 INTO #Sql_Maquilado "
CFrom1 = "FROM cust_order_line col, customer_order co, receivable r, receivable_line rl "
CWhere1 = "WHERE r.invoice_id = rl.invoice_id AND col.cust_order_id = rl.cust_order_id AND co.id = col.cust_order_id "
CAnx1 = "AND r.customer_id='sv-texpor' AND r.invoice_date between '" & CFechaI & "' AND '" & CFechaF & "' AND r.status = 'a' AND rl.reference like 'SERV%' "
CSelect3 = "Select F.Invoice_Date, F.Invoice_Id, F.Customer_Id, F.Purchase_Order, "
CConsulta3 = "F.Part_Id, F.Reference, F.Qty, F.Amount, isnull(M.amount,0) as Maquilado, SUM(F.amount + IsNull(M.amount, 0)) As Costo_Total "
CFrom3 = "From #Facturacion F Left Join (Select invoice_id, part_id, reference, amount, user_1 From #Sql_Maquilado) M On F.Invoice_Id = M.Invoice_Id "
CAnx3 = "And F.Part_Id = M.Part_Id And F.Purchase_Order = M.User_1 "
CGroup3 = "Group By F.Invoice_Date, F.Invoice_Id, F.Customer_Id, F.Purchase_Order , F.Part_Id, F.Reference, F.Qty, F.amount, M.amount "
Call Ejecutar((Servidor), (Base), (Usuario), (Pass), (CSet & CSelect1 & CFrom1 & CWhere1 & CAnx1 & CSelect3 & CConsulta3 & CFrom3 & CAnx3 & CGroup3), "Hoja2")
Este codigo es la coneccion a la DB.
Código:
Function Ejecutar(ServidorV As String, BaseV As String, UsuarioV As String, PassV As String, Sql As String, Hoja As String)
On Error GoTo ErrorHandler
Dim cn As Object
' crea un objeto Connection
Set cn = CreateObject("ADODB.Connection")
' IMPORTANTE: Indicar la cadena de conexión a usar
Servidor = ServidorV
Base = BaseV
Usuario = UsuarioV
Pass = PassV
Conexion = "Provider=SQLOLEDB.1;" & _
"Password=" & Pass & ";" & _
"Persist Security Info=True;" & _
"User ID=" & Usuario & ";" & _
"Initial Catalog=" & Base & ";" & _
"Data Source=" & Servidor
'"MultipleActiveResultSets=True;" & _
cn.ConnectionString = Conexion
' verifica que los parámetros no estén vacios
If Sql <> vbNullString And Hoja <> vbNullString Then
' variable para al rec de ado
Dim rst As Object
' abre la conexión a la base de datos
cn.Open
' crea un nuevo objeto recordset
Set rst = CreateObject("ADODB.Recordset")
' Ejecuta el sql para llenar el recordset
rst.Open Sql, cn, 1, 3
' variables para los indices de las filas y columnas
C = 0
F = 0
' recorre las columnas, añade el nombre del campo al encabezado
For i = 0 To rst.Fields.Count - 1
Sheets(2).Range(Chr(i + 65) & F + 1).Value = rst.Fields(i).Name
Next
F = F + 1
' recorre todo el recordset hasta el final
Do While Not rst.EOF
' recorre los campos en el registro actual del recordset para recuperar el dato
For i = 0 To rst.Fields.Count - 1
' añade el valor a la celda
Sheets(2).Range(Chr(C + 65) & _
F + 1).Value = rst.Fields(C)
C = C + 1
Next
' resetea el indice de las columnas
C = 0
' Referencia al registro actual (incrementa )
F = F + 1
' Siguiente registro
rst.MoveNext
Loop
' cierra y descarga las referencias
On Error Resume Next
rst.Close
cn.Close
Set cn = Nothing
Set rst = Nothing
End If
Call Macro1
Exit Function
ErrorHandler:
MsgBox "Ha ocurrido un error: " & Err.Description, vbExclamation, "Error..."
End Function
Sera que me podrian dar una guia de que estare haciendo mal

Ahora, si me preguntan por que estoy haciendo esto de las #TMP... El problema es que las base de datos no las administro yo, y no tengo acceso a realizar SP para la DB sino que unicamente puedo consultar, como un mortal cualquiera
Desde ya gracias por su ayuda.