Foros del Web » Programación para mayores de 30 ;) » Programación General »

VBA para conectar con base de datos MsSQL externa sin más

Estas en el tema de VBA para conectar con base de datos MsSQL externa sin más en el foro de Programación General en Foros del Web. Hola. La solución supongo que es más simple que el mecanismo de un chupete, pero en Google me salen mil millones de soluciones que no ...
  #1 (permalink)  
Antiguo 29/04/2015, 03:05
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Pregunta VBA para conectar con base de datos MsSQL externa sin más

Hola.

La solución supongo que es más simple que el mecanismo de un chupete, pero en Google me salen mil millones de soluciones que no tienen nada que ver con esto.
Lo que quiero es conectar con una base de datos MsSQL externa pero no lo consigo.
Os paso el código y a ver si alguien puede ayudarme.
Código:
Sub report_2()

    Dim Password As String
    Dim SQLStr As String
    'OMIT Dim Cn statement
    Dim Server_Name As String
    Dim User_ID As String
    Dim Database_Name As String
    'OMIT Dim rs statement

    Set rs = CreateObject("ADODB.Recordset") 
    Server_Name = "BATU-INTER-DB"
    Database_Name = "ClienteAlpha" ' Name of database
    User_ID = "alpharead" 'id user or username
    Password = "alpha4read!" 'Password

    SQLStr = "SELECT * From ClienteAlpha.dbo.toditodos tdd (nolock) WHERE tdd.toditodos_Data = 'Spain';"

    Set cn = CreateObject("ADODB.Connection") 'NEW STATEMENT
    cn.Open "Driver={MySQL ODBC 5.2.2 Driver};Server=" & _
            Server_Name & ";Database=" & Database_Name & _
            ";Uid=" & User_ID & ";Pwd=" & Password & ";"

    rs.Open SQLStr, cn, adOpenStatic

    Dim myArray()

    myArray = rs.GetRows()

    kolumner = UBound(myArray, 1)
    rader = UBound(myArray, 2)

    For k = 0 To kolumner ' Using For loop data are displayed
        Range("a5").Offset(0, k).Value = rs.Fields(k).Name
        For r = 0 To rader
           Range("A5").Offset(r + 1, k).Value = myArray(k, r)
        Next
    Next

    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing

End Sub
Muchas gracias :)
__________________
No es verdad que sea un completo inútil. Al menos sirvo para dar mal ejemplo
  #2 (permalink)  
Antiguo 13/05/2015, 17:09
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: VBA para conectar con base de datos MsSQL externa sin más

Es Sql Server o MySql? ya q tu cadena dice: "MySQL"

Si fuera Sql Server con .net la cadena tendria este aspecto en el web.config:
<connectionStrings>
<add name="GeneralConnectionTest" connectionString="Data Source=IPDETUSERVIDOR;Initial Catalog=TUDATABASE;User Id=USUARIO;Password=PWD;MultipleActiveResultSets=t rue"/>

<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\asp netdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
  #3 (permalink)  
Antiguo 13/05/2015, 23:30
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: VBA para conectar con base de datos MsSQL externa sin más

Muchas gracias por atender mi duda.

Lo que ocurre es que no estoy escribiendo ninguna aplicación sino usndo directamente una macro de Outlook.

Tienes razón, la base externa es Ms Sql Server

En ese caso, ¿cómo debería cambiar el código?
Código vb:
Ver original
  1. Set rs = CreateObject("ADODB.Recordset")
  2.     Server_Name = "BATU-INTER-DB"
  3.     Database_Name = "ClienteAlpha" ' Name of database
  4.    User_ID = "alpharead" 'id user or username
  5.    Password = "alpha4read!" 'Password
  6.  
  7.     SQLStr = "SELECT * From ClienteAlpha.dbo.toditodos tdd (nolock) WHERE tdd.toditodos_Data = 'Spain';"
  8.  
  9.     Set cn = CreateObject("ADODB.Connection") 'NEW STATEMENT
  10.    cn.Open "Driver={MySQL ODBC 5.2.2 Driver};Server=" & _
  11.             Server_Name & ";Database=" & Database_Name & _
  12.             ";Uid=" & User_ID & ";Pwd=" & Password & ";"
  13.  
  14.     rs.Open SQLStr, cn, adOpenStatic
Muchas gracias :)
__________________
No es verdad que sea un completo inútil. Al menos sirvo para dar mal ejemplo
  #4 (permalink)  
Antiguo 14/05/2015, 00:20
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: VBA para conectar con base de datos MsSQL externa sin más

Algo como esto (valido en Excel con VBA, pudiera funcionar tambien con outlook), Sql Server debe tener habilitada la posibilidad de Conexiones Remotas, de otra manera mandar error en la IP:

OleDbConnectionString = "Provider=SQLOLEDB.1;Data Source=" & Server _
& ";Initial Catalog=" & Database _
& ";User ID=" & UserName & ";Password=" & Password & ";"

Set cnn = CreateObject("ADODB.Connection")

cnn.Open OleDbConnectionString

Etiquetas: mssql, query, vba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:07.