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

urente!! repeticion de datos combo

Estas en el tema de urente!! repeticion de datos combo en el foro de Visual Basic clásico en Foros del Web. hola bueno tengo el siguiente problema, gracias al profesor tube que cambiar todas mis tabalas y ahora tengo los datos que antes tenia en 1 ...

  #1 (permalink)  
Antiguo 14/06/2010, 00:40
 
Fecha de Ingreso: noviembre-2009
Mensajes: 315
Antigüedad: 14 años, 5 meses
Puntos: 0
Exclamación urente!! repeticion de datos combo

hola bueno tengo el siguiente problema, gracias al profesor tube que cambiar todas mis tabalas y ahora tengo los datos que antes tenia en 1 tabla en 2 o 3, la cosa esque lore hacer un codigo que llene los combos, pero si el nombre se repite este tambien lo repite en la lista del combo, eso es lo que quiero evitar y no se como.
gracias por la ayuda, el codigo:
Código vb:
Ver original
  1. login.SQL = "SELECT     COUNT(cod_r) FROM         solicitar "
  2. login.rst.Open login.SQL, login.cnn, adOpenDynamic, adLockOptimistic
  3. login.est = True
  4. X = login.rst.Fields(0)
  5. login.SQL = "SELECT DISTINCT * FROM solicitar "
  6. login.rst.Open login.SQL, login.cnn, adOpenDynamic, adLockOptimistic
  7. login.est = True
  8. Combo4.Clear
  9. Combo5.Clear
  10. Combo6.Clear
  11. Combo7.Clear
  12. Combo4.AddItem ""
  13. Combo5.AddItem ""
  14. Combo6.AddItem ""
  15. Combo7.AddItem ""
  16. For I = 0 To X - 1
  17.                  
  18. login.cod_r = login.rst.Fields("cod_r")
  19. login.cod_f = login.rst.Fields("cod_f")
  20. Combo4.AddItem login.rst("cod_r")
  21. login.rst.MoveNext
  22.                        
  23.                    
  24. login.SQL = "SELECT DISTINCT * FROM funcionario where cod_f ='" & login.cod_f & "'  "
  25. login.rst1.Open login.SQL, login.cnn, adOpenDynamic, adLockOptimistic
  26.                                    
  27. Combo5.AddItem login.rst1("sucursal")
  28. Combo6.AddItem login.rst1("depto")
  29. Combo7.AddItem login.rst1("nombre")
  30. login.rst1.Close
  31. Next

pd: si me pueden ayudar a mejor el codigo estaria muuuuuuy agradecido
pd2: tengo que llenar unos listbox con informacion igual como lo que intente con el codigo de arriba, si pueden ayudarme con eso tambien se los agradecerias
  #2 (permalink)  
Antiguo 14/06/2010, 03:14
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: urente!! repeticion de datos combo

Hola

Mirandolo solo un poco por encima, me parece rara la SQL "SELECT DISTINCT *", si la tabla tiene más de un campo, al poner distinct * no se lo que te cogerá, porque no pruebas a poner el campo que quieres cargar en cada combo, de esa manera no se deverian de repetir los valores, es decir, algo como:

Cita:
SELECT DISTINCT nombre from...
--Saludos--
  #3 (permalink)  
Antiguo 14/06/2010, 08:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 315
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: urente!! repeticion de datos combo

EL PROBLEMA ES QUE LA 2ª CONSULTA SE HACE POR CADA "COD_r" QUE SE OBTIENE DE LA PRIMERA CONSULTA

ESPERO SE ENTIENDA
  #4 (permalink)  
Antiguo 14/06/2010, 09:53
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

Pues... llena el Primer Combo con el Dato que quieres llenar y el segudno Combo con los datos... pero extrayendo datos del primer Combo... el primer combo ni siquiera lo muestres solo para que te almacene los datos... para llenar el 2do haz un FOR del priemro combo y listo ya tienes tu consulta...
  #5 (permalink)  
Antiguo 14/06/2010, 10:28
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 6 meses
Puntos: 47
Respuesta: urente!! repeticion de datos combo

Saludos!!!

Yo lo haria asi:

En el evento Load

