
problemon con combos anidados
Publicado por Emilio (3 intervenciones) el 23/04/2008 15:49:32
Hola, mas o menos resuelvo el tema de conectar varios combos, pero me da un error que no consigo solucionar. a ver tengo tres combos que pretendo que funcionen del modo selecciono un valor del primero y los relacionados del segundo combo que aparezcan y del tercero tb. Bien, la primera vez funciona me carga los datos del primer valor en el primer combo, y los otros en los otros dos combos, si interactuo con el segundo combo me cambia en el tercero, pero si cambio el valor del primer combo me "casca" el codigo. me vacio el recordset. intente hacer una pequeña trampa rellenado de nuevo el recordset, pero en algun puñetero sitio no se donde ni como, me carga el recordset ¡¡vamos que no encuentro el fallo!!. esta seria la primera parte del codigo ya que si me funcionase seguiria con los siguientes combos de la aplicacion, pero no puedo.
meto el codigo.
Option Explicit
Private rstrans, rsector, rsacti As DAO.RecordSet
Private basededatos As DAO.Database
Private trans As Integer
Private Sub CboTransf_Change()
Dim num As Integer
Dim st As String
rstrans.MoveFirst
rstrans.Move CboTransf.ListIndex
trans = rstrans("cod_transf") 'comun
st = "SELECT AUX_SECTOR.cod_sector, AUX_SECTOR.sector FROM AUX_SECTOR " & _
"WHERE (((AUX_SECTOR.cod_transf) = " & trans & "))"
Set rsector = basededatos.OpenRecordset(st) 'comun
rsector.MoveLast
rsector.MoveFirst
CboSector.Clear
Do Until rsector.EOF
CboSector.AddItem rsector("sector")
rsector.MoveNext
Loop
CboSector.ListIndex = 0
End Sub
Private Sub CboSector_Change()
Dim st As String
Dim num As Integer
st = "SELECT AUX_SECTOR.cod_sector, AUX_SECTOR.sector FROM AUX_SECTOR " & _
"WHERE (((AUX_SECTOR.cod_transf) = " & trans & "))"
Set rsector = basededatos.OpenRecordset(st) 'comun
rsector.MoveLast
rsector.MoveFirst
rsector.Move CboSector.ListIndex
num = rsector("cod_sector") ****** AQUI ME CASCA CUANDO CAMBIO EL VALOR DEL COMBO 1*************
st = "SELECT AUX_ACTIVIDADES.cod_act, AUX_ACTIVIDADES.act_principal FROM AUX_ACTIVIDADES " & _
"WHERE (((AUX_ACTIVIDADES.cod_sector)= " & num & "))"
Set rsacti = basededatos.OpenRecordset(st) 'comun
rsacti.MoveLast
rsacti.MoveFirst
CboActi.Clear
Do Until rsacti.EOF
CboActi.AddItem rsacti("Act_Principal")
rsacti.MoveNext
Loop
CboActi.ListIndex = 0
End Sub
Private Sub CboActi_Change()
End Sub
Private Sub Salir_Click()
End
End Sub
Private Sub UserForm_Initialize()
Dim st As String
Set basededatos = Workspaces(0).OpenDatabase("C:SIFIempresas2000.mdb", False)
'INICIALIZA LOS COMBOS
'1.combo transformacion
st = "select aux_transformacion.* from aux_transformacion"
Set rstrans = basededatos.OpenRecordset(st)
rstrans.MoveFirst
CboTransf.Clear
Do Until rstrans.EOF
CboTransf.AddItem rstrans("transformacion")
rstrans.MoveNext
Loop
CboTransf.ListIndex = 0
End Sub
meto el codigo.
Option Explicit
Private rstrans, rsector, rsacti As DAO.RecordSet
Private basededatos As DAO.Database
Private trans As Integer
Private Sub CboTransf_Change()
Dim num As Integer
Dim st As String
rstrans.MoveFirst
rstrans.Move CboTransf.ListIndex
trans = rstrans("cod_transf") 'comun
st = "SELECT AUX_SECTOR.cod_sector, AUX_SECTOR.sector FROM AUX_SECTOR " & _
"WHERE (((AUX_SECTOR.cod_transf) = " & trans & "))"
Set rsector = basededatos.OpenRecordset(st) 'comun
rsector.MoveLast
rsector.MoveFirst
CboSector.Clear
Do Until rsector.EOF
CboSector.AddItem rsector("sector")
rsector.MoveNext
Loop
CboSector.ListIndex = 0
End Sub
Private Sub CboSector_Change()
Dim st As String
Dim num As Integer
st = "SELECT AUX_SECTOR.cod_sector, AUX_SECTOR.sector FROM AUX_SECTOR " & _
"WHERE (((AUX_SECTOR.cod_transf) = " & trans & "))"
Set rsector = basededatos.OpenRecordset(st) 'comun
rsector.MoveLast
rsector.MoveFirst
rsector.Move CboSector.ListIndex
num = rsector("cod_sector") ****** AQUI ME CASCA CUANDO CAMBIO EL VALOR DEL COMBO 1*************
st = "SELECT AUX_ACTIVIDADES.cod_act, AUX_ACTIVIDADES.act_principal FROM AUX_ACTIVIDADES " & _
"WHERE (((AUX_ACTIVIDADES.cod_sector)= " & num & "))"
Set rsacti = basededatos.OpenRecordset(st) 'comun
rsacti.MoveLast
rsacti.MoveFirst
CboActi.Clear
Do Until rsacti.EOF
CboActi.AddItem rsacti("Act_Principal")
rsacti.MoveNext
Loop
CboActi.ListIndex = 0
End Sub
Private Sub CboActi_Change()
End Sub
Private Sub Salir_Click()
End
End Sub
Private Sub UserForm_Initialize()
Dim st As String
Set basededatos = Workspaces(0).OpenDatabase("C:SIFIempresas2000.mdb", False)
'INICIALIZA LOS COMBOS
'1.combo transformacion
st = "select aux_transformacion.* from aux_transformacion"
Set rstrans = basededatos.OpenRecordset(st)
rstrans.MoveFirst
CboTransf.Clear
Do Until rstrans.EOF
CboTransf.AddItem rstrans("transformacion")
rstrans.MoveNext
Loop
CboTransf.ListIndex = 0
End Sub
Valora esta pregunta


0