Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ver registros ordenados en DBLookupListBox (https://www.clubdelphi.com/foros/showthread.php?t=96314)

JosepMLlort 26-07-2023 18:04:07

Ver registros ordenados en DBLookupListBox
 
Hola,
Tengo una base de datos de ejercicios. El campo clave es numérico y se llama "Número identificador". En mi ventana principal, he creado una DBLookupListBox que muestra el campo "Descripción" de los ejercicios y permite elegir el que quieras.
La DBLookupListBox accede a los datos a través de una DataSource ("DataSourceEjercicios"), conectada a una ADOTable.
Todo funciona bien, excepto en que yo querría que la DBLookupListBox mostrara la descripción de los ejercicios, ordenados por el campo "Número identificador". El orden en que los muestra no parece tener ni pies ni cabeza.

Valores de la DBLookupListBox:
-ListSource tiene el valor "DataSourceEjercicios".
-ListField tiene el valor "Descripción" (es lo que muestra, y lo hace bien).
-KeyField tiene el valor "Número identificador". Yo creía que esto ordenaría los datos por este campo, pero no lo hace.

¿Alguien sabe cómo puedo conseguir que los ejercicios me aparezcan ordenados por "Número identificador"?

Gracias por vuestra atención.

mRoman 26-07-2023 18:44:08

Hola Josep

Pues si los datos los tomas de TQuery o algo parecido (ya que no has dicho que tipo de B.D. estas trabajando), se puede ordenar desde la consulta del query.

Ejemplo:

Código SQL [-]
select numero_identificador, descripcion
from TABLA_DATOS
order by NUMERO_IDENTIFICADOR

y con esto al momento de "llenarse" el DBLookupListBox se mostrarán ordenados por el campo NUMERO_IDENTIFICADOR (order by...).

Espero te haya servido.

JosepMLlort 26-07-2023 19:35:08

Hola mRoman,

Gracias por tu respuesta. Te explico.

La base de datos es de tipo Microsoft Access. Entre otras, contiene la tabla que aquí necesito, la tabla "Ejercicios". La "Connection String" de la ADOTable empieza por "Provider=Microsoft.Jet.OLEDB.4.0. y a continuación detalla la localización de la base de datos.

No domino el lenguaje SQL. Pero basándome en los vídeos de Youtube que he consultado he creado una ADOQuery (ADOQueryEjercicios) y he introducido los comandos SQL que dices en la propiedad "SQL". También ha asignado la propiedad "DataSource" a "DataSourceEjercicios" y he construido una "Connection String" que apunta a la base de datos. La propiedad "Connection" la tengo en blanco, pues no me ofrece ninguna opción para ella. Pero cuando intento activar la ADOQuery (propiedad "Active"), no lo hace y aparece el mensaje "Error de sintaxis (falta operador) en la expresión de consulta 'Número identificador'."

Gracias nuevamente.

JosepMLlort 07-08-2023 15:34:03

Hola,

Ya he encontrado el error. Se trataba de la conexión entre la ADOQuery y la ADOConnection, que era deficiente. Una vez solucionada, el código de mRoman funciona perfectamente.

Gracias!


La franja horaria es GMT +2. Ahora son las 11:26:57.

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