Código vb:
Ver original
  1. 'LIMPIAMOS LOS COMBOS
  2. Combo4.Clear
  3. Combo5.Clear
  4. Combo6.Clear
  5. Combo7.Clear
  6.  
  7. 'CONECTAMOS EL QUERY
  8. strSQL = "SELECT DISTINCT COD_R FROM SOLICITAR "
  9. rsLogin.Open strSQL, cnn, adOpenDynamic, adLockOptimistic
  10.  
  11. 'CARGAMOS EL COMBO 4
  12. if rsLogin.eof=false then
  13. do while not rsLogin.eof = true
  14. Combo4.AddItem rsLogin!COD_R
  15. rsLogin.movenext
  16. loop
  17. end if

Ahora para cargar los demas combos, en el evento CLICK del COMBO 4:

Código vb:
Ver original
  1. strSQL = "SELECT *  from funcionario where COD_R  ='" & COMBO4.TEXT & "'"
  2. rsLogin.Open strSQL, cnn, adOpenDynamic, adLockOptimistic
  3.                                    
  4. Combo5.AddItem srLogin!sucursal
  5. Combo6.AddItem srLogin!depto
  6. Combo7.AddItem srLogin!nombre

NOTA: en tu codigo la segunda consulta es con el campo: "COD_F ", el COMBO 4 lo cargas con el campo: "COD_R", son campos distintos... si la consulta va con el campo: "COD_F":

Código vb:
Ver original
  1. 'PRIMERO OBTENEMOS EL CAMPO "COD_F" CORRESPONDIENTE AL REGISTRO SELECCIONADO
  2. strSQL = "SELECT DISTINCT COD_F FROM SOLICITAR WHERE COD_R='" & COMBO4.TEXT & "'"
  3. rsLogin.Open strSQL, cnn, adOpenDynamic, adLockOptimistic
  4.  
  5. if rsLogin.eof=false then
  6. strSQL = "SELECT *  from funcionario where COD_F  ='" & rsLogin!COD_F & "'"
  7. rsLogin1.Open strSQL, cnn, adOpenDynamic, adLockOptimistic
  8.  
  9. if rsLogin1.eof=false then
  10. do hile not rsLogin1.eof=true                                    
  11. Combo5.AddItem rsLogin1!sucursal
  12. Combo6.AddItem rsLogin1!depto
  13. Combo7.AddItem rsLogin1!nombre
  14. rsLogin1.movenext
  15. loop
  16. end if

Prueba a ver!!!

Última edición por lokoman; 14/06/2010 a las 10:37
  #6 (permalink)  
Antiguo 14/06/2010, 14:40
 
Fecha de Ingreso: noviembre-2009
Mensajes: 315
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: urente!! repeticion de datos combo

esque el usuario puede usar solo el combo 7 por ejemplo, sin tocar el resto de los combos, voy a probar igual gracias, son filtros
  #7 (permalink)  
Antiguo 14/06/2010, 16:59
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

Yo tengo el mismo problema solo que lo hice con recordset

alguien me sabe decir como hacer para que no se repitan los nombres en el combobox?
Código vb:
Ver original
  1. While Not dsArticulos.Recordset.EOF
  2.             CboLaboratorio.AddItem (dsArticulos.Recordset!laboratorio)
  3.       dsArticulos.Recordset.MoveNext
  4. Wend


graciassss
  #8 (permalink)  
Antiguo 15/06/2010, 08:08
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

ya me confundieron... la solucion! es la consulta... que otro limitante podria haber? puedes mostrarnos graficamente cual es tu problema en realidad???... y como quisieras que trabaje??? Saludos
  #9 (permalink)  
Antiguo 16/06/2010, 07:41
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 6 meses
Puntos: 47
Respuesta: urente!! repeticion de datos combo

Estoy de acuerdo con -Rommel-... que es lo que quieres presentar al usuario?
  #10 (permalink)  
Antiguo 16/06/2010, 07:58
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Respuesta: urente!! repeticion de datos combo

Cita:
Iniciado por gasafonso Ver Mensaje
Yo tengo el mismo problema solo que lo hice con recordset

alguien me sabe decir como hacer para que no se repitan los nombres en el combobox?
Código vb:
Ver original
  1. While Not dsArticulos.Recordset.EOF
  2.             CboLaboratorio.AddItem (dsArticulos.Recordset!laboratorio)
  3.       dsArticulos.Recordset.MoveNext
  4. Wend


