Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Limpiar un DBLookUpComboBox (https://www.clubdelphi.com/foros/showthread.php?t=59143)

Rako 14-08-2008 12:29:42

Limpiar un DBLookUpComboBox
 
Es un problema tonto pero no consigo solucionarlo xD

La primera vez que arranca el programa pues a pesar de tener opciones metidas sale sin nada marcado, pero una vez marcas algo, al reabrir esa pantalla sale con lo ultimo seleccionado y no consigo que no salga nada. he probado varias cosas como quitarle el adotable al q esta asociado y volverselo a poner, buscar opciones como "listindexitem" o algo asi es, y ponerselo a -1 o 0 y nada, ya no se como limpiarlo XDD

bueno pues muchas gracias

coso 14-08-2008 13:31:43

¿que te refieres con 'limpiarlo'? El valor del texto, sera el del campo asociado, (datafield) por lo que para que no muestre nada, puedes probar o bien de poner ese campo a '' (cambiando su valor en la base de datos) o bien poniendo datasource := nil y luego al necesitarlo restaurarla de nuevo. Si lo que quieres es que no muestre la lista, puedes hacer algo parecido con ListSource

Caro 14-08-2008 13:41:15

Hola Rako, tienes que utilizar la propiedad KeyValue del DBLookUpComboBox y para que aparesca un valor seleccionado en tu DBLookUpComboBox también utilizas esa misma propiedad.

Código Delphi [-]
 DBLookupComboBox1.KeyValue := '';

Saluditos

coso 14-08-2008 15:22:18

Ten en cuenta por eso, que al cambiar KeyValue estaras cambiando el valor en la base de datos correspondiente a KeyField. saludos.

Caro 14-08-2008 15:50:03

Cita:

Empezado por coso (Mensaje 307571)
Ten en cuenta por eso, que al cambiar KeyValue estaras cambiando el valor en la base de datos correspondiente a KeyField. saludos.

Hola coso, que yo sepa no cambia en valor en la BD. Digamos que nuestro KeyField es el campo Codigo, si asiganmos al KeyValue el codigo 2 "DBLookupComboBox1.KeyValue := '2';", lo que hara es seleccionar ese item en nuestro DBLookupComboBox, como le estamos pasando vacio '', al no encontrar, no selecciona nada y lo deja como estaba al principio.

Saluditos

coso 14-08-2008 16:42:40

datasource, datafield : datasource y campo destino
listsource, listfield : datasource y campos que se muestran al desplegar
keyfield : campo que verdaderamente se pasa al seleccionar un item
keyvalue : filtro que selecciona desde la lista.

Al seleccionar un item de la lista, te cambiara datafield destino ¿no? tendria que probarlo pero creo que es asi. Al no seleccionar ninguno (seleccionando nil), te dejaria datafield := nil, cambiando asi el campo destino

Caro, Acabo de hacer una prueba y si, cambia el valor en la base de datos, dejando ese campo en nil (aunque no postea los cambios al momento).
PD: que raro, ahora ya no me lo hace, solo devuelve el valor anterior...voy a mirar bien
PDD: no no no me lo cambia si es nil,:confused: aunque me lo ha hecho...debo tener algun post por algun lado

Caro 14-08-2008 17:00:30

Hola de nuevo coso :), inclusive asignando DBLookupComboBox1.KeyValue := null; o '' no me cambia en la Base de Datos, solo hace lo que he explicado arriba. Yo tengo asignados mis propiedades ListSource, ListField y KeyField, claro que no tengo asignado nada ni en DataSource ni en DataField del DBLookupComboBox.

Salduitos

coso 14-08-2008 18:10:35

Si si, no me lo ha vuelto a hacer. Puse un dblookupcombobox en un proyecto activo asi rapido para probarlo. Debia activar algun evento onchange :) y postear. La cuestion es que a mi (unica y exclusivamente, como si lo hubiese pedido :rolleyes:) me lo ha hecho. Y ya no lo ha hecho mas :D.

coso 14-08-2008 19:04:28

Cita:

Yo tengo asignados mis propiedades ListSource, ListField y KeyField, claro que no tengo asignado nada ni en DataSource ni en DataField del DBLookupComboBox.
asi igualmente, seguro que no lo modificaria igualmente...

F3DeX 21-05-2010 00:44:03

Aca la solución
 
Buscando en google, (porque tenia un problema similar), encontre este tema.
Y para solucionarlo (uso DELPHI 2010), tuve que hacer en el evento Activate del Form donde estaba el DBlookUpComboBox:

Código:

if DataM.<TABLA>.RecordCount=0 then
    DbLookUpComboBox1.Enabled:=false
  else begin
    DbLookUpComboBox1.Enabled:=true;
    DBLookupComboBox1.KeyValue:=1;
  end;

Me fijo si en la tabla hay registros. Si no hay pone eneabled en falso.
Sino, lo pone en verdadero, pero ademas pone el KeyValue en 1 (osea que selecciona la primera opcion de la lista).

Espero que a alguien le haya ayudado :)

Rako 21-05-2010 12:19:58

Muchas gracias chicos :D

F3DeX 25-05-2010 06:32:58

Cita:

Empezado por F3DeX (Mensaje 364867)
Buscando en google, (porque tenia un problema similar), encontre este tema.
Y para solucionarlo (uso DELPHI 2010), tuve que hacer en el evento Activate del Form donde estaba el DBlookUpComboBox:

Código:

if DataM.<TABLA>.RecordCount=0 then
    DbLookUpComboBox1.Enabled:=false
  else begin
    DbLookUpComboBox1.Enabled:=true;
    DBLookupComboBox1.KeyValue:=1;
  end;

Me fijo si en la tabla hay registros. Si no hay pone eneabled en falso.
Sino, lo pone en verdadero, pero ademas pone el KeyValue en 1 (osea que selecciona la primera opcion de la lista).

Espero que a alguien le haya ayudado :)

Perdón, me faltó explicar que el valor que le damos al keyvalue debe ser uno que sea acorde al keyField.

Por ejemplo, si en el keyField pusimos el numero de producto, en el keyValue no basta con poner un numero cualquiera, debe ser un numero que exista en la tabla, en el campo que elegimos como KeyField.
Sino no funciona


La franja horaria es GMT +2. Ahora son las 03:49:20.

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