Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

VB6.0 SP6 y MySQL

Estas en el tema de VB6.0 SP6 y MySQL en el foro de Visual Basic clásico en Foros del Web. Buenas Tardes amigos, Aqui recurro a ustedes despues de indagar fuertemente por internet y no conseguir solucion a mi problema. Espero que alguno de ustedes ...
  #1 (permalink)  
Antiguo 23/02/2010, 14:52
 
Fecha de Ingreso: enero-2007
Mensajes: 13
Antigüedad: 17 años, 11 meses
Puntos: 0
Pregunta VB6.0 SP6 y MySQL

Buenas Tardes amigos,

Aqui recurro a ustedes despues de indagar fuertemente por internet y no conseguir solucion a mi problema. Espero que alguno de ustedes me pueda ayudar :D

Les comento; en mi PC tengo instalado el WampServer 1.7.3 (mysql, apache, phpmyadmin) con el que sirvo mi pagina web, con su base de datos y todo.

Ahora necesito conectarme a esa base de datos desde VB6 y ni remota idea como hacerle :(

Mis datos: Server: localhost, User: root, pass: 123456, DB: sms
DB: tabla: send, Campos: id, tlf, msj, stad

Necesito conectarme desde visual a esa db consultar de la tabla "send" los registros que el campo "stad" sean igual a 0 y montarlos en un grid.

Esa aplicacion la tengo hecha con una db de access exactamente igual, y loq hago es con un timer cada 5 segundos pasar por un registro q "stad" sea igual a cero, cambiarlo a uno (1) y guardar, quiero hacer lo mismo pero con la db q mencione al principio de mysql.

Les Agradeceria un mundo que me puedan orientar en este caso plz ;)
  #2 (permalink)  
Antiguo 23/02/2010, 23:44
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: VB6.0 SP6 y MySQL

Lo primero que tienes que hacer es descargarte el control ODBC de la pagina de mysql.

El código para que te puedas conectar es:

Código vb:
Ver original
  1. Dim cn As ADODB.Connection
  2. Dim res As ADODB.Recordset
  3. Dim conexion As String
  4.  
  5. Private Sub Form_Load()
  6.    
  7.     Set cn = New ADODB.Connection
  8.     conexion = "driver={MySQL ODBC 3.51 Driver};" _
  9.                         & "SERVER=localhost;" _
  10.                         & "DATABASE=sms;" _
  11.                         & "UID=root;PWD=123456;OPTION=3"
  12.                            
  13.     cn.ConnectionString = conexion
  14.     cn.Open
  15.    
  16.     Set res = New ADODB.Recordset
  17.     With res
  18.         .ActiveConnection = cn
  19.         .CursorLocation = adUseClient
  20.         .CursorType = adOpenStatic
  21.         .LockType = adLockOptimistic
  22.     End With
  23.    
  24.     res.Open "SELECT id, tlf, msj, stad FROM send WHERE stad=0"
  25.     Set DataGrid1.DataSource = res
  26. End Sub

La otra parte ya la puedes hacer tú. Cualquier duda posteala...
__________________
En programación hay mil y un formas de hacer lo mismo...
  #3 (permalink)  
Antiguo 24/02/2010, 11:34
 
Fecha de Ingreso: enero-2007
Mensajes: 13
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: VB6.0 SP6 y MySQL

Muchas gracias amigo, la verdad me funciono perfecto, y logre cargar los datos.
No Obstante me declaro ignorante en esto. siempre he usado el controldata y esto es bastante diferente.

Espero me puedas continuar ayudando, te agradeceria mucho si ahora me puedes explicar, como hago para vincular con campos: por ejemplo yo hice esto despues del codigo que me dejastes del load del formulario:

Label1.Caption = res.Fields("id")
Text1.Text = res.Fields("tlf")
Text2.Text = res.Fields("msj")
Check1.Value = res.Fields("stad")

y bien, en los campos me salen los datos, PEEERO hice un boton que le puse:

Private Sub Command1_Click()
On Error GoTo fail
res.MoveNext

fail:
If Err.Number = "3021" Then
res.Requery
End If
End Sub

Esto hace que se mueva al siguiente registro, perfecto en el datagrid se ve que el registro se mueve, y cuando llega al ultimo que no consigue mas, se carga de nuevo y no da el error 3021 (H) jejeje ingenioso xD el problema esta que en los text no se mueve :(

Otra cosita si no es mucho exigir jejeje.. necesito es modificar el campo stad que carga en el check1 (la consulta carga solo los q valen cero (0)) que cuando tenga dicho registro activo, tildar el check y que lo guare (osea q el campo stad de ese registro se cambie a 1 en la db)

Gracias de antemano men.
  #4 (permalink)  
Antiguo 25/02/2010, 07:16
 
Fecha de Ingreso: enero-2007
Mensajes: 13
Antigüedad: 17 años, 11 meses
Puntos: 0
De acuerdo Respuesta: VB6.0 SP6 y MySQL

Bueno logre solucionar mi problema haciendo esto:

res.Fields("stad") = Check1.Value
res.MoveNext
If (res.RecordCount <> 0) Then
Label2.Caption = res.Fields("id")
Text1.Text = res.Fields("tlf")
Text2.Text = res.Fields("msj")
Check1.Value = res.Fields("stad")
Else
Label2.Caption = ""
Text1.Text = ""
Text2.Text = ""
Check1.Value = 0
End If

No se si sea la mejor practica pero funciona. Si tienen aguna sugerencia agradecido :)
  #5 (permalink)  
