SoloCodigo
		Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: RUBEN2004 en Lunes 24 de Noviembre de 2003, 20:53
		
			
			- 
				el problema que tengo lo describo: 
 tengo un form con 13 cajas de texto y 5 option boton cada una de
 ellas son
 cargadas por los campos declarados en el recordset correspondiente a
 CPU...
 cuyo codigo es 1980, pero cuando no es CPU, es TECLADO, REGULADOR,
 MOUSE,
 etc... y ese es otro codigo, por lo tanto el filtro que carga el form
 es el
 codigo, que para CPU es 1980 y para los otros dispositivos son otros
 numeros.... por ejemplo MOUSE el codigo es 6524... cuando en la carga
 de
 las cajas de textos el recordset pasa por disco duro... lanza un
 error,
 porque no hay data de ese tipo para un MOUSE.... alli es cuando yo
 hago dos
 recordset: uno para CPU con todos sus componentes, ejemplo: ram,
 disco
 duro, tarjeta de red, cd-rom, etc. y otro para TODOS los demas
 dispositivos
 tales como, teclado, mouse, impresora, scarnner, etc... la pregunta
 es como
 muevo cada recordset segun sea el caso al desplazarme en la base de
 datos???.
 
 
 Ruben
 
 
 este es el codigo del form y del modulo....-
 
 '*** ESTE CODIGO VA EN EL MODULO ***
 Public Sub NavegarBD()
 Dim VarSQL As String
 Set RsBD = New Recordset
 
 VarSQL = "SELECT COD_CAT " & _
 "FROM cat " & _
 "ORDER BY COD_CAT"
 
 RsBD.Open VarSQL, Conectar1, adOpenForwardOnly, adLockReadOnly,
 adCmdText
 
 Do While Not RsBD.EOF ' **** TODOS EJEMPLO: TECLADO, MOUSE, ETC. ****
 RsBD.Close
 RsBD.Open "SELECT invequ.COD_CAT, invequ.ID_EQU, invequ.NRO_SER,
 ubica.DES_UBI, cat.DES_CAT, " & _
 "marca.DES_MAR, mode.DES_MOD, invequ.NRO_INV,
 invequ.NRO_GRU, " & _
 "invequ.OBS_EQU, invequ.TIP_STA " & _
 "FROM ubica INNER JOIN (mode INNER JOIN (marca INNER JOIN "
 & _
 "(cat INNER JOIN invequ ON cat.COD_CAT = invequ.COD_CAT) "
 & _
 "ON marca.COD_MAR = invequ.COD_MAR) ON mode.COD_MOD =
 invequ.COD_MOD) " & _
 "ON ubica.COD_UBI = invequ.COD_UBI " & _
 "ORDER BY invequ.NRO_SER", Conectar1, adOpenStatic,
 adLockOptimistic
 Exit Do
 Loop
 End Sub
 Public Sub NavegarBD2()
 Dim VarSQL As String
 Set RsBD = New Recordset
 
 VarSQL = "SELECT COD_CAT " & _
 "FROM cat " & _
 "ORDER BY COD_CAT"
 
 RsBD.Open VarSQL, Conectar1, adOpenForwardOnly, adLockReadOnly,
 adCmdText
 
 Do While Not RsBD.EOF ' **** SOLO CPU... COD_CAT = 1980 ****
 RsBD.Close
 RsBD.Open "SELECT invequ.COD_CAT, invequ.ID_EQU, invequ.NRO_SER,
 ubica.DES_UBI, cat.DES_CAT, " & _
 "marca.DES_MAR, mode.DES_MOD, invequ.NRO_INV,
 invequ.NRO_GRU, " & _
 "invequ.OBS_EQU, invequ.TIP_STA, tabcom.TAR_RED,
 tabcom.DIR_IP, " & _
 "tabcom.MIC_000, tabcom.CDR_000, tabcom.MEM_RAM,
 tabcom.COR_000, " & _
 "tabcom.CAP_DIS, tabcom.O_DIS " & _
 "FROM tabcom INNER JOIN (ubica INNER JOIN (mode INNER JOIN
 " & _
 "(marca INNER JOIN (cat INNER JOIN invequ ON cat.COD_CAT =
 invequ.COD_CAT) " & _
 "ON marca.COD_MAR = invequ.COD_MAR) ON mode.COD_MOD =
 invequ.COD_MOD) " & _
 "ON ubica.COD_UBI = invequ.COD_UBI) ON tabcom.NRO_SER =
 invequ.NRO_SER " & _
 "ORDER BY invequ.NRO_SER", Conectar1, adOpenStatic,
 adLockOptimistic
 Exit Do
 Loop
 End Sub
 
 
 '*** ESTE CODIGO VA EN FORM ***
 Private Sub CargarCampos()
 Label22.Caption = RsBD(0)
 
 If Label22.Caption = 1980 Then ' CODIGO DE CATEGORIA PARA MOSTRAR EL
 CPU
 ' Y SUS COMPONENTES. EJEMPO: SERIAL,
 RAM, DISCO DURO, ETC.
 Frame5.Visible = True ' MUESTRA FRAME CON LAS CAJAS DE TEXTO
 Frame5.Enabled = True ' DE LOS COMPONENTES DEL CPU
 Frame11.Visible = False ' OCULTA UN FRAME CON UNA FIGURA
 Frame11.Enabled = False ' OCULTA UN FRAME CON UNA FIGURA
 NavegarBD2 ' AQUI SEGUN YO... CARGO EL OTRO
 RECORDSET
 ' PERO NO ME PERMITE SEGUIR EXPLORANDO
 LA
 ' BASE DE DATOS... LA PREGUNTA ES COMO
 ' MOVERME EN LA BASE DE DATOS
 Else ' MUESTRA TODAS LAS CATEGORIAS.
 EJEMPLO: TECLADO, MOUSE, ETC.
 Frame5.Visible = False ' OCULTA FRAME CON LAS CAJAS DE TEXTO
 Frame5.Enabled = False ' DE LOS COMPONENTES DEL CPU
 Frame11.Visible = True ' MUESTRA UN FRAME CON UNA FIGURA
 Frame11.Enabled = True ' MUESTRA UN FRAME CON UNA FIGURA
 End If
 
 Text6.Text = RsBD(1) & " " ' IDENTIFICACION
 Text1.Text = RsBD(2) & " " ' SERIAL
 Text7.Text = RsBD(3) & " " ' SECCIONAL
 Text8.Text = RsBD(4) & " " ' CATEGORIA
 Text9.Text = RsBD(5) & " " ' MARCA
 Text10.Text = RsBD(6) & " " ' MODELO
 Text3.Text = RsBD(7) & " " ' NUMERO DE INVENTARIO
 Text5.Text = RsBD(8) & " " ' GRUPO
 Text4.Text = RsBD(9) & " " ' OBSERVACIONES
 
 Select Case RsBD(10) ' ESTATUS
 Case "ACTIVO"
 Option1.Value = True
 Option1.BackColor = &HC000&
 Option2.BackColor = &H8000000F
 Option3.BackColor = &H8000000F
 Option4.BackColor = &H8000000F
 Case "DISPONIBLLE"
 Option2.Value = True
 Option2.BackColor = &HC000&
 Option1.BackColor = &H8000000F
 Option3.BackColor = &H8000000F
 Option4.BackColor = &H8000000F
 Case "DESINCORPORADO"
 Option3.Value = True
 Option3.BackColor = &HC0&
 Option1.BackColor = &H8000000F
 Option2.BackColor = &H8000000F
 Option4.BackColor = &H8000000F
 Case "EN REPARACION"
 Option4.Value = True
 Option4.BackColor = &HC0&
 Option3.BackColor = &H8000000F
 Option2.BackColor = &H8000000F
 Option1.BackColor = &H8000000F
 End Select
 
 If Frame5.Visible = True Then
 Frame5.Visible = True
 Frame5.Enabled = True
 Frame11.Visible = False
 Frame11.Enabled = False
 Select Case RsBD(11) ' RED
 Case "SI"
 Option6.Value = True
 Option6.BackColor = &HC000&
 Option5.BackColor = &H8000000F
 Case "NO"
 Option5.Value = True
 Option5.BackColor = &HC0&
 Option6.BackColor = &H8000000F
 End Select
 End If
 
 If Frame5.Visible = True Then
 Text11.Text = RsBD(12) & " " ' IP
 End If
 
 If Frame5.Visible = True Then
 Select Case RsBD(13) ' MICROFONO
 Case "SI"
 Option8.Value = True
 Option8.BackColor = &HC000&
 Option7.BackColor = &H8000000F
 Case "NO"
 Option7.Value = True
 Option7.BackColor = &HC0&
 Option8.BackColor = &H8000000F
 End Select
 End If
 
 If Frame5.Visible = True Then
 Select Case RsBD(14) ' CD ROM
 Case "SI"
 Option12.Value = True
 Option12.BackColor = &HC000&
 Option11.BackColor = &H8000000F
 Case "NO"
 Option11.Value = True
 Option11.BackColor = &HC0&
 Option12.BackColor = &H8000000F
 End Select
 End If
 
 If Frame5.Visible = True Then
 Text12.Text = RsBD(15) & " " ' RAM
 End If
 
 If Frame5.Visible = True Then
 Select Case RsBD(16) ' CORNETAS
 Case "SI"
 Option10.Value = True
 Option10.BackColor = &HC000&
 Option9.BackColor = &H8000000F
 Case "NO"
 Option9.Value = True
 Option9.BackColor = &HC0&
 Option10.BackColor = &H8000000F
 End Select
 End If
 
 If Frame5.Visible = True Then
 Text13.Text = RsBD(17) & " " ' DISCO DURO
 End If
 
 If Frame5.Visible = True Then
 Text14.Text = RsBD(18) & " " ' OTRO DISPOSITIVO
 End If
 End Sub
- 
				Hola RUBEN2004.
 
 No he examinado a fondo el código que envías ni la lógica de tu aplicación, pero así a simple vista, el problema puede ser que siempre estás utilizando la misma variable recordset  (rsBD)  para obtener tus registros de la bd, con lo cual, lógicamente sólo vas a tener un recordset y no dos como tu pretendes. Si quieres manejar a la vez dos recordsets, utiliza dos variables.
 
 De todas formas, y repito que así a simple vista, debe haber otras formas más sencillas de hacer lo que quieres. Por ejemplo, las uniones de las tablas que utilizas, entre otras cosas provocan una consulta muy pesada. Te compensa utilizar varios recordsets...
 
 Suerte.