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

Hola, aqui tengo el sig. codigo.

Estas en el tema de Hola, aqui tengo el sig. codigo. en el foro de Visual Basic clásico en Foros del Web. Hace lo sig. seleccionas en el combo1 las secciones e inmediatamente te aparece su localidad correspondiente en el combo2, por correspondiente me refiero a la ...
  #1 (permalink)  
Antiguo 20/11/2009, 18:44
 
Fecha de Ingreso: julio-2009
Mensajes: 26
Antigüedad: 14 años, 9 meses
Puntos: 0
Sonrisa Hola, aqui tengo el sig. codigo.

Hace lo sig. seleccionas en el combo1 las secciones e inmediatamente te aparece su localidad correspondiente en el combo2, por correspondiente me refiero a la que esta en el mismo renglon dentro de la tabla de access 2007, lo que no entiendo es porque cuando elijo la primera seccion que es en mi caso "319" no aparece en el combo2 su localidad que es "Mexicali", en todas las demas secciones al seleccionarlas del combo uno si aparece en el combo 2 su localidad sin tener que presionar mas nada, si me pudieran explicar por favor, yo creo que tiene que ver con el recordset, pero no estoy segura.


Option Explicit
'Declarar las variables

Dim sText As String
Dim lIndex As Long

Dim MiConexion As ADODB.Connection
Dim MiRecordset As ADODB.Recordset

Dim arreglocombo1() As String
Dim arreglocombo2() As String
Dim i As Integer
Dim ruta As String






Private Sub Form_Load()
Combo1.Clear
Combo2.Clear

i = 0

Set MiConexion = New ADODB.Connection
Set MiRecordset = New ADODB.Recordset

ruta = App.Path & "\bd1.mdb"

MiConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & ";Persist Security Info=False"
MiConexion.CursorLocation = adUseClient
MiConexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta
MiRecordset.Open "SELECT SECCION FROM LIMLOC_DTTO_SECC Where DISTRITO = 1 Order by SECCION", MiConexion, adOpenDynamic, adLockOptimistic

While Not MiRecordset.EOF
ReDim Preserve arreglocombo1(i)

Combo1.List(Combo1.ListIndex) = MiRecordset.Fields("SECCION")
arreglocombo1(i) = MiRecordset.Fields("SECCION")
MiRecordset.MoveNext
i = i + 1
Wend

MiRecordset.Close
MiConexion.Close

''''
'MiConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & ";Persist Security Info=False"
'MiConexion.CursorLocation = adUseClient
'MiConexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta
'MiRecordset.Open "SELECT SECCION FROM LIMLOC_DTTO_SECC Where DISTRITO = 1 Order by SECCION", MiConexion, adOpenDynamic, adLockOptimistic

'While Not MiRecordset.EOF
'Combo1.List(Combo1.ListIndex) = MiRecordset.Fields("SECCION")
'MiRecordset.MoveNext
'Wend

'MiRecordset.Close
'MiConexion.Close

''''

MiConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & ";Persist Security Info=False"
MiConexion.CursorLocation = adUseClient
MiConexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta
MiRecordset.Open "SELECT NOMBRE FROM LIMLOC_DTTO_SECC Where DISTRITO = 1 Order by SECCION", MiConexion, adOpenDynamic, adLockOptimistic

i = 0
While Not MiRecordset.EOF
ReDim Preserve arreglocombo2(i)
arreglocombo2(i) = MiRecordset.Fields("NOMBRE")
MiRecordset.MoveNext
i = i + 1
Wend

Private Sub Combo1_Click()
'LLenar las variables
sText = Combo1.Text
lIndex = Combo1.ListIndex

If (lIndex) Then

Combo2.List(Combo2.ListIndex) = Combo2.List(Combo1.ListIndex) & arreglocombo2(lIndex)

End If

End Sub

  #2 (permalink)  
Antiguo 21/11/2009, 04:04
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Hola, aqui tengo el sig. codigo.

Creo que el fallo está aqui:

If (lIndex) Then

Combo2.List(Combo2.ListIndex) = Combo2.List(Combo1.ListIndex) & arreglocombo2(lIndex)

