• Miércoles 8 de Mayo de 2024, 04:16

Autor Tema:  Listbox  (Leído 1204 veces)

Kiyuu

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Listbox
« en: Lunes 10 de Abril de 2006, 12:55 »
0
Hola a TODOS. A ver si me echais un cable.

Lo que pido es muy sencillo. Tengo un list box que se carga de informacion de una base de datos acces con ADO correspodiente al Campo1 de esa base de datos.

Mi pregunta es bien sencilla. Quiero crear un TextBox al lado de esa List Box y que cuando se selecione un Item de la ListaBox , en el TextBox quede reflejado el Campo2 de la misma base de datos y de ese registro.

Un saludo.

Shiquilla

  • Miembro MUY activo
  • ***
  • Mensajes: 188
  • Nacionalidad: es
    • Ver Perfil
    • http://www.songesoft.com
Re: Listbox
« Respuesta #1 en: Lunes 10 de Abril de 2006, 19:18 »
0
Al item que agregues a la lista tienes que ponerle el ID que tienes en base de datos, esto se hace con esta linea:

Lista.ItemData(Lista.NewIndex) = IIf(Not IsNull(loRS!nCodigo), loRS!nCodigo, 0)

Luego, para saber en dónde ha clickado el usuario, sería recoger el código que ha seleccionado y hacer la SELECT correspondiente:

lidCodigo = Lista.ItemData(Lista.ListIndex)


Te paso un ejemplo

Código: Text
  1. Option Explicit
  2. Private goConexion As ADODB.Connection
  3. Private Const gsCadenaConexion = "PROVIDER=SQLOLEDB;DATA SOURCE=(local);DATABASE=BaseDeDatos;UID=sa;PWD="
  4.  
  5. Private Sub Form_Load()
  6.     msCargarLista
  7. End Sub
  8.  
  9. Public Property Get goBD() As Connection
  10.     
  11. Dim lsCadenaConexion As String
  12.     
  13.     lsCadenaConexion = gsCadenaConexion
  14.     If goConexion Is Nothing Then
  15.         Set goConexion = New ADODB.Connection
  16.         goConexion.Open lsCadenaConexion
  17.     Else
  18.         If goConexion.State = 0 Then goConexion.Open lsCadenaConexion
  19.     End If
  20.     Set goBD = goConexion
  21.     
  22. End Property
  23.  
  24. Private Sub msCargarLista()
  25. Dim loItem As ListBox
  26. Dim lsSQL As String
  27. Dim loRS As Recordset
  28.  
  29.     Lista.Clear
  30.  
  31.     lsSQL = "SELECT * FROM Empresas"
  32.     Set loRS = goBD.Execute(lsSQL)
  33.     While Not loRS.EOF
  34.         Lista.AddItem IIf(Not IsNull(loRS!sNombre), loRS!sNombre, "")
  35.         Lista.ItemData(Lista.NewIndex) = IIf(Not IsNull(loRS!nCodigo), loRS!nCodigo, 0)
  36.         loRS.MoveNext
  37.     Wend
  38.     loRS.Close
  39.     Set loRS = Nothing
  40.  
  41. End Sub
  42.  
  43. Private Sub Lista_Click()
  44. Dim lidCodigo As Long
  45. Dim lsSQL As String
  46. Dim loRS As Recordset
  47.     Text1.Text = ""
  48.     
  49.     If Lista.ListIndex <> -1 Then
  50.         lidCodigo = Lista.ItemData(Lista.ListIndex)
  51.         
  52.         lsSQL = "SELECT * FROM Empresas WHERE nCodigo = " & lidCodigo
  53.         Set loRS = goBD.Execute(lsSQL)
  54.         If Not loRS.EOF Then
  55.             Text1.Text = IIf(Not IsNull(loRS!sDireccion), loRS!sDireccion, "")
  56.         End If
  57.         loRS.Close
  58.         Set loRS = Nothing
  59.         
  60.     End If
  61.     
  62. End Sub
  63.  

Saludos,
« §hÿqµïllæ »