graciassss
Mi estimado lo tienes facil, para llegar a este punto, tuviste que hacer una consulta SQL, haz lo que te estan diciendo los colegas. Si no deseas que se repitan los datos usa la clausula DISTINCT y/o GROUP BY
  #11 (permalink)  
Antiguo 16/06/2010, 17:25
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

pero no se como hacerlo, por que yo no se cual "laboratorio" va a estar repetido


garcias
  #12 (permalink)  
Antiguo 17/06/2010, 07:45
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Respuesta: urente!! repeticion de datos combo

Antes de llegar a ese codigo que pones, pusiste una sentencia SQL verdad? Si es asi es ahi donde debes usar la clausula DISTINCT
  #13 (permalink)  
Antiguo 17/06/2010, 17:34
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

No , no tengo una SQL lo tengo con un control DATA
  #14 (permalink)  
Antiguo 17/06/2010, 19:07
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: urente!! repeticion de datos combo

gasafonso
Entonces cambia la consulta que pusiste dentro de tu control data, busca en las propiedades de tu control data en una de ellas esta tu consulta
  #15 (permalink)  
Antiguo 20/06/2010, 13:32
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

con eso carga todos los datos del data.recordset.field

NO HAY NINGUNA SQL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  #16 (permalink)  
Antiguo 21/06/2010, 09:59
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 6 meses
Puntos: 47
Respuesta: urente!! repeticion de datos combo

gasafonso:
Que tienes en el RecordSource de tu control?
  #17 (permalink)  
Antiguo 21/06/2010, 15:50
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

el nombre de la tabla TbArticulos tengo en el recordsource del control "DATA"
  #18 (permalink)  
Antiguo 22/06/2010, 13:17
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

En una pestaña de las propiedades de ese control DATA esta especificada la consulta que llena tu combo... esa consulta tienes que cambiarla... sino hay dentro de ese CONTROL... entonces esta dentro del codigo de tu proyecto...
  #19 (permalink)  
Antiguo 22/06/2010, 17:37
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

EYYYYY muchachosssssssss, NO TENGO NINGUNA S Q L !!!!!!!!!!!!!!!!!!!!!!!!!!!!

esta asociado a una campo de una tabla y trae todos los datos de ese campo
  #20 (permalink)  
Antiguo 23/06/2010, 01:25
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: urente!! repeticion de datos combo

Hola

En lugar de asociarlo a una tabla, asócialo a una consulta SQL, en la propiedad CommandType selecciona adcmunknown y en el RecordSource pones la Sentencia Select que quieras.

--Saludos--
  #21 (permalink)  
Antiguo 23/06/2010, 10:30
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

ok ok...
hubieras empezado por decir eso... entonces todos los elementos de tu COMBO.. metelo a una lista... y ahi haz el algoritmo de busqeuda y eliminacion de repetidos... luego que eliminas los repetidos... limpias tu control COMBO y de ahi agregas 1 por 1 los elementos de tu Lista a tu COmbo... si queires te ayudamos con el algoritmos pero creo que eso si lo puedes hacer tu...

algo asi???.. puedes manipular tu COMBO verdad???
  #22 (permalink)  
Antiguo 23/06/2010, 18:02
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 6 meses
Puntos: 47
Respuesta: urente!! repeticion de datos combo

Cita:
Iniciado por gasafonso Ver Mensaje
No , no tengo una SQL lo tengo con un control DATA
Utiliza el control ADO DATA CONTROL, es mas versatil que el DATA.
  #23 (permalink)  
Antiguo 25/06/2010, 17:30
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

Cita:
Iniciado por -rommel_ Ver Mensaje
ok ok...
hubieras empezado por decir eso... entonces todos los elementos de tu COMBO.. metelo a una lista... y ahi haz el algoritmo de busqeuda y eliminacion de repetidos... luego que eliminas los repetidos... limpias tu control COMBO y de ahi agregas 1 por 1 los elementos de tu Lista a tu COmbo... si queires te ayudamos con el algoritmos pero creo que eso si lo puedes hacer tu...

algo asi???.. puedes manipular tu COMBO verdad???
y esto como se hace ?

