Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con evento oncloseup (https://www.clubdelphi.com/foros/showthread.php?t=42842)

snowlis 24-04-2007 14:20:20

Problema con evento oncloseup
 
Me he creado un dblookupcombobox que me saca los nombres de una tabla en concreto. Lo que quiero hacer es que cuando seleccione un elemento de esa lista acto seguido me aparezca en el mismo form en un dbedit el resultado de esa consulta. Los campos en cuestion son de tipo A (string). Para hacer lo siguiente me he creado un evento oncloseup de ese dblookupcombobox donde ejecuto el siguiente código :

Código Delphi [-]
procedure TForm13.DBLookupComboBox1CloseUp(Sender: TObject);
var direc:string;
var v:string;
begin
v:=dblookupcombobox1.Text;
showmessage(v);
query3.Close;
query3.SQL.clear;
query3.SQL.Add('Select NOME FROM MAEOBRA WHERE DESCRIPCION=:"'+dblookupcombobox1.Text+'"');
query3.open;
direc:=query3.Fields[0].AsString;
showmessage(direc);
dbedit1.Text:=direc;
end;

Cuando muestro un mensaje con el valor de v si que me lo saca bien, pero si intento usar ese valor, cuando llega a la consulta me devuelve siempre el mismo tipo de error, por ejemplo : Query3: Field 'PROYES CASTELLON,S.L.' is of an unknown type.

La consulta es muy simple, supongo que la entendereis bien.

Debe haber algun fallo con el tipo de datos o algo, pero no consigo saber lo que falla, ya que otras consultas de este tipo me han funcionado sin problemas.

Saludos.

droguerman 24-04-2007 15:26:33

Código Delphi [-]
query3.SQL.Add('Select NOME FROM MAEOBRA WHERE DESCRIPCION=:"'+dblookupcombobox1.Text+'"');
para que le pones dos puntos?:confused:

snowlis 24-04-2007 18:45:03

Ya esta solucionado, era eso y otra cosilla que me faltaba.
Es que estando todo el día programando a veces se te escapan errores tontos que no ves.

Una consulta, ahora una vez selecciono una opción en el combo si que me lo coje bien y me muestra los resultados de la consulta que se ejecuta en el evento oncloseup en un dbgrid. Mi duda ahora es si es posible que en vez de que me lo muestre en un dbgrid, si se podrían meter todo lo que me devuelve en un dblookupcombobox (solo es una columna).

Gracias ;)

basti 24-04-2007 19:24:21

Puedes mostrarlo relacionando el Query con el ComboBox mediante las propiedades ListSource, ListField y KeyField.

snowlis 24-04-2007 19:34:13

Ya, ya se me había ocurrido, pero eso sería su usará la propiedad sql de la query para hacer la consulta y yo lo hago todo mediante código, haciendo lo así :
Código Delphi [-]
query3.Close;
query3.SQL.clear;
query3.SQL.Add('Select NOME FROM MAEOBRA WHERE DESCRIPCION="'+dblookupcombobox2.Text+'"');
query3.Open;
Entonces de esta manera en el listfield por ejemplo no saca nada.

Lo he probado como dices tu, que es asignando un datasource a la query y luego con un dblookupcombobox mediante esas propiedades si que tendría que funcionar, pero no. He probado metiendole en la propiedad sql la consulta y luego desde el código lo ejecuto simplemente con un open. No da ningun tipo de error pero es como si la consulta sql que meto con código, al metersela a la propiedad sql de la query es como si no la detectará, ya que no funciona. La consulta es la que teneis en el código de arriba.
Hay que adaptarla de alguna manera o que es lo que puede suceder ?

droguerman 24-04-2007 21:31:56

y así?? luego de que has activado el query3
Código Delphi [-]
with tuOtroLookup do
begin
   listField := query3.Fields[0].fieldName;
   keyField := query3.Fields[0].fieldName;
end;

basti 24-04-2007 21:32:38

Si lo haces por código, también puedes asignar las propiedades por código. Primero tienes que tener un TDataSource (DataSource1 en el ejemplo) relacionado con el Query, luego:

Código Delphi [-]
  with DBLookupComboBox1 do
  begin
    listSource := DataSource1;
    listField := 'NOME';
    KeyField := 'NOME';
  end;

edito : Se me ha adelantado drogerman...

snowlis 25-04-2007 00:42:37

Gracias, haciendolo por código de la manera que me habeis dicho los 2 me funciona de maravilla ;).

Gracias de verdad, nunca te acuestas sin saber una cosa nueva de delphi :D


La franja horaria es GMT +2. Ahora son las 14:40:56.

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