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.RecordsetPublic Function Conectar_bd()
Set CON = New ADODB.Connection
Set comd = New ADODB.Command
Set Rs = New ADODB.RecordsetCON.CommandTimeout = 40
CON.CursorLocation = 1CON.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. ######) 😀
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! 😀
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.
» { » me dice que caracter no valido
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!
hola buena tarde tengo un problema, no pudo conectar la base de datos con visual basic me sale un error, me dice que (error en la prueba de conexión al inicializar al proveedor.no se reconoce formato de base de dato) a quien puede ayudarme
¿El proveedor está correcto? Qué cadena de conexión pusiste? Tienes el ODBC instalado? 🙂
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
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!
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
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!
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.
Prefiero que las dudas las refieras aquí en el blog para que las respuestas les ayuden a otros como a tí.
Un saludo!
gracias buena aportacion esta mas explicado que anteriores gracias de ante mano
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,,,
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!
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 😀
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!
Muchas gracias Funciono 😀
Me alegro 😀 un me gusta en lo de fans de fb? 😀 o twitteame 😀
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 😀
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 😀 y disculpen las molestias y muchas gracias de antemano por todo 😀
y lo del face cuando llegue a la casa lo ago porque ahora estoi en la practiva y tiene bloqueado todas esa paginas jejeje
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.
gracias los leere
nada, si tienes dudas, ya sabes 🙂
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
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!
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
Donde te da el error exactamente? en la conexión?
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
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
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
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
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
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
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!
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í? 😀
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
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 🙂
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
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! 🙂
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
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
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?
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.
SOS GROSO, SABELO!
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!
Nada, si te asalta cualquier duda y no la encuentras plantealá en el foro http://foro.vertutoriales.com
Pingback: Error CommandText no existe el objeto ADO - Tutoriales y Videotutoriales en www.vertutoriales.com
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
Deberás de añadir un caracter de escape, el caracter es con \
Disculpa, en visual basic puedes poner dobles comillas por ejemplo:
insert into tabla (campo1, campo2) values («» & campo1 & «»‘, «» & campo2 & «»)
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 ?
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!
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?
¿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!
Comd.CommandText = «SELECT * FROM enroll»
me sale que se requiere un objeto error 424
instalastes los drivers? Creastes las referencias? Declaraste el objeto? 🙂
http://www.vertutoriales.com/index.php/conectar-visual-basic-6-vb6-con-mysql-pasos-previos-de-configuracion-para-eludir-problemas-o-errores/
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 🙁
¿como realizas la consulta?
Haz un select completo
Select * from rev_config
gracias por responder; he hecho el select completo y me sale el mismo aviso, que la tabla no existe. 🙁
Parece que el tema es con el servidor… ya que he probado en otras maquinas y sale el mismo error :S
¿Qué tienes instalado y en donde? Configuración, etc…
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!
¿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!
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
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.
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
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 🙂
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
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!
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
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?
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.
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í?
Te escribo al correo. Un saludo
MEN ERES UNA REATA ERECTA, ME SACASTE DE APUROS CON LOS CODIGOS Y LA NETA ERES UN CHINGON
¿Eso es un halago? 😀
Gracias… supongo 😉 todo sea ayudar con los códigos de visual basic y cualquier lenguaje de programación o rollo técnico 😉
Saludos!
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
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!
Muchas gracias con eso quedo, el problema es que mande un valor nulo cundo en donde no se aceptan
saludos…
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
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!
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
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!
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
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!
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!!!
No me puedo conectar a la base de datos me podrian ayudarr??
¿Qué error te da exactamente al intentar conectar vb6 con mysql? Danos algo más de información y podremos darte la ayuda 😉
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
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!
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
Buenas Juan Carlos
Gracias por la información y por el ofrecimiento, seguro que a más de uno le parece interesante.
Un saludo!
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
Buenas Luis
Creo que te puedo ayudar! Pero no entiendo por tu «argot» exactamente lo que necesitas…
¿Lo que quieres es saber el nombre de las tablas de tu base de datos o simplemente leerlas?
Si es lo segundo, quizás te ayude este artículo para leer la base de datos Access y cargarla en un Combobox y Listbox de Visual basic 6
Ya me cuentas! Un saludo!
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
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!
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
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:
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!
Conecte con éxito BD Mysql, crear 02 botones una para buscar y guardar/cancelar, la búsqueda seria por DNI y los datos encontrados se visualicen en sus respectivos cuadro de texto y al hacer clic en guardar esta se guarde en una hoja de Excel. Y como se puede hacer como archivo «exe»
Buenas Miguelón
Me has realizado la pregunta bastante amplia, intentaré resumir para no extenderlo mucho.
¿Entiendo que crear dos botones de guardar y cancelar no será un problema no? Sobre todo si has conseguido conectar con la base de datos, la búsqueda tendrá que estar relacionada con la tabla, supongo que será datos de clientes, usuarios o algo así, esta consulta se lanzaría desde el código este:
comd.CommandText = “SELECT * FROM Usuarios”
Pero en vez de hacer tal consulta, sería algo como: SELECT * FROM Tabla WHERE campoDNI = txtDNIbusqueda.text
El campo de txtDNIBusqueda es una caja de texto que has debido añadir al proyecto con ese nombre para luego poder utilizarlo en la consulta.
Para recoger los datos tendrías que recorrer el objeto rs (recordset). Te recomiendo que revises este otro video con Acceso a base de datos desde vb6, que aunque es para access, el código de consultas y toma de datos es exactamente igual, lo único que cambia es la conexión.
Con respecto la exportación a Excel, te recomendaría lo más rápido guardar un fichero en formato de texto plano, separado por «;» . Este tipo de fichero es un estandar y se utiliza con la extensión CSV. Este tipo de fichero automáticamente es reconocido por Excel y muchas otras hojas de cálculo como OpenOffice por ejemplo.
Finalmente, para crear un archivo ejecutable, nada más sencillo: Ve al menú Archivo y pulsa en la opción «Generar NombreDeTuProyecto Exe» donde «Nombre de tu proyecto» es el nombre con el que has designado tu proyecto (como no podía ser de otra manera)
Con esto en principio quedaría todo explicado, te recomendaría ir paso por paso y si tienes cualquier duda, ve pegando código de lo que vas haciendo y explícame al detalle para poder ayudarte con cada paso.
Por aquí me tienes. Saludos!
Cual seria la programación y que se necesita para q corra como ejecutable.
La programación la puedes ver en el enlace que te puse y para que corra como ejecutable, es posible que con crear solo el ejecutable como te comentaba no te funcione por tema de librerías, tendrás que crear una instalación.
Para ello tendrás que ir al «Asistente de Empaquetado y Distribución» que suele venir con el propio paquete de instalación de Visual Basic 6.
Espero haberte aclarado las dudas.
Un saludo!
Siguiendo la misma consulta; conecte a Mysql, tengo el boton de busqueda, canlelar. Como se haria al dar clic en guardar que el resultado de la busqueda se guarde en una tabla de una BD en Access con la fecha que se efectuo la busqueda y agregar botones con opciones segun fecha para sacar reportes visualizados en excel.
Agradesco tu aporte.
Para guardar los resultados, sería recorrer el rs e realizando inserciones en la tabla de la base de datos que hayas creado para ello, es igual con:
rs.open
Lo que cambia es la consulta SQL de su interior tal que así:
Rs.Open «INSERT INTO TablaGuardar (campo1, campo2… campoX) VALUES (valor1, valor2, … valorX)
El valor de la fecha actual, puedes pasarla por vb6 utilizando la función date(), recuerda formatear el valor devuelto para que lo acepte tu base de datos.
Para terminar, la exportación a excel, para no complicarlo, crearía un fichero CVS separado por ;, en definitiva es un fichero de texto plano que separa los valores por ;, este fichero es un estandar y la gran mayoría de hojas de cálculo como Excel, OpenOffice, etc… lo interpretan sin problema.
Espero haberte aclarado algo, de todas maneras como en preguntas anteriores, si explicas un poco más en profundidad podré ayudarte más concretamente.
Un saludo!
el error me da en la linea q esta con doble «»
Private Sub Command1_Click()
ado_open
Dim rsMySql As ADODB.Recordset
Dim strMySql As String
Set rsMySql = New ADODB.Recordset
strMySql = «SELECT * FROM I_atencion
where ate_idatencion=txtDNIbusqueda.text»
«»»rsMySql.Open strMySql, conexionadoMySql»»»
If rsMySql.EOF Then
Print «No hay registros»
Else
While Not rsMySql.EOF
Print rsMySql!ate_apematerno
rsMySql.MoveNext
Wend
End If
rsMySql.Close
ado_close
End Sub
Mi conexion a BD es de la siguiente forma; que es lo que falta agregar
Private Const DRIVER_MYSQL As String = «DRIVER={MySQL ODBC 5.1 Driver};»
Private Const OPCIONS_MYSQL As String =
«SERVER=127.0.0.1;PORT=3306;DATABASE=prueba;USER=root;PASSWORD=0126lolo;»
Public conexionadoMySql As ADODB.Connection
Sub ado_open()
Set conexionadoMySql = New ADODB.Connection
conexionadoMySql.Open DRIVER_MYSQL & OPCIONS_MYSQL
End Sub
Sub ado_close()
conexionadoMySql.Close
End Sub
Entonces está claro que el problema es de la conexión con la base de datos o en su consulta (ya que no especificas el error solo la linea donde lo da)
Tengo varias preguntas:
¿Instalaste los drivers de MySQL?
¿El server lo tienes en la ip 127.0.0.1?
¿Existe la tabla a la que consultas?
¿Trae algún valor la caja de textoDNI?
Para poder solventar un error, necesito saber exactamente el error, en principio el código a simple vista parece correcto.
😉
En el campo textodni existen datos, pero al ejecutar el proyecto en el cuadro de texto esta text1 borro y ingreso el dni a buscar y me da el error
Prueba a poner lo siguiente:
if trim(txtDNIbusqueda.text) <> «» then
strMySql = “SELECT * FROM I_atencion
where ate_idatencion= » + txtDNIbusqueda.text
end if
Lo único que hace es comprobar que traiga algún dato, posiblemente es que al estar vacío te de error, aparte concatena la query con el texto, de manera que strMySql contenga la sentencia completa.
Hace tiempo que no trabajo con VB6, pero creo hace falta ponerlo como te expuse en el ejemplo de antes.
Seguimos! 😉
Buenas noches, necesito ayuda porfavor. Estoy creando un sistema donde tengo los botones de guardar, eliminar, reportes, nuevo , estos datos que ingrese en las cajas de texto los guarde en mysql.
¿Ayuda con respecto a qué? ¿Con la conexión?¿Con el código? 🙂
Es en la parte del codigo
Adodc1.Recordset
.Update
mensaje = MsgBox(«El alumno ha sido guardado exitosamente»)
matricula.Visible = True
nombre.Visible = True
ap_paterno.Visible = True
ap_materno.Visible = True
_____________________
Tambien tengo duda en si es correcto hacer la conexion del ODBC y poner codigo en los botones?