Conectar a MySQL con Visual Basic (VB6) usando ODBC

Desde mis primeros desarrollos he conectado a VB con Access por la sencillez, pero en nuevos proyectos web, empecé a utilizar MySQL como servidor de base de datos, atacándolo con PHP, sobre todo por ser completamente software gratuito.

Pero aún sigo utilizando Visual Basic 6, para algún proyecto que necesita alguna gestión más “amigable” y prefiero utilizar la potencia y sencillez de vb, es por lo que tuve la necesidad de crear una conexión Visual Basic Vs MySQL.

En principio no es muy complejo, lo primero que debemos de hacer, es descargar un controlador ODBC que nos proporcionan gratuitamente desde la web de MySQL e instalarlo, al tiempo de este tutorial es  la descarga disponible es la versión 5.1.6.

Una vez instalados estos drivers, solo debemos utilizar la cadena de conexión en nuestro VB, pero voy a poneros la función completa para que solo tengais que copiar y pegar:

Dim CON As ADODB.Connection
Dim Comd As ADODB.Command
Dim Rs As ADODB.Recordset

Public Function Conectar_bd()

Set CON = New ADODB.Connection
Set comd = New ADODB.Command
Set Rs = New ADODB.Recordset

CON.CommandTimeout = 40
CON.CursorLocation = 1

CON.Open “DRIVER={MySQL ODBC 3.51 Driver};DATABASE=” & NomBd & “;SERVER=” & Servidor &     “;UID=” & Usuario & “;password=” & Pwd & “;PORT=3306;”

Set Comd.ActiveConnection = CON

End Function

En la función anterior, declaramos CON, que será la conexión de la base de datos, el Comd es la que ejecutará el comando, y Rs, el RecordSet, para la utilización de los registros, dependiendo del proyecto, podeis declararlas como publicas para todo el proyecto y reutilizarlas, o en la función que veais que se utilizará, yo suelo utilizarlas Public para usar por todo el proyecto, ya que son variables a reutilizar con la conexión y no han de variar.