yo no tengo ni idea


gracias
  #24 (permalink)  
Antiguo 26/06/2010, 08:37
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Respuesta: urente!! repeticion de datos combo

para hacer lo que deseas, se me ocurre algo que no es optimo pero al menos funcionaria.


Código vb:
Ver original
  1. While Not dsArticulos.Recordset.EOF
  2.                   if  (ItemRepetido(dsArticulos.Recordset!laboratorio))
  3.                     CboLaboratorio.AddItem (dsArticulos.Recordset!laboratorio)
  4.             dsArticulos.Recordset.MoveNext
  5.       Wend
  6.  
  7.  
  8.  
  9. private sub ItemRepetido(laboratorio) boolean
  10. {
  11. ...
  12.       CONT=0;
  13.       While Not dsArticulos.Recordset.EOF
  14.                   if (dsArticulos.Recordset!laboratorio == laboratorio)
  15.                       CONT=CONT+1;
  16.             dsArticulos.Recordset.MoveNext
  17.       Wend
  18.  
  19.      if (CONT>1)
  20.         ItemRepetido=false;
  21.      else
  22.         ItemRepetido=true;
  23. }

Es un tipo de pseudocodigo que la verdad ya no se ni en que lenguaje lo puse
  #25 (permalink)  
Antiguo 28/06/2010, 08:24
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

jejej... pues en realidad... yo tampoco se que en que Leng... pero si tiene logica... lo caso es que CARNERo lo pueda probar...
La logica es: "Recorrer uno x uno el Recordet del COMBO1, y coger el dato... Para ese dato recorrer de Nuevo el Recordset del COMBO1 preguntando si cada dato del Segundo Recordset es igual al Dato del primer recordset... si hasta el final del recordet es falso... entonces en el primer recordset se adiciona al combo el Dato tomado al inicio"... NO SE SI ME ENTIENDEN jajaja..
  #26 (permalink)  
Antiguo 28/06/2010, 09:31
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Respuesta: urente!! repeticion de datos combo

yo si te entiendo , espero que alguien lo pase a visual basic o el mismo gasafonso en caso de que lo haga, postee la solucion
  #27 (permalink)  
Antiguo 30/06/2010, 10:21
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

intente pasarlo a V b 6 pero no , estoy enredado



POR FAVOR AYUDAAAAAAAAAAAAAAAAAAAAAAA
  #28 (permalink)  
Antiguo 01/07/2010, 01:18
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: urente!! repeticion de datos combo

Hola

Carga el control con una select en lugar de con una tabla, en la select incluye la clausula DISTINCT para que no repita valores y luego carga el combo. Lo puedes hacer desde código de la siguiente forma:

Código vb:
Ver original
  1. Private Sub Form_Load()
  2.  
  3.     Dim comando As String
  4.    
  5.     Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\prueba.mdb;Persist Security Info=False"
  6.     comando = "select DISTINCT(nombre) from Datos"
  7.     Adodc1.CommandType = adCmdUnknown
  8.     Adodc1.RecordSource = comando
  9.     Adodc1.Refresh
  10.    
  11.     While not Adodc1.EOF
  12.        combo1.additem adodc1.Recordset.Fields(0)
  13.        adodc1.Recordset.MoveNext
  14.     Wend
  15. End Sub

P.D.: En el ejemplo utilizo un control ADODC en lugar del DATA

--Saludos--
  #29 (permalink)  
Antiguo 01/07/2010, 17:58
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: urente!! repeticion de datos combo

Sos groso Insomnia !!!!!!!!!!!!!!!!!!


Para hacerlo con un data solo debo reeemplazar el adbc por el data no ?
  #30 (permalink)  
Antiguo 02/07/2010, 02:09
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: urente!! repeticion de datos combo

Hola

No si será exactamente lo mismo, es decir, no si si comparten las mismas propiedades, pero la idea es esa. De todas formas y si me permites un pequeño consejo te recomiendo sustituir toda la tecnologia DAO (que ha quedado obsoleta) por el ADO, que supongo que también estará obsoleta si lo comparamos con .NET, pero creo que es lo último que quedo en acceso a bd en VB6 .

--Saludos--

Etiquetas: combo
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 09:45.