Conectar a MySQL con Visual Basic (VB6) usando ODBC
Foto-Carlos-Dk

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:

88 Respuestas

  1. chuy

    abril 29th, 2010 a 4:23 pm

    1

    ” { ” me dice que caracter no valido

  2. VideoTutoriales

    abril 30th, 2010 a 1:30 am

    2

    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!

  3. señas

    mayo 27th, 2010 a 10:13 pm

    3

    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

  4. VideoTutoriales

    mayo 27th, 2010 a 10:53 pm

    4

    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!

  5. Efrenk

    octubre 20th, 2010 a 3:57 pm

    5

    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

  6. VideoTutoriales

    octubre 20th, 2010 a 5:32 pm

    6

    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!

  7. Elton

    febrero 12th, 2011 a 6:55 pm

    7

    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.

  8. VideoTutoriales

    febrero 12th, 2011 a 8:11 pm

    8

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

    Un saludo!

  9. fernando luna

    abril 5th, 2011 a 10:06 pm

    9

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

  10. Roberto carlos

    abril 6th, 2011 a 6:18 pm

    10

    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,,,

  11. VideoTutoriales

    abril 9th, 2011 a 5:59 pm

    11

    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!

  12. carlos saavedra

    abril 14th, 2011 a 12:02 pm

    12

    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

  13. VideoTutoriales

    abril 14th, 2011 a 12:52 pm

    13

    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!

  14. carlos saavedra

    abril 18th, 2011 a 2:01 pm

    14

    Muchas gracias Funciono :D

  15. VideoTutoriales

    abril 18th, 2011 a 2:04 pm

    15

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

  16. carlos saavedra

    abril 18th, 2011 a 2:59 pm

    16

    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

  17. VideoTutoriales

    abril 18th, 2011 a 3:34 pm

    17

    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.

  18. carlos saavedra

    abril 19th, 2011 a 12:04 pm

    18

    gracias los leere

  19. Enrique palma

    abril 19th, 2011 a 12:13 pm

    19

    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

  20. VideoTutoriales

    abril 19th, 2011 a 12:45 pm

    20

    nada, si tienes dudas, ya sabes :)

  21. VideoTutoriales

    abril 19th, 2011 a 12:50 pm

    21

    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!

  22. wjvelasquez

    mayo 30th, 2011 a 12:10 am

    22

    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

  23. VideoTutoriales

    junio 1st, 2011 a 1:25 pm

    23

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

  24. BALTASAR

    junio 7th, 2011 a 2:16 am

    24

    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

  25. VideoTutoriales

    junio 8th, 2011 a 8:57 am

    25

    Buenas Baltasar,

    Te dejo este otro enlace por si te ayudara, faltan algunos datos que seguir antes de la conexión:
    http://www.vertutoriales.com/index.php/conectar-visual-basic-6-vb6-con-mysql-pasos-previos-de-configuracion-para-eludir-problemas-o-errores/

    Espero que te ayude a solucionar el problema

  26. Wilson Velarde

    junio 11th, 2011 a 5:46 am

    26

    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

  27. VideoTutoriales

    junio 11th, 2011 a 8:13 am

    27

    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

  28. Wilson Velarde

    junio 11th, 2011 a 3:10 pm

    28

    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

  29. Wilson Velarde

    junio 11th, 2011 a 8:11 pm

    29

    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

  30. VideoTutoriales

    junio 11th, 2011 a 7:40 pm

    30

    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

  31. VideoTutoriales

    junio 11th, 2011 a 9:45 pm

    31

    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!

  32. hackblack

    junio 12th, 2011 a 3:47 am

    32

    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

  33. VideoTutoriales

    junio 12th, 2011 a 10:49 am

    33

    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 :)

  34. BALTASAR

    junio 12th, 2011 a 6:27 pm

    34

    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

  35. VideoTutoriales

    junio 12th, 2011 a 10:28 pm

    35

    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! :)

  36. BALTASAR

    junio 12th, 2011 a 10:39 pm

    36

    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

  37. VideoTutoriales

    junio 13th, 2011 a 8:10 am

    37

    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

  38. massimo_oddo

    junio 22nd, 2011 a 11:22 pm

    38

    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?

  39. VideoTutoriales

    junio 23rd, 2011 a 9:32 am

    39

    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.

  40. Lucas

    julio 12th, 2011 a 7:39 am

    40

    SOS GROSO, SABELO!

  41. Lareneg

    agosto 10th, 2011 a 4:43 am

    41

    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!

  42. VideoTutoriales

    agosto 13th, 2011 a 7:43 am

    42

    Nada, si te asalta cualquier duda y no la encuentras plantealá en el foro http://foro.vertutoriales.com

  43. Error CommandText no existe el objeto ADO - Tutoriales y Videotutoriales en www.vertutoriales.com

    octubre 1st, 2011 a 8:13 am

    43

    [...] Visual Basic 6 (vb6) con MySQL, pasos previos de configuración para eludir problemas o erroresConectar a MySQL con Visual Basic (VB6) usando ODBCQuitar todos los espacios de una cadena visual basic (vb6) – Replace()Error 13 Visual Basic 6 [...]

  44. eduardo

    enero 15th, 2012 a 3:41 am

    44

    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

  45. VideoTutoriales

    enero 15th, 2012 a 6:58 pm

    45

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

  46. VideoTutoriales

    enero 15th, 2012 a 7:04 pm

    46

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

  47. Christian

    enero 16th, 2012 a 1:57 am

    47

    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 ?

  48. VideoTutoriales

    enero 16th, 2012 a 8:34 am

    48

    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!

  49. Christian

    enero 17th, 2012 a 2:10 am

    49

    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?

  50. VideoTutoriales

    enero 17th, 2012 a 8:37 am

    50

    ¿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!

  51. luigui

    abril 14th, 2012 a 6:23 pm

    51

    Comd.CommandText = “SELECT * FROM enroll”

    me sale que se requiere un objeto error 424

  52. VideoTutoriales

    abril 14th, 2012 a 7:14 pm

    52
  53. linedx

    abril 29th, 2012 a 7:00 pm

    53

    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 :(

  54. VideoTutoriales

    abril 29th, 2012 a 9:46 pm

    54

    ¿como realizas la consulta?

    Haz un select completo
    Select * from rev_config

  55. LinEdx

    abril 30th, 2012 a 9:23 pm

    55

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

  56. Linedx

    mayo 4th, 2012 a 11:42 pm

    56

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

  57. VideoTutoriales

    mayo 6th, 2012 a 12:39 pm

    57

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

  58. Nahuel

    julio 27th, 2012 a 6:43 pm

    58

    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!

  59. VideoTutoriales

    julio 28th, 2012 a 4:25 pm

    59

    ¿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!

  60. Idalia

    octubre 19th, 2012 a 6:37 pm

    60

    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

  61. VideoTutoriales

    octubre 20th, 2012 a 7:18 pm

    61

    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.

  62. Juan Pablo

    noviembre 14th, 2012 a 2:30 pm

    62

    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

  63. VideoTutoriales

    noviembre 14th, 2012 a 6:38 pm

    63

    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 :)

  64. Juan Pablo

    noviembre 19th, 2012 a 2:32 am

    64

    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

  65. Juan Pablo

    noviembre 19th, 2012 a 2:35 am

    65

    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

  66. VideoTutoriales

    noviembre 19th, 2012 a 9:45 am

    66

    Instalastes los drivers? revisastes los dos tutoriales que hay sobre la conexión con la base de datos MySQL?
    Revisa este artículo
    http://www.vertutoriales.com/index.php/conectar-visual-basic-6-vb6-con-mysql-pasos-previos-de-configuracion-para-eludir-problemas-o-errores/

    Un saludo!

  67. Juan Pablo

    noviembre 19th, 2012 a 2:00 pm

    67

    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?

  68. VideoTutoriales

    noviembre 19th, 2012 a 2:23 pm

    68

    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.

  69. Juan Pablo

    noviembre 20th, 2012 a 4:49 am

    69

    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í?

  70. VideoTutoriales

    noviembre 20th, 2012 a 9:37 am

    70

    Te escribo al correo. Un saludo

  71. JOHNYMEN

    julio 11th, 2013 a 5:15 pm

    71

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

  72. VideoTutoriales

    julio 11th, 2013 a 11:52 pm

    72

    ¿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!

  73. Orion

    septiembre 24th, 2013 a 9:14 pm

    73

    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

  74. VideoTutoriales

    septiembre 25th, 2013 a 7:40 am

    74

    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!

  75. Orion

    septiembre 25th, 2013 a 6:32 pm

    75

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

    saludos…

  76. Orion

    septiembre 30th, 2013 a 10:55 pm

    76

    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

  77. VideoTutoriales

    octubre 1st, 2013 a 8:17 am

    77

    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!

  78. Orion

    octubre 2nd, 2013 a 8:13 pm

    78

    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

  79. VideoTutoriales

    octubre 3rd, 2013 a 6:57 am

    79

    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!

  80. Orion

    octubre 4th, 2013 a 4:12 pm

    80

    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

  81. VideoTutoriales

    octubre 6th, 2013 a 12:07 pm

    81

    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!

  82. Lucas

    noviembre 1st, 2013 a 10:03 pm

    82

    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!!!

  83. Sandi

    mayo 20th, 2014 a 5:12 pm

    83

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

  84. videotutoriales

    mayo 20th, 2014 a 7:22 pm

    84

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

  85. juan carlos

    junio 17th, 2014 a 7:13 pm

    85

    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

  86. videotutoriales

    junio 18th, 2014 a 7:17 am

    86

    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!

  87. juan carlos

    junio 18th, 2014 a 4:17 pm

    87

    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

  88. videotutoriales

    junio 18th, 2014 a 5:11 pm

    88

    Buenas Juan Carlos

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

    Un saludo!


Insertar al RSS los comentarios de esta entrada

Escribe tu comentario