Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/08/2012, 11:42
pcid
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años, 7 meses
Puntos: 16
Respuesta: Consulta a MySQL por medio de boton

Pues a ver...

Te lo digo por pasos a ver si consigo darme a entender.

1. Descarga de drivers ODBC de MySQL si aún no se tienen.
Link: http://dev.mysql.com/downloads/connector/odbc/

1.1 Instalarlo

2. Crear ODBC hacia la base de datos MySQL sin olvidar el nombre que se la ponga.

3. En el proyecto de Visual Basic:
Agregar la referencia a "Microsoft Activex Data Objects 8.0 Library" a través del menú Project/References.

4. Vale... ahora, como usarlo.

Para hacer una prueba he creado dos tablas en MySQL que obedecen a este script:
Código MySQL:
Ver original
  1. CREATE TABLE  fdw_example5_pais (
  2.   Nombre varchar(100) NOT NULL,
  3.   PRIMARY KEY (Id_Pais)
  4.  
  5.  
  6. CREATE TABLE  fdw_example5_ciudad (
  7.   Id_Ciudad int(10) unsigned NOT NULL AUTO_INCREMENT,
  8.   Nombre varchar(100) NOT NULL,
  9.   Id_Pais int(10) NOT NULL,
  10.   PRIMARY KEY (Id_Ciudad)
  11.  
  12. insert into fdw_example5_pais (Nombre) values ('Estados Unidos'), ('España');
  13. insert into fdw_example5_ciudad (Id_Pais, Nombre) values (1, 'Washington'), (1, 'Nueva York'), (2, 'Madrid'), (2, 'Barcelona'), (2, 'Teruel');

He creado un ODBC que conecta a la base de datos que se llama "MYSQL_FOROSDELWEB".

En un formulario vacío de VB, he agregado un combobox que se llama "Combo1".

Y he puesto este código:

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Private Const C_ODBC = "MYSQL_FOROSDELWEB"
  4.  
  5.  
  6. Private Sub Init_Values()
  7. Dim Cn As ADODB.Connection
  8. Dim RS As ADODB.Recordset
  9. Dim Qry As String
  10.  
  11.     Set Cn = New ADODB.Connection
  12.     Cn.ConnectionString = C_ODBC
  13.     Cn.Open
  14.    
  15.     Qry = "select Id_Pais, Nombre from fdw_example5_pais order by Nombre"
  16.     Set RS = Cn.Execute(Qry)
  17.     Combo1.Clear
  18.     Do While Not RS.EOF
  19.         Combo1.AddItem RS.Fields(1).Value
  20.         Combo1.ItemData(Combo1.ListCount - 1) = RS.Fields(0).Value
  21.         RS.MoveNext
  22.     Loop
  23.     RS.Close
  24.     Set RS = Nothing
  25.    
  26.     Cn.Close
  27.     Set Cn = Nothing
  28. End Sub
  29.  
  30. Private Sub Form_Load()
  31.     Init_Values
  32. End Sub

Con esto he conseguido conectar a la base de datos MySQL, hacer una consulta a la tabla de países de este ejemplo y meterlos dentro de un combobox.

Con lo que mencionas de agregar un data grid con un checkbox en la primera columna, no recuerdo si los OCX que vienen con Visual Basic 6 te dan chance a hacerlo. Yo lo hacía pero con un OCX de pago.

Talvez te puede vale utilizar un listbox. Los listbox tienen una propiedad llamada "Style" que si la pones en valor "1" se convierte en una lista de selección.

Para saber si un item está seleccionado o no utilizas "[LISTA].selected([indice]]" para conseguir un valor falso o verdadero para saber si esta o no está seleccionado.

Para cargar, modificar, limpiar, etc. items de un listbox, se utilizan los mismos metódos que con un combobox.


Lo que mencionas de que cuando den click en un combobox se desplieguen datos en un grid, pues lo haces con el evento Click del combobox. Para saber que item es el "clickado" utilizas algo como Combo1.ListIndex. Si esto es igual a "-1" entonces no hay item seleccionado. No pierdas de vista que el índice del ítem en el combobox no tiene por qué coincidir siempre con el ID de la tabla de la base de datos. En el ejemplo utilicé una propiedad del item llamada "itemdata". Para conocer -en mi ejemplo- el ID de la base de datos del país seleccionado en el combobox podrías poner una función como esta:

Código vb:
Ver original
  1. Function getSelectedCountryId()
  2.     If Combo1.ListIndex > -1 Then getSelectedCountryId = -1: Exit Function
  3.     getSelectedCountryId = Combo1.ItemData(Combo1.ListIndex)
  4. End Function


Y bueno... siempre me acusan de dar explicaciones muy largas...

Espero haberte ayudado en algo.

Si tienes más dudas, o dudas sobre mi respuesta, pues por aquí estaré.

¡Saludos!

Última edición por pcid; 30/08/2012 a las 11:53