none
Ayuda con Base de Datos Access y SQL

    Question

  • Buenas tardes estoy intentando diseñar un sistema que extrae informacion de una Base de SQL Server el cual se encuentra en un servidor (Valga la redundancia) y almacenar dichos datos en una base de datos de access.

    Las consultas que ejecuto están almacenadas todas en la base de datos access y luego intento ejecutarlas con VB (estoy trabajando con Visual Basic 2010 .net)

    Dejo aca mas o menos como esta el codigo


    Private Sub EjecutarConsulta(ByVal NombreConsulta As String)

            Dim cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\baseaccess.mdb")
            Dim Conexion As String = "server=MiServer;uid=miusuario;password=mipass;database=mibase"
            Dim MiConexion As New SqlConnection(Conexion)

            cnn.Open()
            MiConexion.Open()

             'Me conecto a la base 

            Dim cmd As OleDb.OleDbCommand       

            'Establezo cual es la consulta a ejecutar 

            cmd = New OleDb.OleDbCommand(NombreConsulta, cnn)
            'Avisamos que vamos a ejecutar una "Consulta" 
         

             cmd.CommandType = CommandType.StoredProcedure
            'Cargo los valores de los campos 
         

            'Ejecuto el comando 
            cmd.ExecuteNonQuery()   'en esta linea me da un error de ODBC (ODBC: error al conectar con 'nombre de la conexión ODBC que uso para conectarme a la base en SQL Server'.)

            cnn.Close()
            MiConexion.Close()

            'cierro la conexión

       End Sub

    Alguien me puede orientar un poco por favor como puedo resolver este pequeño inconveniente?

    Wednesday, January 16, 2013 9:06 PM