Además tenemos 4 variables que no hemos declarado y que debereis declarar vosotros y darle el valor que corresponda, estas son:

  • NomBD: El nombre de la base de datos. (ej. Datos)
  • Servidor: El nombre o dirección Ip de nuestro servidor de MySQL. (ej. Localhost)
  • Usuario: El usuario para acceder a nuestra base de datos de MySQL. (ej. vertutoriales)
  • Pwd: La clave de acceso a nuestro servidor de MySQL. (ej. ######) :D

El puerto por defecto es el 3306, pero tambien podeis modificarlo si usais versiones anteriores, o simplemente teneis otro puerto abierto para el uso de la base de datos.

Ya para terminar os dejo el código que debeis utilizar una vez conectados con la base de datos de MySQL, para que solo tengais que modificarlo a vuestras necesidades:

‘Llamo a la función de conexión a la base de datos

Conectar_bd

‘Le digo la consulta a ejecutar al comando

comd.CommandText = “SELECT * FROM Usuarios”

Rs.CursorLocation = adUseClient

Rs.Open comd, , 1, 1

Y listo!,  con estas lineas de código ya tendríais la conexión y la forma de realizar consultas a vuestra base de datos MySQL atacando con Visual Basic 6. Ya solo quedaría utilizar el Rs de la manera normal.

Espero que os sea útil. Si teneis alguna duda podeis escribirme a tutor@dkreativo.es o dejar algún comentario!

Un saludo! :D

NOTA Reeditada

Para poder usar este código debeis de registrar un par de referencias:

Microsoft Data Objets 2.0 y Microsoft ActiveX Data Objets 2.8
Las versiones las dejo aproximadas, pero tened en cuenta que si la versión es más moderna que la que tiene el usuario instalada es posible que tengais que instalarla aparte. Así que os aconsejo que no instaleis las últimas, a mi la 2.8 me ha dado problemas con algún cliente, y he tenido que bajar actualizaciones desde la web de microsoft. Aunque tambien es verdad que el pc del cliente iba a carbón.

Te puede interesar:

94 Comments

  • chuy commented on 29 abril, 2010 Reply

    ” { ” me dice que caracter no valido

    • VideoTutoriales commented on 30 abril, 2010 Reply

      Revisa si al copiar y pegar las comillas están bien puestas, en principio el código está sacado de un script que está en producción, así que es funcional 100×100.

      Ya me comentas si te sigue dando problemas, si fuera así, exponlo y le damos solución.

      Un saludo!

  • señas commented on 27 mayo, 2010 Reply

    tengo el mismo error que chuy con la { me puedes ayudar?
    te lo agradeceria mucho.
    p.d muy buen aporte lo de la claculadora saludos. dejo mi correo por si las dudas ssjtantonio@hotmail.com

  • VideoTutoriales commented on 27 mayo, 2010 Reply

    El problema ha sido que los drivers del código son los 3.51 y los que descargais son los 5.1.6, solo debeis de actualizar a la versión que esteis utilizando.

    Quedaría:
    CON.Open “DRIVER={MySQL ODBC 5.1 Driver};DATABASE=” & NomBd & “;SERVER=” & Servidor & “;UID=” & Usuario & “;password=” & Pwd & “;PORT=3306;”

    O algo parecído, debeis de ver con que nombre se os guarda en el administrador de odbc.

    Un saludo!

  • Efrenk commented on 20 octubre, 2010 Reply

    Muchas gracias, la verdad que encontré muchos ejemplos en la red pero ninguno decía que había que descargar e instalar el conector. Estuve batallando hasta que encontré tu tutorial. Me has salvado el día.

    Saludos

    • VideoTutoriales commented on 20 octubre, 2010 Reply

      Nada :)

      Precisamente está puesto por que yo en su día tambien tuve que pelearme con lo mismo!

      Ya sabes si tienes alguna consulta que no pueda ser abordada en el blog, puedes acudir a http://www.forohtml5.com :)

      Un saludo!

  • Elton commented on 12 febrero, 2011 Reply

    Hola agradecido por todo lo qe indicas en estos tutoriales u orientación, quisiera saber si podriamos contactarnos por el MSN para otras cosas mas qe necesito de forma urgente, agradeceria bastante tu ayuda.

    • VideoTutoriales commented on 12 febrero, 2011 Reply

      Prefiero que las dudas las refieras aquí en el blog para que las respuestas les ayuden a otros como a tí.

      Un saludo!

  • fernando luna commented on 5 abril, 2011 Reply

    gracias buena aportacion esta mas explicado que anteriores gracias de ante mano

  • Roberto carlos commented on 6 abril, 2011 Reply

    tengo, alguna duda,

    primero al descargar el controlador odbc, lo instalo pero no se si hayque configurar algo,

    segundo, me tira elmismo error en {MySQL ODBC 5.1 Driver} el caracter no es valido,

    y por ultimo, analisando el codigo, veo que primero establecemos la coneccion, y luego la llamamos, pero no veo en ingun lugar, en donde visualisar los datos de la consulta,

    porfavor ayuda,,,

  • VideoTutoriales commented on 9 abril, 2011 Reply

    Con respecto al caracter no válido, revisa la comillas, posiblemente no estén abiertas y cerradas, te recomiendo que hagas una búsqueda y reemplaces por “.

    Por otro lado, tambien te invito a visitar otro tutorial relacionado con este, el cual da algunos pasos más que en este tutorial no quedó reflejado.

    http://www.vertutoriales.com/index.php/conectar-visual-basic-6-vb6-con-mysql-pasos-previos-de-configuracion-para-eludir-problemas-o-errores/

    Un saludo!

  • carlos saavedra commented on 14 abril, 2011 Reply

    hola a todos soi carlos y probe el código y me da un error en “DRIVER={MySQL ODBC 3.51 Driver}” en los parentecis de llave y tanbien aquí

    Private Sub Command2_Click()

    Dim CON As ADODB.Connection

    me dise que o esta definido por el usuario

    si alguien me podria ayudar le estaria agradecido :D

    • VideoTutoriales commented on 14 abril, 2011 Reply

      Para el tema del “DRIVER={MySQL ODBC 3.51 Driver}” copialó sin las comillas esas, es decir, pega esto:
      “DRIVER={MySQL ODBC 3.51 Driver}”

      Con respecto al error de que no está definido por el usuario, tendrás que crear un botón que se llame Command2 (en la propiedad del name)

      Un saludo!

  • carlos saavedra commented on 18 abril, 2011 Reply

    Muchas gracias Funciono :D

    • VideoTutoriales commented on 18 abril, 2011 Reply

      Me alegro :D un me gusta en lo de fans de fb? :D o twitteame :D

  • carlos saavedra commented on 18 abril, 2011 Reply

    Una pregunta sobre visual basic 6.0…… a
    sabes yo estoi haciendo la practica en el cesfam de tome y tengo que hacerles un programa que muestre los pacientes que se han echo em EMP y los que aun no lo terminan el cesfam maneja muchos datos en la base de datos del año 2007 hasta el de ahora 2011

    ahora viene la pregunta :D

    Me gustaria saber si visual puede buscar en todas las tablas de la base de datos y mostrar algunos datos en un combo box o list box (rut.nombre.fecha del examen, sexo, edad etc) de la persona indicada con el campo clave rut
    no se si me explico bien… en otras palabras al agregar el rut de una persona que el combo box o listbox muestre los datos requeridos

    me podrian facilitar un codigo para eso si esk se puede claro :D y disculpen las molestias y muchas gracias de antemano por todo :D

    y lo del face cuando llegue a la casa lo ago porque ahora estoi en la practiva y tiene bloqueado todas esa paginas jejeje

    • VideoTutoriales commented on 18 abril, 2011 Reply

      No te entendí bien, pero sea lo que sea, seguro que se puede programar :D, te aconsejo que le eches un vistazo a alguno de estos tutoriales Visual Basic 6 (vb6), seguramente encuentre algo interesante.

  • carlos saavedra commented on 19 abril, 2011 Reply

    gracias los leere

  • Enrique palma commented on 19 abril, 2011 Reply

    saben si me pueden ayudar tengo un problema con ese codigo en mi bd la logre conectar pero quiero que me muestre los datos que necesito en los text que estan allí pero cuando yo ingreso el rut
    en este codigo le puse yo el rut y los carga bien pero no quiero eso. quiero que al ingresar el rut los muestre. me podrian ayudar haber cual es mi error porfavor gracias

    Private Sub Command1_Click()
    On Error GoTo Ver

    Set recBd = New ADODB.RecordsetGo
    recBd.Open “select * from Miembros Where Rut =’10.590.151-8′”, BD, adOpenStatic, adLockOptimistic

    ‘While Not RecBD.EOF
    Text1.Text = recBd.Fields(0)
    Text2.Text = recBd.Fields(1)
    Text3.Text = recBd.Fields(2)
    Text4.Text = recBd.Fields(3)
    Text5.Text = recBd.Fields(4)
    Text6.Text = recBd.Fields(5)
    Text7.Text = recBd.Fields(6)
    Text8.Text = recBd.Fields(7)

    ‘MsgBox “Su ID: ” & RecBD.Fields(0) & ” | ” & ” y su nombre ” & RecBD.Fields(1), , “Información…”
    recBd.MoveNext
    ‘Wend

    Exit Sub
    End Sub

    • VideoTutoriales commented on 19 abril, 2011 Reply

      Buenas Carlos,

      Te pego un código de un programa que está en producción
      Set RsAux = New ADODB.Recordset

      RsAux.Open “SELECT * FROM ” & Tabla & ” WHERE Codigo = ” & txtCod.text, BD, adOpenDynamic, adLockOptimistic

      ‘Compruebo q el cliente exista
      If RsAux.EOF = False Then

      txtCliente1.text = “” & RsAux(1).Value
      txtCliente2.text = “” & RsAux(2).Value
      txtCliente3.text = “” & RsAux(3).Value
      txtCliente4.text = “” & RsAux(4).Value
      txtCliente5.text = “” & RsAux(5).Value
      txtCliente6.text = “” & RsAux(6).Value

      End If

      En principio esa lectura ha de funcionar correctamente, si te está fallando y no me dices en qué, no podré ayudarte. Comprueba que el Rut que estás pasandole esté correcto, quizás el -8 es un -B, no sé, ya me cuentas.

      Un saludo!

  • wjvelasquez commented on 30 mayo, 2011 Reply

    Buen dia.
    Amigo tengo un par de dias tratando de conectar el VB6 con el MySQL y no lo he logrado.

    Puedes hacer una revicion a ver que falla?

    tengo instalado:
    -mysql-5.5.12-win32-2
    -mysql-connector-odbc-5.1.8-win32

    El codigo lo copie de aqui y lo ajuste a mi caso.

    Dim CON As ADODB.Connection
    Dim Comd As ADODB.Command
    Dim Rs As ADODB.Recordset

    Public Function Conectar_bd()

    Set CON = New ADODB.Connection
    Set Comd = New ADODB.Command
    Set Rs = New ADODB.Recordset

    CON.CommandTimeout = 40
    CON.CursorLocation = 1

    CON.Open “Driver={MySQL ODBC 5.1 Driver};DATABASE=icaHorse” & _
    “;SERVER=localhost;UID=root;password=WVadmin01;PORT=3306;”

    Set Comd.ActiveConnection = CON

    End Function

    Private Sub Command1_Click()
    Conectar_bd
    End Sub

    Me salta un error -2147467259

    • VideoTutoriales commented on 1 junio, 2011 Reply

      Donde te da el error exactamente? en la conexión?

  • BALTASAR commented on 7 junio, 2011 Reply

    hola no se si me puedas ayudar pero cuando corro el codigo me sale un mensaje como este:

    error ‘-2147467259(80004005)’ en tiempo de ejecucion:
    [microsoft][administrador de controladores ODBC]No se encuentra el nombre del origen de datos y no se especifico ningun controlador predeterminado.

    de antemano muchas gracias por la ayuda y pues es un gran foro este adios

  • Wilson Velarde commented on 11 junio, 2011 Reply

    Muy bien explicado el tuto, felicitaciones, te expongo mi problema, estoy desarrollando un programa, puedo conectarme al MySql normal, puedo ejecutar mis sentencias, funciona espectacular, pero el mayor d etodos mis problemas, es de que si tengo una ventana abierta por mas d eun minuto y quiero ejecutar una setencia sql piero la conexion :( la solucion que hice, fue de que cada vez q ejecute una sentencia cierro y vuelvo a abrir la conexion, pero al hacer esto, toda la informacion que hay en los datacombo o data grid se borran :(
    Existe alguna manera de tener la conexion abierta siempre? o alguna otra solucion??

    Te copio el error que me sale:
    Mysql Server has gone away

    • VideoTutoriales commented on 11 junio, 2011 Reply

      Supongo que la conexión la haces con un servidor en remoto así que la solución que encuentro es que no utilices controles directamente conectados a la bd, es decir, utiliza objetos para cargarlos en memoria y luego trabajas con ellos normalmente.

      Acabo de montarte un tutorial con código para que cambies la forma de utilizar los objetos:
      Cargar datos en un ListView usando MySQL y VB6

  • Wilson Velarde commented on 11 junio, 2011 Reply

    Gracias por tu rapida respuesta.

    Si, yo tambien hago lo mismo que tu

    Abro la conexion
    cargo por ejemplo un data combo

    Set rs = ListaDatos(CNX, “SELECT * FROM USUARIO WHERE USU_TIP = ‘DOC’ ORDER BY USU_NOM”)
    Set DTLDOC.RowSource = rs
    DTLDOC.ListField = “USU_NOM”
    DTLDOC.BoundColumn = “USU_COD”

    y hasta alli todo bien, si interactuo con los controles sin esperar tiempo, todo muy bien, pero si dejo que transcurrar aprox un minuto sin hacer nada y quiero por ejemplo insertar un registro con una sentencia sql, haciendo uso de la conexion, me aparece este error
    Mysql Server has gone away

    que me imagino es porque la conexion con el servidor se pierde por haber estado inactivo algun tiempo.

    Lo que hago para solucionar eso es llamar a la funcion para conectarme a la bd, es decir la cierro y la vuelvo a cargar, pero al cerrarla, la informacion cargada en el data combo se borra, como si no hubiera llenado nada.

    Creo que ahora especifique mejor mi problema, espero puedas ayudarme
    porque la otra solucion seria volver a recargar todo y guardar todos los valores ya seleccionados en variables, pero me parece que seria un proceso que demoraria mucho ya que es una conexion remota

  • Wilson Velarde commented on 11 junio, 2011 Reply

    Correcto, entendi lo que me quieres decir, pucha ahora si tengo q buscar controles que guarden toda mi info mmm, a ver que consigo, si se me ocurre alguna otra solucion lo posteare aqui, muchas gracias por tu tiempo

    • VideoTutoriales commented on 11 junio, 2011 Reply

      Mi forma de trabajar si es en listas utilizo directamente un listview, si tienes que realizar una carga en diferentes cajas de textos, lo que hago es crear un index en las diferentes cajas, de manera que puedo recorrer el indice correspondiendo junto con el campo de la fila de la consulta.

      Es decir
      txtCaja(x).text = rs(x).value;

      X sería un valor dentro del bucle. No sé si era exactamente RecordSet(x).value, pero busca por ese camino.

      Un saludo!

  • VideoTutoriales commented on 11 junio, 2011 Reply

    Sí entendí a la primera, intento explicarme mejor, y usando tu propia solución de cargar en “variables” lo que yo estoy haciendo es cargar en un objeto ajeno a esos datos y me explico.

    Tú abre la conexión y conectas un objeto a esos datos. Al desconectar, esos datos desaparecen.

    La solución es cargar esos datos en un objeto independiente, el tiempo de carga es ínfimo, yo trabajo así y no se nota el tiempo, dependerá de la conexión y de la consulta, pero el resultado es igual, abres conexión, envias consulta, lees datos, muestras, < - en ese último paso es donde se crea la diferencia, yo lo cargo en un objeto ajeno y tú sigues conectado a la fuerza.

    ¿Asi sí? :D

  • hackblack commented on 12 junio, 2011 Reply

    hola hermano gracias por la excelente explicacion, pero tengo un problema y no se por donde empezar.
    resulta que estoy realizando una aplicacion que posee dos textbox y un commandbutton, en donde el textbox1 es usuario, el textbox2 es clave y el commandbutton es entrar.
    logre hacer la conexion gracias a tu explicacion pero no he podido hacer una consulta que verifique lo introducido en los textbox sea igual a lo que esta en mi base de datos mysql para poder hacer un form.show a otro formulario, por favor si puede colocar una estructura de como seria el codigo, gracias de antemano

    • VideoTutoriales commented on 12 junio, 2011 Reply

      Buenas HackBlack,

      Si buscas en la página encontrarás más artículos que pueden venirte bien, te aconsejo este último que es para cargar datos en un listview Pero que puedes utilizar para cargarlo en una caja de texto o donde quieras :)

  • BALTASAR commented on 12 junio, 2011 Reply

    muchas gracias amigo me has ayudado mucho la verdad es bonito saber que existen foros como estos. y pues ya bueno no para terminar pero pues si por el momento sin pasar a molestar claro me gustaria que me ayudaras con este codigo.

    Dim buscando As Integer, Criterio As Integer

    buscando = Val(Text1.Text)

    If Text1.Text = “” Then Exit Sub
    Criterio = “Numero_Registro =” & buscando

    ‘Numero_Registro es un campo de una tabla de mysql
    pero me sale error me dice que no coinciden los tipos y me remarca : Criterio = “Numero_Registro =” & buscando que puedo hacer
    de antemano mis agradecimientos y felicidades por el post este

    • VideoTutoriales commented on 12 junio, 2011 Reply

      Buenas Baltasar

      Si te fijas en la declaración de tipo de Criterio As Integer <—-
      Y estás realizando una asignación de "Numero_Registro=" <— que es de cadena.

      Posiblemente el error de tipos sea ese ;)

      Una cosilla, si son dudas fuera del propio artículo, te pediría por favor que realizaras la consulta en el foro, para ello haz click en “Preguntenos su duda aquí” Es para tener más o menos organizado el blog y el código!

      Un saludo! :)

  • BALTASAR commented on 12 junio, 2011 Reply

    ok gracia en verdad ese era el problema wow gracias

    buen post y
    espero no molestarte con mis dudas la verdad esque estoy haciendo un pequeños sistemita y pues tengo algunas dudas ya te las ire planteando si no te moslesta por todo GRASIAS

    BUEN POST

    • VideoTutoriales commented on 13 junio, 2011 Reply

      Es el cometido de la página, enseñar a la gente que quiera aprender, solo una cosa, si es una pregunta no relacionada con el artículo, por favor, realizalá en el foro ;)

      Gracias

  • massimo_oddo commented on 22 junio, 2011 Reply

    y esa misma aplicacion si la quiero usar en otra maquina y la base de datos esta en el servidor como accedo desde la red, he leido algunos tutos y dicen que en el driver hay que colocar un % al root es decir root% o %root o root%@ pero nada de eso me ha funcionado, en lugar de localhost obviamente coloco la direccion ip del servidor pero m m tampoco solo funciona de manera local que hago?

    • VideoTutoriales commented on 23 junio, 2011 Reply

      Mira los permisos del servidor de mysql al que accedes y mira tambien los permisos del usuario con el que accedes. Tiene que tener permiso para poder acceder desde fuera, por supuesto tener los puertos abiertos, y demás condiciones para que puedas acceder desde un pc remoto.

  • Lucas commented on 12 julio, 2011 Reply

    SOS GROSO, SABELO!

  • Lareneg commented on 10 agosto, 2011 Reply

    Muy útil la info presentada aca, hace varios días que estaba buscando info e intentando conectar ADODB con el server remoto de mysql !
    Exelente! muchas gracias!

  • eduardo commented on 15 enero, 2012 Reply

    una consulta.

    como puedo hacer para que los caracteres de ” y ‘ ‘ no me arrojen problemas al mandarlo a grabar a mysql, ya que como son caracteres internos especiales para las cadenas me vota error ….

    saludos
    edu

    • VideoTutoriales commented on 15 enero, 2012 Reply

      Deberás de añadir un caracter de escape, el caracter es con \

      • VideoTutoriales commented on 15 enero, 2012 Reply

        Disculpa, en visual basic puedes poner dobles comillas por ejemplo:
        insert into tabla (campo1, campo2) values (“” & campo1 & “”‘, “” & campo2 & “”)

  • Christian commented on 16 enero, 2012 Reply

    Hola amigos eh seguido a paso el manual pero bueno yo estoy en un proyecto el cual es con MYSQL entonces me quiero conectar desde visual basic 6 a una base de datos y que en mi proyecto aparesca alguna informacion en una caja de textbox ejemplo bueno entonces mi modulo es esta:

    DB.bas

    Public Conexion As New ADODB.Connection
    Public usuarios As Recordset
    Sub conectarBD()
    Set Conexion = New ADODB.Connection
    Conexion.ConnectionString = “DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=clase;UID=root;PWD=;OPTION=3″
    Conexion.Open
    Conexion.CursorLocation = adUseClient
    A = Conexion.State
    If A = 1 Then
    MsgBox (“Base de Datos Conectada”)
    End If
    End Sub

    Entonces en el form1 tengo este codigo:

    Private Sub datos_Click()
    Form3.Show
    End Sub

    Private Sub salir_Click()
    End
    End Sub
    Private Sub txtuser_Click()
    On Error GoTo Ver
    Dim Conexion As ADODB.Connection
    Dim Conexion As ADODB.Record
    DB.conectarBD
    Conexion.Open “SELECT * FROM ” & game & ” WHERE user = ” & txtuser.Text, BD, adOpenDynamic, adLockOptimistic
    If Conexion.EOF = False Then
    End If
    End Sub

    Pero al probar no me sale nada que puedo estar haciendo mal ?

    • VideoTutoriales commented on 16 enero, 2012 Reply

      Cuando el programa no te devuelve ningún error, te aconsejo que crees un punto de ruptura y vayas trazando poco a poco el código de manera que puedas ir viendo que hace en cada momento.

      Para poner puntos de ruptura en la ejecución, debes de pulsar con el ratón a la izquierda del margen, donde está el número de linea, aparecerá un punto rojo, luego puedes pulsar F8 para ir linea por linea o si quieres seguir con la ejecución normalmente pulsas F9, un punto interesante en el debugger es que puedes arrastrar la linea de ejecución (en color amarillo) con el ratón al punto del programa que quieras, de tal manera que puedas ver varias veces una misma parte.

      Espero que te ayude.

      Un saludo!

  • Christian commented on 17 enero, 2012 Reply

    Hola lo eh echo y me sigue dando el problema no sera que eh echo algo mal el codigo que no llega a conectar a la DB o no lee las tablas que contiene mi DB¨?.

    Algo tiene que andar mal?

    • VideoTutoriales commented on 17 enero, 2012 Reply

      ¿El qué has hecho?

      Si has trazado el código línea por línea podrás localizar algo que no detectas solo ejecutándolo.

      Revisa de todas maneras la base de datos si tiene permisos para acceder de forma remota. Pero si no te da ningún error, te recomiendo que vuelvas al comentario anterior y revises linea por linea utilizando el debugger de visual basic que es muy útil.

      Un saludo!

  • luigui commented on 14 abril, 2012 Reply

    Comd.CommandText = “SELECT * FROM enroll”

    me sale que se requiere un objeto error 424

  • linedx commented on 29 abril, 2012 Reply

    cuando trato de conectarme me sale que la tabla “neodbex.rev_config” no existe…

    la tabla es rev_config y la base de datos es neodbex, no se porque los ha unido a ambos :(

    • VideoTutoriales commented on 29 abril, 2012 Reply

      ¿como realizas la consulta?

      Haz un select completo
      Select * from rev_config

  • LinEdx commented on 30 abril, 2012 Reply

    gracias por responder; he hecho el select completo y me sale el mismo aviso, que la tabla no existe. :(

  • Linedx commented on 4 mayo, 2012 Reply

    Parece que el tema es con el servidor… ya que he probado en otras maquinas y sale el mismo error :S

    • VideoTutoriales commented on 6 mayo, 2012 Reply

      ¿Qué tienes instalado y en donde? Configuración, etc…

  • Nahuel commented on 27 julio, 2012 Reply

    Estoy relizando una aplicación para una biblioteca, algo sencillo, utilizo el modulo para comunicarme con la base de datos y cree una variable string que uso para pasar consultas desde el formulario al modulo, y un recordset para guardar los resultados de esa consulta de manera que:
    FORMULARIO

    “registro = “Select * from bibliotecariotelf where codempleado =’ ” & (rsusuario!codempleado) & ” ‘”
    If repetel(rstelefono, registro) Then
    Set frmbibliotecarionuevotelefono.DataGrid1.DataSource = rstelefono
    End If”

    MODULO:
    “Public Function repetel(ByVal rstelefono As Recordset, ByVal registro As String) As Boolean
    rstelefono.Open , registro, Conexion, adOpenDynamic, adLockOptimistic
    generaregistro = True
    consultarepetel = True
    End Function ”
    Ahora bien, en algunos casos funciona, y en otros es raro pero me da un error ,no coinciden los tipos. alguien puede entender por que?
    Muchas gracias!

    • VideoTutoriales commented on 28 julio, 2012 Reply

      ¿En qué linea te da el error?

      El error de “no coinciden los tipos” es por que estás intentando asignar un tipo de variable en otro que no es del mismo tipo, tal y como te indica el error, esto puede ser intentar asignar un string a un integer por ejemplo, pero sin saber en que linea te lo está dando es difícil de determinar exactamente el problema que tienes.

      Te aconsejaría que trazaras el código utilizando el debugger que trae Visual Basic 6 que es muy potente, pulsa F9 en algún lugar cercano al error o en el mismo lugar y mira exactamente que variables está intentando asignar, puede que estén vacías o muchas otras posibilidades que nos llevaría bastante tiempo enumerar.

      Prueba lo que comenté y luego nos cuentas.

      Un saludo!

  • Idalia commented on 19 octubre, 2012 Reply

    hola oie solo para agradecerte por toda tu informacion es muy buena
    sabes yo empezare hacer un proyecto en mis residencias de acceso de personal mediante huella digital espero y cualquier duda me puedas ayudar de antemano gracias

    • VideoTutoriales commented on 20 octubre, 2012 Reply

      No he tenido oportunidad de tener acceso a un lector de huella digital, si he utilizado el nueva DNIe que hay en españa que lleva un chip aunque tampoco terminé programándolo, solo estuve viendo algunas opciones interesantes que traía y el formato y demás que se podía rescatar desde el chip.

      De todas maneras, cualquier duda que tengas puedes postear en algún artículo relacionado del blog o escribir en el foro, http://foro.vertutoriales.com/index.php?action=post;board=1.0

      Un saludo y gracias por el comentario.

  • Juan Pablo commented on 14 noviembre, 2012 Reply

    buenos dias…. tengo muchas problema en el vb6 para conectar al bd de mysql, todavia me falta mucho por aprender. Tengo todo instalado… cuando pongo el codigo me corre fino. como yo compruebo que esta conectado a base de datos ya…? El codigo que publicaste abajo, tambien lo probe y no me corre, me sale un error diciendo que no esta definido de sub y function algo asi… estoy haciendo un programa relacionado de sistema experto…. que yo necesito conectar a bd con el vb6…. como yo hago en una ventana me muestra una pregunta, lo respondo y me muestra el otro enseguida sin salir de esa ventana con el mismo label? disculpa por tanta preguntadera…@@ y muchas gracias

    • VideoTutoriales commented on 14 noviembre, 2012 Reply

      Vamos por partes, primero tendremos que conectar a MySQL y comprobar que funciona, has creado las tablas en el servidor de base de datos (MySQL)? si has creado alguna tabla, inserta algunos registros a mano y procederemos lanzando una consulta a esa tabla.

      Con respecto el error que te puede dar el código, prueba a revisar las comillas, tienen que ser comillas dobles, pero sin ningún formato, es posible que te ponga otro caracter ascii. En otras palabras, repasa cada una de las comillas y ve poniendo a mano las comillas dobles que veas para estar seguro de que están bien puestas, el copy paste puede dar problemas.

      Cuando tengamos esta parte, continuaremos con lo siguiente si te parece bien, es un “divide y vencerás” que supongo ya habrás estudiado :)

  • Juan Pablo commented on 19 noviembre, 2012 Reply

    la tabla de mysql si lo tengo creado, el problema es que no se como hago para la consulta en vb a mysql, vi dos veces clase de vb y nada me ensenio el profesor….@@ el error de la comillas lo revisen y estan bien… otra pregunta para conectar el bd(toad of mysql) a vb es solamente poner este codigo:
    Driver = “(MySQL ODBC 5.1 Driver);Server=localhost;Database=veterinario; User=root;Password=1234;”
    ese es todo? luego para consulta necesito otro string mas… y no me la dieron :s

  • Juan Pablo commented on 19 noviembre, 2012 Reply

    ahhh y otra cosa… sobre el ADODB me podria decir que componente exactamente es…? ya que ante agregue microsoft ADO Data control 6.0 (OLEDB) si me salio bn… y ultimamente le agrego otra vez no me sale…. solo sale Adodc…mas no ADODB

  • Juan Pablo commented on 19 noviembre, 2012 Reply

    Si ese página ya la eh visto, el driver tambn lo baje de ahí…. Los 2 tutoría les? Te refiere ah los variables q este arriba como base de datos, servidor, usuario y código?

  • VideoTutoriales commented on 19 noviembre, 2012 Reply

    Me refiero que si sigues los dos tutoriales, no debes de tener problema está toda la información para hacerlo poco a poco, no sé si es por que vas al “grano” copiando y pegando y posiblemente te dejes cosas atrás.

    Lo que no sé es exactamente donde te encuentras.para poder guiarte, lo mejor es que crees un nuevo proyecto y comiences desde 0, mirando primero el tutorial que enlacé en el comentario anterior y continues luego por meter el código que trata con la base de datos.

    Otra cosa… tienes la base de datos creada con permisos de ese usuario y demás? donde tienes la base de datos de MySQL?

    Seguimos en contacto.

  • Juan Pablo commented on 20 noviembre, 2012 Reply

    Lo de permiso si no se… Sería q me podría decir como si no es mucha molestia…. Si quiere pásame tu correo y te paso las pantallas para q lo ve y me dice donde esta el error… No se q dirías tu? O pego el código aquí?

  • VideoTutoriales commented on 20 noviembre, 2012 Reply

    Te escribo al correo. Un saludo

  • JOHNYMEN commented on 11 julio, 2013 Reply

    MEN ERES UNA REATA ERECTA, ME SACASTE DE APUROS CON LOS CODIGOS Y LA NETA ERES UN CHINGON

    • VideoTutoriales commented on 11 julio, 2013 Reply

      ¿Eso es un halago? :D

      Gracias… supongo ;) todo sea ayudar con los códigos de visual basic y cualquier lenguaje de programación o rollo técnico ;)

      Saludos!

  • Orion commented on 24 septiembre, 2013 Reply

    Hola!!!

    todo esto esta genial pero me gustaría saber como le hago para realizar una inserción anexo código que tengo

    Comd.CommandText = “INSERT INTO cajeros VALUES (” & CInt(lblCaja.Caption) & “,’” & txtnom.Text & “‘,’” & txtapp.Text & “‘,’” & txtapm.Text & “‘, , ,’” & Estad & “‘,’” & txtpw1.Text & “‘)”
    Rs.CursorLocation = adUseClient
    Rs.Open Comd, , 1, 1

    • VideoTutoriales commented on 25 septiembre, 2013 Reply

      Tal y como tienes la consulta de inserción, ¿qué problema te da?

      Lo más fácil es que pruebes sin valores introducidos por el usuario y pruebes directamente, por ejemplo:
      Comd.CommandText = “INSERT INTO cajeros VALUES (“100″,”nombre”,”app”,”apm”,”0″ ,”0″ ,”estadp”,”pwd”)”

      Ya que no sé el problema que tienes es lo que se me ocurre que puedas hacer para las pruebas.

      ¿Los objetos los tienes creados? el Comd. y el Rs (recordset)

      Ya me cuentas.

      Un saludo!

  • Orion commented on 25 septiembre, 2013 Reply

    Muchas gracias con eso quedo, el problema es que mande un valor nulo cundo en donde no se aceptan

    saludos…

  • Orion commented on 30 septiembre, 2013 Reply

    HOLA!! de nuevo… como inserto toda mi consulta en un msflexgrid ya que le coloque
    ….
    rs.open comd,,adopendynamic, adlockbatchoptimistic
    MSFlexGrid.text=rs
    …..
    el error dice

    error de compilacion:
    se esperaba: identificador o expresion entre parentesis

    saludos

    • VideoTutoriales commented on 1 octubre, 2013 Reply

      Buenos días Orión

      Donde tienes la consulta es en comd, o al menos así lo creo, ya que el Rs (recordset) es el objeto con el que pasarle los parámetros que bien has puesto, el comd con la consulta, y el resto de parámetros de como abrir y realizar la consulta.

      Resumiendo:
      msflexgrid.text = comd

      Un saludo!

  • Orion commented on 2 octubre, 2013 Reply

    Hola!!! ya lo probé y no me queda ;( este es el error que me marca tambien te anexo la función completa saludos.

    —-Error
    error ’424′ en tiempo de ejecución:

    se requiere un objeto.

    —Función–

    Public Function Datos()
    Dim s As Integer
    Conectar_bd
    Comd.CommandText = “SELECT co_colonia AS ‘No COLONIA’, co_nombre AS ‘COLONIA’,co_tipo AS ‘TIPO COLONIA’,co_cp AS ‘CODIGO POSTAL’ FROM colonias ”
    Rs.CursorLocation = adUseClient
    Rs.Open Comd, , adOpenDynamic, adLockBatchOptimistic

    MSFlexGrid.tex = Comd

    End Function

  • VideoTutoriales commented on 3 octubre, 2013 Reply

    El MSFlexGrid.tex <– tiene un error de sintasis, está mal escrito, es:
    MSFlexGrid.text, aparte te recomiendo pasarse parámetro completo que guarda el valor, en este caso:
    Comd.CommandText

    Quedando:
    MSFlexGrid.text = Comd.CommandText

    Espero que te sirva.
    Un saludo!

  • Orion commented on 4 octubre, 2013 Reply

    hola ya quedo con eso, solo que el flexgrit se llema con el select y no con el resultado del mismo
    es desir veo
    SELECT co_colonia AS ‘No COLONIA’, co_nombre AS ‘COLONIA’,co_tipo AS ‘TIPO COLONIA’,co_cp AS ‘CODIGO POSTAL’ FROM colonias
    – y no –
    No COLONIA COLONIA TIPO COLONIA CODIGO POSTAL
    001 ALTAVISTA H

    SALUDOS

    • VideoTutoriales commented on 6 octubre, 2013 Reply

      Tienes que atacar el recordset, es decir,

      rs(1).value o en su caso rs!colonia

      Es en el recordset donde se devuelven los resultados de la consulta.

      Salud!

  • Lucas commented on 1 noviembre, 2013 Reply

    Buen dia Chicos! Yo tengo un problema. Lo pude conectar perfectamente, el tema es cuando lo quiero instalar en una maquina que tiene Windows 7. Lo instale como administrador. al igual que el obdc 3.51. El problema es cuando lo quiero abrir me sale un mensaje : “ERROR 53 ‘ NO ENCUENTRA EL ARCHIVO ‘ “.
    No se si debo registrar algo y como..
    Muchas Gracias!!!

  • Sandi commented on 20 mayo, 2014 Reply

    No me puedo conectar a la base de datos me podrian ayudarr??

    • videotutoriales commented on 20 mayo, 2014 Reply

      ¿Qué error te da exactamente al intentar conectar vb6 con mysql? Danos algo más de información y podremos darte la ayuda ;)

  • juan carlos commented on 17 junio, 2014 Reply

    Buenas tardes:
    tengo una pregunta, estoy conectándome a una base de mysql desde visual basic por medio de un formulario de Access 2010 , y necesito que los resultados me los meta en un cuadro de texto, sin embargo solo me muestra el ultimo registro del recorset, me dicen que debo asignar al “origen del registro del formulario” es decir en el RecordSource del formulario el recordset que hago para consultar la base , pero no se hacer esto podrían ayudarme, es urgente le agradecería mucho

    Public Function prueba()

    Conectar_bd (“recaudo”)

    Comd.CommandText = “SELECT cot_cotizante FROM consolidado_final WHERE emp_aportante=’860351923′”

    Rs.Open Comd, , 1, 1

    Form_Formulario1.RecordSource = Rs

    Rs.MoveFirst
    While Not Rs.EOF
    cot_cotizante = Rs(“cot_cotizante”)
    Form_Formulario1.Texto0 = cot_cotizante
    Rs.MoveNext

    Wend

    End Function

    • videotutoriales commented on 18 junio, 2014 Reply

      Si quieres añadir más registros, tendrás que sumarlos como en una cadena, o utilizar otro objeto por ejemplo un listview para añadir más filas, tantas como tengas en la base de datos.

      Como solución rápida a lo que pides según tu código y para añadirlo en un textbox que entiendo que es cot_cotizante, quedaría así:
      cot_cotizante = cont_cotizante & ” – ” & Rs (“cot_cotizante”)

      La asignación al Texto0.text lo puedes hacer fuera del bucle, ya que en la variable cot_cotizante se van a ir guardando todos los registros de la consulta a la base de datos.

      Espero que te ayude, sino, puedes volver a preguntar por si no te entendí bien.
      Un saludo!

  • juan carlos commented on 18 junio, 2014 Reply

    buenos días gracias por contestar tan rápido, ya pude resolver mi problema fue muy sencillo al formulario le asigne el recordset y al campo le asigne el resultado del recordset, me arrojaba error porque estab era utilizando RecordSource y por ahí no era al final el código quedo asi

    Public Function prueba()

    Conectar_bd (“recaudo”)

    Comd.CommandText = “SELECT cot_cotizante FROM consolidado_final WHERE emp_aportante=’860351923′”
    Rs.CursorLocation = adUseClient
    Rs.Open Comd, , 1, 1

    Set Form_Consulta1.Recordset = Rs

    Form_Consulta1.cot_cotizante.ControlSource = “cot_cotizante”

    End Function

    si alguien necesita ayuda con formularios de Access con conexiones externas por visual basic me pueden escribir a mi correo juanchvere@hotmail.com

  • videotutoriales commented on 18 junio, 2014 Reply

    Buenas Juan Carlos

    Gracias por la información y por el ofrecimiento, seguro que a más de uno le parece interesante.

    Un saludo!

  • Luis commented on 13 agosto, 2014 Reply

    Quisiera saber si pueden ayudarme resulta que yo dentro de la base tengo varias tablas las cuales quiero levantar todos sus nombre me gustaría saber como lo tengo que hacer no me doy cuenta como levantar dichas tablas desde ya muchas gracias por la ayuda que me puedan dar

  • Luis commented on 13 agosto, 2014 Reply

    Tengo una Base en Mysql la cual esta compuesta por varias tablas lo que quiero hacer es con solo saber el nombre de la base levantar las tablas con access lo puedo hacer pero en mysql no me pueden ayudar gracias por contestarme

  • videotutoriales commented on 13 agosto, 2014 Reply

    No entiendo lo que quieres decirme, te dejo algunas preguntas:

    ¿Lo que quieres es realizar una conexión con ODBC desde Access a MySQL?
    ¿Migrar de MySQL a Access?
    ¿Leer la tabla en MySQL y crearla en Access por código VB6?

    No se me ocurre otra cosa que pueda significar lo que comentas :)

    Si me explicas más a grosso modo lo que necesitas podré ayudarte, pero no consigo entender lo que necesitas. Salud!

  • Luis commented on 13 agosto, 2014 Reply

    Hola tengo una base que esta en mysql y la quiero consultar en visual basic 6
    Dicha base la genera el cliente y yo la quiero levantar con todas las tablas que contenga
    Ejemplo Nombre de la Base : Empresa y dentro de esta tengo
    Remitos
    Facturas
    Acuses

    A su vez la tabla Remito tiene los campos
    IdRemito
    Nremito
    Nempresa
    Narticulo
    Ncantidad
    Precio
    Etc

    No se si me explico bien quiero levantar las tablas que forman la base Empresa con sus tablas Remito , Facturas , Acusas
    El programa lo estoy haciendo en Visual Basic 6 la base esta en Mysql
    Conectarme a la base no tengo problema el problema es levantar las tablas no se como hacerlo si podes ayudarme te daría las gracias

    Desde ya muchas gracias

    • videotutoriales commented on 14 agosto, 2014 Reply

      Si ya has conectado, lo que te faltaría sería lanzar la consulta a la tabla que quieras. Para ello tendrás que hacer uso de los RecordSet. Si ya has conectado, solo te falta parte de este código:

      ‘Esta linea realiza la consulta a la tabla remito y traigo todos los campos con *
      Rs.Open “SELECT * FROM Remito”, BD, adOpenDynamic, adLockOptimistic ‘aquí es donde hacemos la consulta a la tabla de la base de datos Access

      //recorro el recordset hasta que llegue al final
      while Rs.EOF = false

      cbComboBox.AddItem Rs!Nremito //aquí añado en un combobox el Nremito de cada registro que está en el recordset

      Rs.MoveNext //avanzo el recordset

      wend //fin del bucle de lectura del recordset

      Con esto más o menos deberías de realizar la primera lectura de las tablas. Te recomendaría revisar este otro tutorial:
      http://vertutoriales.com/anadir-informacion-a-un-combobox-de-una-tabla-de-access-desde-visual-basic-con-videotutorial/

      Está atacando a una base de datos Access, pero la operativa es la misma, lo único que cambia es la conexión a la base de datos, pero luego la lectura y la manera de funcionar es exactamente la misma.

      Espero haber entendido la pregunta y que la respuesta se acerque a lo que necesites. De todas maneras si necesitas algo más, por aquí estaré.

      Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>