Foros del Grupo Albor
Un lugar de encuentro para los programadores de habla hispana
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
Inicio
Buscar
Ingresar
Registrarse
Foros del Grupo Albor
>
Proyecto DelphiORM
>
General
(Moderador:
Adrián De Armas
) >
Consulta por combos.
Páginas: [
1
]
Ir Abajo
« anterior
próximo »
Imprimir
Autor
Tema: Consulta por combos. (Leído 1336 veces)
César
Newbie
Desconectado
Mensajes: 4
Consulta por combos.
«
:
18 de Febrero de 2009, 14:35:03 »
Hola,
Estuve haciendo pruebas con tu ORM y hasta ahora me está yendo bastante bien.
Quiero cargar un combo con los datos de una tabla llamada TIPODOCU, vi que hay un metodo para eso pero no logro entenderlo.
Hasta ahora he cargado el combo con una coleccion de TIPODOCU y
he hecho un "ObtenerTodos" pero me gustaría poder filtrarlo ya que tengo un código "9" porque es protegido y no quiero que se cargue, como puedo hacer eso?
Espero me puedas ayudar.
Gracias.
Cesar
En línea
Adrián De Armas
Moderador
Desconectado
Mensajes: 19
Re: Consulta por combos.
«
Respuesta #1 :
18 de Febrero de 2009, 15:12:12 »
Hola Cesar,
Para poder llenar un combo con la información de una entidad (o tabla mapeada, como prefieras) tienes que: instanciar la entidad y llamar el método CargarCombo.
Supongamos que TIPODOCU tiene dos campos, uno se llama CODIGO y el otro DESCRIPCION, también supongamos que tienes un combo que se llama cbTipoDocu entonces deberías poder hacer lo siguiente:
procedure XXXXXXXXXXXXXXXXX
var
TIPODOCU : TTIPODOCU;
begin
TIPODOCU := TTIPODOCU.Create;
TIPODOCU.CargarCombo(TIndiceTIPODOCU.CODIGO, TIndiceTIPODOCU.DESCRIPCION, TStringList(cbTipoDocu.Items));
TIPODOCU.Free;
end;
En este caso estamos usando el método que está definido como:
procedure CargarCombo(IndiceCampoDato: integer; IndiceCampoDescripcion: integer;
Items: TStringList; SinDuplicados: boolean = false); overload;
Eso te llenará el combo con todo el contenido de la tabla TIPODOCU.
El valor de CODIGO se guarda como un objeto del tipo TDatoCombo (que se encuentra en uEntidades.pas), si CODIGO es numérico, podrías acceder al valor del item seleccionado de la siguiente manera:
TDatoCombo(cbTipoDocu.Items.Objects[cbTipoDocu.ItemIndex]).AsInteger
Lo importante de esto es que hay que recordar liberar los objetos del combo o se generarán leaks de memoria.
Yo uso el siguiente método para eso:
procedure LiberarCombo(combo: TComboBox);
var
nItem : integer;
obj : TObject;
begin
for nItem := 0 to combo.Items.Count - 1 do
begin
obj := combo.Items.Objects[nItem];
FreeAndNil(obj);
end;
combo.Items.Clear;
end;
Con respecto a tu duda de como filtrar el combo se puede hacer el mismo CargarCombo ya que es un método sobrecargado al que se le puede agregar una condición:
En tu caso quieres agregar todos aquellos tipos de documento que sean distintos a 9, por lo tanto tienes que usar el "CargarCombo" mas completo de la siguiente manera:
TIPODOCU.CargarCombo(TIndiceTIPODOCU.CODIGO, TIndiceTIPODOCU.DESCRIPCION,
[TIndiceTIPODOCU.CODIGO], [tcDistinto], [9], TStringList(cbTipoDocu.Items));
En este caso estamos usando el método definido como:
procedure CargarCombo(IndiceCampoDato: integer; IndiceCampoDescripcion: integer;
aIndiceCampoCondicion: array of Integer;
aTipoCondicion: array of TTipoComparacion;
aValorCondicion: array of Variant;
Items: TStringList; SinDuplicados: boolean = false); overload;
El tipo TTipoComparacion esta definido en uExpresiones así que no te olvides de agregarlo a tu clausula uses.
Me queda decirte como filtrar una colección pero lo haré en otro post ya que este se está volviendo muy largo.
Espero te haya ayudado.
Saludos
«
Última modificación: 18 de Febrero de 2009, 15:16:50 por Adrián De Armas
»
En línea
César
Newbie
Desconectado
Mensajes: 4
Re: Consulta por combos.
«
Respuesta #2 :
19 de Febrero de 2009, 02:47:16 »
Gracias, me quedó mas claro y funcionó bien...
Los otros "CargarCombo" solo hacen condición por igual, no?
Salu2
En línea
Adrián De Armas
Moderador
Desconectado
Mensajes: 19
Re: Consulta por combos.
«
Respuesta #3 :
19 de Febrero de 2009, 13:32:49 »
Cita de: César en 19 de Febrero de 2009, 02:47:16
Los otros "CargarCombo" solo hacen condición por igual, no?
Si, uno con una condición y el otro con dos.
Saludos
En línea
Páginas: [
1
]
Ir Arriba
Imprimir
« anterior
próximo »
Ir a:
Por favor selecciona un destino:
-----------------------------
General
-----------------------------
=> De todo un poco
-----------------------------
Programación
-----------------------------
=> Delphi
=> CBuilder / C++
=> Java
=> XML / HTML / PHP / Javascript
-----------------------------
Revista Síntesis
-----------------------------
=> Revista Síntesis
-----------------------------
Proyecto DelphiORM
-----------------------------
=> General
=> Anuncios e Información
=> Contribuciones
-----------------------------
Entornos Integrados
-----------------------------
=> Eclipse
=> Lazarus
-----------------------------
Bases de datos
-----------------------------
=> Firebird / Interbase
=> MySQL
=> BDE / Paradox /dBase
Cargando...