Antiguo 25/02/2010, 11:26
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: VB6.0 SP6 y MySQL

Luego del codigo del load puedes colocar lo siguiente que creo es la mejor manera de hacerlo ya que asocias la caja de texto al recorset así como al registro correspondiente, entonces tu code quedaría así:

Código vb:
Ver original
  1. Dim cn As ADODB.Connection
  2. Dim res As ADODB.Recordset
  3. Dim conexion As String
  4.  
  5. Private Sub Form_Load()
  6.    
  7.     Set cn = New ADODB.Connection
  8.     conexion = "driver={MySQL ODBC 3.51 Driver};" _
  9.                         & "SERVER=localhost;" _
  10.                         & "DATABASE=sms;" _
  11.                         & "UID=root;PWD=123456;OPTION=3"
  12.                            
  13.     cn.ConnectionString = conexion
  14.     cn.Open
  15.    
  16.     Set res = New ADODB.Recordset
  17.     With res
  18.         .ActiveConnection = cn
  19.         .CursorLocation = adUseClient
  20.         .CursorType = adOpenStatic
  21.         .LockType = adLockOptimistic
  22.     End With
  23.    
  24.     res.Open "SELECT id, tlf, msj, stad FROM send WHERE stad=0"
  25.     Set DataGrid1.DataSource = res
  26.    
  27.     Set Label1.DataSource = res
  28.     Label1.DataField = "id"
  29.    
  30.     Set Text1.DataSource = res
  31.     Text1.DataField = "tlf"
  32.    
  33.     Set Text2.DataSource = res
  34.     Text2.DataField = "msj"
  35.  
  36.     Set Check1.DataSource = res
  37.     Check1.DataField = "stad"
  38. End Sub

Y con los botones de navegación que has hecho, notarás que solo necesitas realizar el res.movenext o res.moveprevious y solo cambia el valor del control, ya sea el label, caja de texto o el check. Pruebalo y comentas los resultados
__________________
En programación hay mil y un formas de hacer lo mismo...
  #6 (permalink)  
Antiguo 05/05/2010, 21:27
Avatar de UID
UID
 
Fecha de Ingreso: febrero-2004
Ubicación: Villahermosa tabasco cent
Mensajes: 251
Antigüedad: 20 años, 10 meses
Puntos: 0
Respuesta: VB6.0 SP6 y MySQL

Hola :D La verdad gracias por esa respuesta... estoy aprendiendo a como usar mysql con visual basic.. yo estuve trabajando con access mucho tiempo pero pues ya se me medio olvido jajajaaja.. el punto es... estoy siguiendo el ejemplo que pusiste que por cierto muy bueno la verdad Entonces yo hice esto:

Código:
Dim cn As ADODB.Connection
Dim res As ADODB.Recordset
Dim conexion As String
 
Public Sub Conectando()
Set cn = New ADODB.Connection
    conexion = "driver={MySQL ODBC 5.1 Driver};" _
                        & "SERVER=localhost;" _
                        & "DATABASE=instrumentos;" _
                        & "UID=root;PWD=edno1982;OPTION=3"
                            
    cn.ConnectionString = conexion
    cn.Open
    
    Set res = New ADODB.Recordset
    With res
        .ActiveConnection = cn
        .CursorLocation = adUseClient
        .CursorType = adOpenStatic
        .LockType = adLockOptimistic
    End With
    
End Sub

Private Sub Command1_Click()

res.Close
res.Open "SELECT Nombre, Apellidos, Ficha, Contrato FROM usuarios  where Ficha=" + Text2.Text
 Set DataGrid1.DataSource = res
 
 End Sub

Private Sub Form_Load()
    Call Conectando
   
    res.Open "SELECT Nombre, Apellidos, Ficha, Contrato FROM usuarios"
    Set DataGrid1.DataSource = res


    
End Sub
En donde tengo el problema es en el boton:

Código:
Private Sub Command1_Click()

res.Close
res.Open "SELECT Nombre, Apellidos, Ficha, Contrato FROM usuarios  where Ficha=" + Text2.Text
 Set DataGrid1.DataSource = res
 
 End Sub
Aqui cuando pongo el numero de ficha en el text2.text ejemp: 419719 y si existe tal ficha me manda todos los datos al datagrid, el problema es cuando no existe la ficha me manda este error:

Que se desconoce la columna Text2 en clause where... como puedo solucionarlo?

Lo que se me ocurrio fue poner un On error Resume Next para que se salte el error pero ese no es el caso.. me gustaria que al escribir una ficha no existente me mandara el mensaje de .. No existe tal ficha... espero me ayuden y gracias de antemano.
__________________
http://www.xpresatelibre.com La Xpresion Al Maximo Nivel

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




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