End If

El primer valor del combo está en el index 0, así que con tu comparación no lo cargas.

Pon en todo caso:

If lIndex >-1 Then

Combo2.List(Combo2.ListIndex) = Combo2.List(Combo1.ListIndex) & arreglocombo2(lIndex)

End If

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 25/11/2009, 12:54
 
Fecha de Ingreso: julio-2009
Mensajes: 26
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Hola, aqui tengo el sig. codigo.

Aqui ya lo tengo corregido todo, lo que hace el codigo este es lo siguiente:

si seleccionas determinada seccion te devolvera solo el num_localidad y el nombre_localidad que corresponde con esta seccion ( que estan en el mismo renglon en la tabla de la b.d. access 2007), antes queria hacer esta relacion con datacombo pero no se deja ordenar ni siquiera con ordenacion burbuja, a lo mejor si se puede pero no me salio, y aqui esta el codigo:

Option Explicit
'Declarar las variables

Dim lIndex As Long

Dim MiConexion As ADODB.Connection
Dim MiRecordset As ADODB.Recordset

Dim arreglocombo1() As String
Dim arreglocombo2() As String
Dim i As Integer
Dim ruta As String


Private Sub Form_Load()
Combo1.Clear



Set MiConexion = New ADODB.Connection
Set MiRecordset = New ADODB.Recordset

ruta = App.Path & "\bd1.mdb"

MiConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & ";Persist Security Info=False"
MiConexion.CursorLocation = adUseClient
MiConexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta
MiRecordset.Open "SELECT SECCION FROM LIMLOC_DTTO_SECC Where DISTRITO = 1 Order by SECCION", MiConexion, adOpenDynamic, adLockOptimistic

i = 0

While Not MiRecordset.EOF
ReDim Preserve arreglocombo1(i)

Combo1.List(Combo1.ListIndex) = MiRecordset.Fields("SECCION")
arreglocombo1(i) = MiRecordset.Fields("SECCION")
MiRecordset.MoveNext
i = i + 1
Wend

MiRecordset.Close
MiConexion.Close

'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''

MiConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & ";Persist Security Info=False"
MiConexion.CursorLocation = adUseClient
MiConexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta
MiRecordset.Open "SELECT LOCALIDAD, NOMBRE FROM LIMLOC_DTTO_SECC Where DISTRITO = 1 Order by SECCION", MiConexion, adOpenDynamic, adLockOptimistic

'While Not MiRecordset.EOF
'With Combo1
'.AddItem MiRecordset.Collect("LOCALIDAD")
'.ItemData(.NewIndex) = MiRecordset.Collect("NOMBRE")
'End With
'MiRecordset.MoveNext
'Wend

'y para recuperar el numero:

'Dim numero As Long
'numero = Combo1.ItemData(Combo1.ListIndex)
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''
i = 0
While Not MiRecordset.EOF
ReDim Preserve arreglocombo2(i)
'Combo2.List(Combo1.ListIndex) = MiRecordset.Fields("LOCALIDAD") & MiRecordset.Fields("NOMBRE")
arreglocombo2(i) = MiRecordset.Fields("LOCALIDAD") & MiRecordset.Fields("NOMBRE")
MiRecordset.MoveNext
i = i + 1
Wend

End Sub

Private Sub Combo1_Click()
Combo2.Clear
lIndex = Combo1.ListIndex

Combo2.List(Combo2.ListIndex) = Combo2.List(Combo1.ListIndex) & arreglocombo2(lIndex)

'ListCount: sirve para indicar el número de elementos en la lista correspondiente
'ListIndex: proporciona el número de orden del elemento que se ha seleccionado; AddItem y RemoveItem permite agregar o eliminar elementos.
'List (n): obtiene el elemento cuyo número de orden está indicado con “n”.
'Text: consiste en una propiedad que muestra el texto de la parte Textbox del Combobox, la cual puede introducirse a través del teclado o ser una opción seleccionada, como vimos anteriormente.
'MsgBox "Seleccionado " & Combo2.List(Combo1.ListIndex) & " con indice " & lIndex

End Sub

''''GRACIAS por responder.
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 05:35.