Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-12-2005
Moises22 Moises22 is offline
Miembro
 
Registrado: sep 2005
Posts: 53
Poder: 19
Moises22 Va por buen camino
Question Combobox con indice y valor

Hola a todos.

He estado mirando y no e encontrado solucion a mi problema. Tengo una aplicacion que conecta con access con ADOConnection dentro de un DataModule y lo que yo quiero hacer es que en ejecucion con un ADOQuery hago una consulta sobre una tabla la cual quiero listar en el TCOMBOBOX. Pero claro mi problema es que añado los registros mostrando el nombre, pero necesito la id de estos nombre porque despues en el onchange hago una consulta dependiendo del item que se haya elegido, evidentemente el campo Id no se corresponde con el index del combobox.

Como podria hacerlo??? (espero que me hayan entendido)

Muchas gracias por adelantado
Responder Con Cita
  #2  
Antiguo 22-12-2005
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
para guardarlo:
Código Delphi [-]
Combobox1.Items.AddObject('Nombre del Item', TOBject(ID)); //donde id es integer
para obtenerlo:
//Id := TInteger(Combobox1.Items.Objects[ComboxBox1.ItemIndex]);//Linea corregida "Tinteger".
Id := Integer(Combobox1.Items.Objects[ComboxBox1.ItemIndex]);

Última edición por vtdeleon fecha: 20-07-2006 a las 00:26:18.
Responder Con Cita
  #3  
Antiguo 23-12-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola Moises.

Quiero hacer una sugerencia, descarga esta suite de componentes SMComponents

En particular revisa uno que se llama TSMDBFilterComboBox, este componente tiene las carácteristicas que tú describes. Me refiero a que puedes llenar automáticamente la lista de un ComboBox con los registros de un DataSet y la caja de edición del combo no está ligada con un campo.

Lo principal es que el ComboBox tiene las propiedades FieldDisplay y FieldValue; de esta forma puedes recuperar la información del registro que selecciona el usuario de la lista.

Nota: No hay que confunfirlo con un DBLookUpComboBox, tienen diferentes funcionalidades.

Saludos y que haya suerte.
Responder Con Cita
  #4  
Antiguo 23-12-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Combobox1.Items.AddObject('Nombre del Item', TOBject(ID));
mejor para no tener q liberar los objects :

Código Delphi [-]
Combobox1.Items.Add('Nombre del Item' + '=' + ID)

asi obtienes pares de name=value, y puedes recuperarlo con las mismas propeidades del combo(names, values, valuefromindex, indexofname):

Código Delphi [-]
s := Combobox1.Values['Nombre del Item']
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #5  
Antiguo 23-12-2005
Moises22 Moises22 is offline
Miembro
 
Registrado: sep 2005
Posts: 53
Poder: 19
Moises22 Va por buen camino
Lightbulb

Gracias por responder, para el caso que en este momento estoy haciendo usare la respuesta que me ha dado luis gutierrezb pero me ha dado el siguiente problema :

Undeclared identifier: 'TInteger' en la linea id:=TInteger(oficinasCombobox1.Items.Objects[oficinasComboBox1.ItemIndex]);

Tambien he hechado un vistazo a la libreria que me ha sugerido hector y me servira de mucho, asi que muchas gractias tb. Y en cuanto a la respuesta de Delfino estaria perfecto, seria la mejor opcion creo, pero no puedo mostrar la id en el combobox.

Espero que me ayudeis con el problema que me da la forma de gutierrezb. Muchas gracias a todos
Responder Con Cita
  #6  
Antiguo 17-05-2007
sgarcia sgarcia is offline
Registrado
 
Registrado: ago 2005
Ubicación: Mexico DF
Posts: 5
Poder: 0
sgarcia Va por buen camino
Question

Saludos a todos, como libero los TObject...
GRACIAS
Responder Con Cita
  #7  
Antiguo 17-05-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
para liberarlos

Código Delphi [-]
oficinasCombobox1.Items.Objects[oficinasComboBox1.ItemIndex].Free
Responder Con Cita
  #8  
Antiguo 11-09-2016
Stereo100 Stereo100 is offline
Registrado
NULL
 
Registrado: nov 2014
Posts: 5
Poder: 0
Stereo100 Va por buen camino
Por si a alguien le puede servir , en lazarus para cargar el combobox con un item y su valor correspondiente de una BD se hace así:

Código Delphi [-]
    Combobox1.Clear;
    SQLQuery1.SQL.Text := 'SELECT * FROM users';
    SQLQuery1.Open;
    while not SQLQuery1.EOF do
    begin
      Combobox1.Items.AddObject(SQLQuery1.FieldByName('UserName').AsString, TObject(SQLQuery1.FieldByName('ID').AsInteger));
      SQLQuery1.Next;
    end;
    SQLQuery1.Close;
Luego para recuperar el ID según el item elegido del combobox1 se hace:

Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  ShowMessage('el ID es: '+inttostr(Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex])));
end;
Y para una vez cargado los valores en el combobox1 deseamos comenzar con el primer item seleccionado, podemos usar este code:

Código Delphi [-]
ComboBox1.ItemIndex:=0;
Usando Lazarus 1.6 (32bits) + Win8.1x64 + Sqlite
Saludos hermanos

Última edición por Casimiro Notevi fecha: 11-09-2016 a las 22:36:38.
Responder Con Cita
  #9  
Antiguo 21-09-2016
Rocio90 Rocio90 is offline
Miembro
NULL
 
Registrado: sep 2016
Posts: 12
Poder: 0
Rocio90 Va por buen camino
usa el método
Código:
.Free
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 20:18:47.


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