Answers

  • "Sebas0066" escribió:

    > estoy intentando diseñar un sistema que extrae informacion de una
    > Base de SQL Server el cual se encuentra en un servidor
    > (Valga la redundancia) y almacenar dichos datos en una base de
    > datos de access.
    >
    > Las consultas que ejecuto están almacenadas todas en la base de
    > datos access y luego intento ejecutarlas con VB (estoy
    > trabajando con Visual Basic 2010 .net)
    >
    >  cmd.ExecuteNonQuery()   'en esta linea me da un error de ODBC
    > (ODBC: error al conectar con 'nombre de la conexión ODBC que uso
    > para conectarme a la base en SQL Server'.)

    Hola:

    Esas consultas que dices que tienes almacenadas en la base de datos de Access, ¿se conectan al servidor de SQL Server mediante ODBC? Si la respuesta es afirmativa, ¿cómo has creado esas consultas? ¿Con el diseñador de consultas de Microsoft Access? Si es así, digo yo que le habrás tenido que especificar una cuenta de usuario y contraseña válidas en el servidor de SQL Server para que Access te permita crear la consulta, porque si no ha sido así, no sé yo en estos momentos cómo has podido crear dichas consultas almacenadas. ¿?

    Si vas a utilizar la propia seguridad de Microsoft SQL Server para conectarte con el servidor, a la sintaxis de la consulta almacenada le tienes que especificar la cuenta y contraseña del usuario:

    INSERT INTO [NombreTablaAccess]
    SELECT * FROM [NombreTablaSQLServer]
    IN '' [ODBC;Driver={SQL Server Native Client 11.0};
    Server=(local);Database=BaseDatosSQLServer;UID=Cuenta_Usuario;PWD=Contraseña];

    ¿Que no deseas especificar cuenta de usuario y contraseña? Entonces tendrás que utilizar la seguridad integrada de Windows NT:

    INSERT INTO [NombreTablaAccess]
    SELECT * FROM [NombreTablaSQLServer]
    IN '' [ODBC;Driver={SQL Server Native Client 11.0};
    Server=(local);Database=BaseDatosSQLServer;Trusted_Connection=Yes];

    Te comento que el driver ODBC indicado en los ejemplos, es el driver ODBC de SQL Server 2012. Deberás de especificar el driver que tengas instalado en tu equipo. Asimismo te indico que la conexión se efectúa a la instancia (local) de SQL Server.

    Ni que decir tiene que si guardas la información del usuario en las consultas almacenadas en tu base de datos de Access, cualquier usuario que abra la base de datos va a acceder a dicha información, por lo que estarías abriendo un agujero de seguridad de "tres pares de narices", salvo que el archivo lo tengas protegido mediante una contraseña, o bien se encuentre protegido mediante la información de un archivo de grupos de trabajo (el famoso archivo con extensión *.mdw). Tanto si está protegido de una manera u otra, en la cadena de conexión con la base de datos de Access le tienes que espeficiar los parámetros correctos.

    Si la base de datos de Access no tiene ningún tipo de seguridad, mejor será que utilices la seguridad integrada de Windows NT para conectarte con el servidor de SQL Server, de ésta manera se verificará si el usuario que actualmente ha iniciado sesión en Windows (el usuario que supuestamente está ejecutando tu aplicación de Visual Basic .NET), tiene acceso o no al servidor de SQL Server, así como a la base de datos y tablas correspondientes.

    Y para ejecutar esa consulta de datos añadidos (INSERT INTO) desde tu propia aplicación de Visual Basic . NET, no es necesario que también abras una conexión con el servidor de SQL Server, porque todos los datos de la conexión ya figuran en la propia consulta almacenada en la base de datos de Access, de ahí que le tengas que especificar qué tipo de seguridad vas a utilizar, porque si no lo haces, es normal que te aparezan errores de ODBC.

    Modifica tu procedimiento EjecutarConsulta por el siguiente:

    Imports System.Data.OleDb
    
        Private Function EjecutarConsulta(ByVal NombreConsulta As String) As Integer
    
            Try
                ' Establecemos la conexión con la base de datos de Access
                Using cnn As New OleDbConnection( _
                    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\baseaccess.mdb")
    
                    ' Creamos el comando
                    Dim cmd As OleDbCommand = cnn.CreateCommand()
    
                    ' Indicamos la consulta almacenada que vamos a ejecutar
                    cmd.CommandText = NombreConsulta
    
                    ' Indicamos que se trata de un procedimiento almacenado
                    cmd.CommandType = CommandType.StoredProcedure
    
                    ' Abrimos la conexión
                    cnn.Open()
    
                    ' Ejecutamos la consulta
                    Return cmd.ExecuteNonQuery()
    
                End Using
    
            Catch
                ' Devolvemos el error al procedimiento llamador
                Throw
    
            End Try
    
        End Function

    Fíjate que ahora se trata de una función, la cual nos devolverá el número de registros afectados.

    Cuando desees ejecutar la consulta, llamarías a la función así:

            Try
                Dim n As Integer = EjecutarConsulta("NombreConsulta")
    
                MessageBox.Show("Nº de registros afectados: " & CStr(n))
    
            Catch ex As Exception
                ' Se ha producido un error
                MessageBox.Show(ex.Message)
    
            End Try

    Insisto que en la consulta almacenada en la base de datos de Access le tienes que pasar la información de conexión ODBC correcta para que se pueda conectar al servidor de SQL Server.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.





    Sunday, January 20, 2013 9:43 AM
    Moderator

All replies

  • 'en esta linea me da un error de ODBC (ODBC: error al conectar con 'nombre de la conexión ODBC que uso para conectarme a la base en SQL Server'.)

    has validaod que junto al .exe que esta en la carpeta \bin\Debug este el archivo baseaccess.mdb ? porque recuerda que al usar datadirectory la db debe estar junto al .exe

    si al ejecutar desde el VS no se sopio alli entonces es que no encuantra el archivo de la db

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Wednesday, January 16, 2013 9:13 PM
  • si, he comprobado eso y si esta en la carpeta debug, incluso e probado ejecutar otro tipo de consulta en la que solo toca bases locales de access y funciona bien y no da error. He notado que el error da cuando ejecuto una consulta que extrae de la base vinculada en access es decir cuando saca la informacion de la base del Servidor SQL, no asi si ejecuto una consulta que solo extraiga de una tabla que este en la base de datos de access de forma local.

    Muchas gracias por tu pronta respuesta.


    • Edited by Sebas0066 Wednesday, January 16, 2013 9:28 PM
    Wednesday, January 16, 2013 9:27 PM
  • "Sebas0066" escribió:

    > estoy intentando diseñar un sistema que extrae informacion de una
    > Base de SQL Server el cual se encuentra en un servidor
    > (Valga la redundancia) y almacenar dichos datos en una base de
    > datos de access.
    >
    > Las consultas que ejecuto están almacenadas todas en la base de
    > datos access y luego intento ejecutarlas con VB (estoy
    > trabajando con Visual Basic 2010 .net)
    >
    >  cmd.ExecuteNonQuery()   'en esta linea me da un error de ODBC
    > (ODBC: error al conectar con 'nombre de la conexión ODBC que uso
    > para conectarme a la base en SQL Server'.)

    Hola:

    Esas consultas que dices que tienes almacenadas en la base de datos de Access, ¿se conectan al servidor de SQL Server mediante ODBC? Si la respuesta es afirmativa, ¿cómo has creado esas consultas? ¿Con el diseñador de consultas de Microsoft Access? Si es así, digo yo que le habrás tenido que especificar una cuenta de usuario y contraseña válidas en el servidor de SQL Server para que Access te permita crear la consulta, porque si no ha sido así, no sé yo en estos momentos cómo has podido crear dichas consultas almacenadas. ¿?

    Si vas a utilizar la propia seguridad de Microsoft SQL Server para conectarte con el servidor, a la sintaxis de la consulta almacenada le tienes que especificar la cuenta y contraseña del usuario:

    INSERT INTO [NombreTablaAccess]
    SELECT * FROM [NombreTablaSQLServer]
    IN '' [ODBC;Driver={SQL Server Native Client 11.0};
    Server=(local);Database=BaseDatosSQLServer;UID=Cuenta_Usuario;PWD=Contraseña];

    ¿Que no deseas especificar cuenta de usuario y contraseña? Entonces tendrás que utilizar la seguridad integrada de Windows NT:

    INSERT INTO [NombreTablaAccess]
    SELECT * FROM [NombreTablaSQLServer]
    IN '' [ODBC;Driver={SQL Server Native Client 11.0};
    Server=(local);Database=BaseDatosSQLServer;Trusted_Connection=Yes];

    Te comento que el driver ODBC indicado en los ejemplos, es el driver ODBC de SQL Server 2012. Deberás de especificar el driver que tengas instalado en tu equipo. Asimismo te indico que la conexión se efectúa a la instancia (local) de SQL Server.

    Ni que decir tiene que si guardas la información del usuario en las consultas almacenadas en tu base de datos de Access, cualquier usuario que abra la base de datos va a acceder a dicha información, por lo que estarías abriendo un agujero de seguridad de "tres pares de narices", salvo que el archivo lo tengas protegido mediante una contraseña, o bien se encuentre protegido mediante la información de un archivo de grupos de trabajo (el famoso archivo con extensión *.mdw). Tanto si está protegido de una manera u otra, en la cadena de conexión con la base de datos de Access le tienes que espeficiar los parámetros correctos.

    Si la base de datos de Access no tiene ningún tipo de seguridad, mejor será que utilices la seguridad integrada de Windows NT para conectarte con el servidor de SQL Server, de ésta manera se verificará si el usuario que actualmente ha iniciado sesión en Windows (el usuario que supuestamente está ejecutando tu aplicación de Visual Basic .NET), tiene acceso o no al servidor de SQL Server, así como a la base de datos y tablas correspondientes.

    Y para ejecutar esa consulta de datos añadidos (INSERT INTO) desde tu propia aplicación de Visual Basic . NET, no es necesario que también abras una conexión con el servidor de SQL Server, porque todos los datos de la conexión ya figuran en la propia consulta almacenada en la base de datos de Access, de ahí que le tengas que especificar qué tipo de seguridad vas a utilizar, porque si no lo haces, es normal que te aparezan errores de ODBC.

    Modifica tu procedimiento EjecutarConsulta por el siguiente:

    Imports System.Data.OleDb
    
        Private Function EjecutarConsulta(ByVal NombreConsulta As String) As Integer
    
            Try
                ' Establecemos la conexión con la base de datos de Access
                Using cnn As New OleDbConnection( _
                    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\baseaccess.mdb")
    
                    ' Creamos el comando
                    Dim cmd As OleDbCommand = cnn.CreateCommand()
    
                    ' Indicamos la consulta almacenada que vamos a ejecutar
                    cmd.CommandText = NombreConsulta
    
                    ' Indicamos que se trata de un procedimiento almacenado
                    cmd.CommandType = CommandType.StoredProcedure
    
                    ' Abrimos la conexión
                    cnn.Open()
    
                    ' Ejecutamos la consulta
                    Return cmd.ExecuteNonQuery()
    
                End Using
    
            Catch
                ' Devolvemos el error al procedimiento llamador
                Throw
    
            End Try
    
        End Function

    Fíjate que ahora se trata de una función, la cual nos devolverá el número de registros afectados.

    Cuando desees ejecutar la consulta, llamarías a la función así:

            Try
                Dim n As Integer = EjecutarConsulta("NombreConsulta")
    
                MessageBox.Show("Nº de registros afectados: " & CStr(n))
    
            Catch ex As Exception
                ' Se ha producido un error
                MessageBox.Show(ex.Message)
    
            End Try

    Insisto que en la consulta almacenada en la base de datos de Access le tienes que pasar la información de conexión ODBC correcta para que se pueda conectar al servidor de SQL Server.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.





    Sunday, January 20, 2013 9:43 AM
    Moderator
  • pero si a sql server no te conectas por medio de ODBC como puede dar un error

    cuando creas el cmd para ejecutar usaste

    cmd = New OleDb.OleDbCommand(NombreConsulta, cnn)

    y cnn es del tipo

    Dim cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\baseaccess.mdb")

    en concreto te conectas con Access, como puede esta el error indicando que el ODBC es de Sql Server si para esta db usaste otro objeto, o sea

    Dim MiConexion As New SqlConnection(Conexion)

    estas seguro que es un error de ODBC lo que recibes, podrias poner una imagen del error, para poder ver su mensaje real

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Sunday, January 20, 2013 11:34 AM
  • "Leandro Tuttini" preguntó:

    > en concreto te conectas con Access, como puede esta el error
    > indicando que el ODBC es de Sql Server si para esta db usaste
    > otro objeto, ...

    Por si lo ignoras, te comento que para conectarse a SQL Server con el motor de datos Microsoft Jet o Microsoft ACE, hay que hacerlo a través del driver ODBC de Microsoft SQL Server, y como ya le he indicado en mi respuesta, NO ES NECESARIO que también efectúe UNA CONEXIÓN A SQL SERVER, porque los datos de la conexión con el servidor de SQL Server, DEBEN IR EN LA PROPIA CONSULTA SQL QUE DESEA EJECUTAR mediante el motor Microsoft Jet.

    ¿Que no nos gusta el motor Microsoft Jet o Microsoft ACE? Me parece estupendo, pero en ese caso tendríamos que crear un servidor vinculado en la instancia de SQL Server que vayamos a utilizar, o hacer uso de las funciones OPENROWSET u OPENDATASOURCE del lenguaje Transact-SQL. En estos casos, el motor que ejecutaría todo sería el de SQL Server, pero tanto en el servidor vinculado como en las funciones comentadas, tendríamos que especificar una cadena de conexión OleDb adecuada para que SQL Server se pueda conectar con la base de datos de Access.

    ¿Que tampoco nos gusta esto último? Entonces no nos va a quedar más remedio que rellenar un objeto DataTable con los datos de la tabla de SQL Server, y pasárselo al método Update de un objeto OleDbDataAdapter debidamente configurado con la base de datos de Access donde se desean insertar los datos.


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    Sunday, January 20, 2013 12:22 PM
    Moderator
  • pero en el codigo no usa ningun jet para conectarse a sql server, sino que define una conexion bien clara cuando hace

    Dim Conexion As String = "server=MiServer;uid=miusuario;password=mipass;database=mibase"
    Dim MiConexion As New SqlConnection(Conexion)

    eso es lo que estaba marcando, salvo que este realizando una importacion y en la propia query defina la conexion a sql server, pero eso no lo sabria decir porque no ha puesto el sql que ejecuta

    es mas porque lo haria si define un SqlConnection?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Sunday, January 20, 2013 12:26 PM
  • "Leandro Tuttini" escribió:

    > pero en el codigo no usa ningun jet para conectarse a sql server,
    > sino que define una conexion bien clara cuando hace

    En el código utiliza el motor Jet para EJECUTAR UN PROCEDIMIENTO O CONSULTA ALMACENADA en la base de datos de Access, ya que deja bien claro lo siguiente:

    > Las consultas que ejecuto están almacenadas todas en la base de
    > datos access y luego intento ejecutarlas con VB (estoy
    > trabajando con Visual Basic 2010 .net)

    Si después obtiene un error ODBC al ejecutar la consulta mediante el método ExecuteNonQuery del objeto OleDbCommand declarado (cmd, en el ejemplo), no me queda más que pensar que los parámetros para conectarse con SQL Server están especificados en esas consultas almacenadas que dice que tiene almacenadas en la base de datos de Access.

    Y para ejecutar esas consultas almacenadas desde su aplicación de Visual Basic .NET, para nada le sirve abrir también una conexión con el servidor de SQL Server, por tanto, el objeto SqlConnection sobra, tal y como así se lo he hecho saber en mi primera respuesta.

     


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    Sunday, January 20, 2013 12:48 PM
    Moderator
  • Para Enrique M. Montejo:

    Mucha teoría en tu explicación, y te lo digo con todo respeto, me parece que  no visualizaste el código completo en la pregunta del usuario.

    Para Sebas.

    Estoy casi seguro que el error se debe ha que  estas instanciando el Objteo SqlConnection para conectarse a Access

    Agrega o reemplaza  esta lineas a tu código.

    Dim Conexion As String = "server=MiServer;uid=miusuario;password=mipass;database=mibase"
    Dim MiConexion As New OledbConnection(Conexion)

    Saludos desde Perú.


    Luis Muñoz Hidalgo
    Mi Blog
    Desarrollador de Software
    Trujillo-Perú



    Sunday, January 20, 2013 12:52 PM
  • "Luis F. Muñoz Hidalgo" escribió:

    > Para Enrique M. Montejo:
    >
    > Mucha teoría en tu explicación, y me parece que  no visualizaste
    > el codigo completo en la pregunta del usuario.

    ¡Uy! ¿Te molesta que yo explique las cosas como se deben de explicar? Si te molesta, lo único que te puedo decir es que no leas mis respuestas. Aparte, entiendo que la respuesta no es para tí, es para el usuario que ha efectuado la pregunta. ¿Que no te gusta? Pues lo siento por tí.

    > Estoy casi seguro que el error se debe ha que  estas instanciando
    > el Objteo SqlConnection para conectarse a Access

    Y tú ¿has "visualizado" el código completo que ha publicado el usuario?


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    Sunday, January 20, 2013 1:02 PM
    Moderator
  • Para Enrique M. Montejo:

    Para nada compañero no me molesta, la respuesta te la hize con todo respeto pues me pareció que tu respuesta no se ajustaba a el problema que menciona el usuario.

    Claro que he visualizado el código completo que ha publicado el usuario, y por eso justamente el problema es que esta instanciado el objeto SqlConnection para conectarse a Access.

    Es por eso que te dije que tu respuesta no se ajustaba a la pregunta del usuario.

    No lo tomes a mal, es mas soy seguidor de tu blog y respeto tus conocimientos y como MVP. Pero creo que tu explicación no se ajustaba a la problemática del usuario, y me pareció que no viste el código que posteo, pido disculpas sinceras si interpretaste mal lo que quise decir.

    Saludos.



    Luis Muñoz Hidalgo
    Mi Blog
    Desarrollador de Software
    Trujillo-Perú


    Sunday, January 20, 2013 1:11 PM
  • "Luis F. Muñoz Hidalgo" escribió:

    > Claro que he visualizado el código completo que ha publicado el
    > usuario, y por eso justamente el problema es que esta
    > instanciado el objeto SqlConnection para conectarse a Access.

    No voy a poner en duda que el código lo has visualizado completo, pero ¿lo has entendido? Yo creo que no.

    La respuesta que yo le he ofrecido al usuario se basa en lo siguiente:

    >  'Ejecuto el comando
    >  cmd.ExecuteNonQuery()   'en esta linea me da un error de ODBC
    > (ODBC: error al conectar con 'nombre de la conexión ODBC que uso
    > para conectarme a la base en SQL Server'.)

    Si te fijas bien, la variable 'cmd' está definida del tipo OleDbCommand:

      Dim cmd As OleDb.OleDbCommand      

    Y con ese comando desea ejecutar las consultas que dice tiene almacenadas en la base de Access.

    Con el objeto SqlConnection lo único que hace es abrir una conexión con el servidor llamado 'MiServer', pero NO EJECUTA NADA, porque el comando es del tipo OleDbCommand, no es del tipo SqlCommand.

    Y el error ODBC que dice que obtiene al ejecutar la consulta almacenada existente en la base de Access, la experiencia me dice que está intentando conectarse al servidor de SQL Server vía ODBC, porque lo que el usuario pretende es pasar datos de SQL Server a Access, y normalmente esas importaciones/exportaciones se hacen a través del driver ODBC de SQL Server, donde la información de conexión con dicho servidor debe de ir en la misma consulta SQL que desea ejecutar, de ahí que en los ejemplos que aparecen en mi primera respuesta, le haya indicado cómo se establece la conexión.

    > ... me pareció que tu respuesta no se ajustaba a el problema
    > que menciona el usuario.

    Esa es tu opinión personal, la cual no la comparto, porque creo haber entendido bien el problema, y repito que mi respuesta se ajusta al siguiente comentario:

    >  'Ejecuto el comando
    >  cmd.ExecuteNonQuery()   'en esta linea me da un error de ODBC
    > (ODBC: error al conectar con 'nombre de la conexión ODBC que uso
    > para conectarme a la base en SQL Server'.)

    De todas maneras vamos a dejar que se pronuncie al respecto el usuario Sebas0066, y posteriormente hacemos los comentarios que se tengan que hacer.

    Por supuesto, yo también me suelo equivocar, y desgraciamente me ocurre muchas veces, porque también soy humano.


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    Sunday, January 20, 2013 1:54 PM
    Moderator
  • No voy a poner en duda que el código lo has visualizado completo, pero ¿lo has entendido? Yo creo que no.

    Pues te comento que si lo he entenmdido ala perfección, es mas no tiene nada del otro mundo.

    Dejemos que el Usuario Sebas se pronuncie.


    Luis Muñoz Hidalgo
    Mi Blog
    Desarrollador de Software
    Trujillo-Perú

    Sunday, January 20, 2013 2:17 PM
  • Buenas tardes y perdón por ausentarme tanto tiempo, estuve de vacaciones.

    Muchas gracias por sus respuestas y en efecto estoy ejecutando consultas que estan almacenadas en access. Es decir en la base de datos de access he creado la conexión a travez del Driver ODBC y he creado ademas las consultas, por lo que estoy diseñando un sistema que desde VB 2010 .net se las pueda ejecutar. He de decir que Enrique tiene razon me faltaba ingresar los datos de acceso en las consultas de access de esa forma las consultas se pudieron ejecutar sin ningún problema.

    El hecho de que agregara la linea de comando "Dim Conexion As String = "server=MiServer;uid=miusuario;password=mipass;database=mibase"
            Dim MiConexion As New SqlConnection(Conexion)"   fue por que supuse que el inconveniente era los datos de acceso al servidor SQL por esto pensé que ingresando estos datos al código fuente del sistema funcionaria, pero no fue así. 

    Muchas gracias a ambos en especial a Enrique y perdón por la demora en responder.

    Thursday, February 07, 2013 7:57 PM