Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Ayuda con ComboBox

Hola, primero que todo decir que he buscado algo en el foro relacionado y de momento no he encontrado nada.

Tengo una tabla ej. Paises con idPais (integer) y Pais (nvarchar)
Cuando voy a crear una ficha nueva de un usuario desplego en la forma un ComboBox (nada de controles DB) y leo todos los paises y se lo asigno a los items de ese combobox. Resumiendo, me queda un combobox con todos los paises.
Ahora, a la hora de crear el registro en la tabla clientes, esta tiene un campo que se llama idPais. Alli debo poner el id del pais seleccionado en el combobox.

Para eso normalmente yo busco en la tabla el nombre del pais y saco su Id y se lo asigno al cliente, muy bien.
Pero hay un problema, en caso de que halla 2 paises iguales (sean abiertos porque esto me sirve para otras tablas que si tienen nombres de articulos iguales pero no son los mismos) a la hora de buscar el pais puede que asigne al usuario el pais erroneo, no se si me entienden.

Pudiera poner en los items del combobox la cadena ej xx- Espana, y a la hora de poner el idPais al cliente buscar la xx y asignar ese valor, pero no me gusta que en el combobox esten los id.

Mi pregunta (al fin), puedo poner como especie de un campo oculto en los items del combobox a la hora de asignarlos de tal forma que yo sepa cuando escojo españa que es el id 72????

Espero haberme echo entender y muchas gracias.
saludos
Responder Con Cita
  #2  
Antiguo 04-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola paladincubano, yo utilizaría un StringList para llenar los Id.

En el momento en que llenas los datos en tu ComboBox

Código Delphi [-]
 sl: TStringList;
begin
  sl:=TStringList.Create;
  
  Query.First;
  While Not Query.Eof do
   begin
    ComboBox.Items.Add(Query.FieldByName('pais').AsString); 
    sl.Add(Query.FieldByName('IdPais').AsString);
    Query.Next;
   end;

Ahora en el momento que quieras recuperar el codigo, solo sería acceder al StringList en la posición en la que esta tu ComboBox.

Código Delphi [-]
 showmessage(sl[ComBox.ItemIndex]);

Pero también puedes utilizar un BDLookUpComboBox.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 04-11-2008 a las 13:51:23.
Responder Con Cita
  #3  
Antiguo 04-11-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Ya gracias por tu ayuda y lo rapido en contestar. Pero ya habia pensado en hacer eso, de echo, lo habia implementado en algunos casos que necesitaba con mucha frecuencia. Pero no se, mucho trabajo, por eso preguntaba si habia alguna forma de hacerlo directamente en el combobox con InsertObject o algo asi. Si no hay otra forma de hacerlo, pues bueno, siempre queda eas que dices que por supuesto es mejor que la que yo implemento a veces que es buscar el nombre en la base de datos y sacar el id (cuando no se repiten datos).
de todas formas gracias de nuevo.
Responder Con Cita
  #4  
Antiguo 04-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Puedes usar una rutina genérica:
Código Delphi [-]
procedure CargaCampo(campo:string; CampoId:String; Lista:TStrings);
begin

 
  // ese codigo aqui con esta modificación:
  Lista.AddObject( Fieldbyname(campo).asString, pointer(Fieldbyname(CAmpoId).AsInteger));
end;
ya sólo tienes que llamar a esta rutina con
Código Delphi [-]
CargaCampo('pais','idpais', combobox1.items
id := integer(combobox1.items.Objects[combobox.itemindex]); //así sacas el ID guardado
... o usar un DBLookUpCombobox, (aunque no tendrá todas las funcionalidades, pero bueno.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 04-11-2008 a las 13:45:37.
Responder Con Cita
  #5  
Antiguo 04-11-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Vale, encontre lo que buscaba.

http://www.clubdelphi.com/foros/show...light=combobox

gracias por todo.

Edito: Por si a alguien le sirve mas explicito el codigo es:

ComboBox1.Items.AddObject(DM.Query1['Pais'],TObject(Integer(DM.Query1['idPais'])));

y para sacar el id es:

Index:= Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);

Última edición por paladincubano fecha: 04-11-2008 a las 14:35:37.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda Con COMBOBOX!!! pecosita C++ Builder 7 31-10-2006 03:58:07
Ayuda con ComboBox pecosita C++ Builder 2 17-09-2006 02:38:26
Ayuda con un ComboBox lucero_chivas C++ Builder 3 21-08-2006 16:53:07
Ayuda con Combobox pepecharlie67 Varios 8 26-12-2005 12:21:17


La franja horaria es GMT +2. Ahora son las 17:00:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi