Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problemas con consulta y DBLookUpComboBox (https://www.clubdelphi.com/foros/showthread.php?t=39787)

SEBACOHEN 30-01-2007 01:15:54

Problemas con consulta y DBLookUpComboBox
 
Hola a todos. Estoy haciendo un programa en Delphi y me surgio un problema. Me hablaron muy bien de este foro como para poder solucionarlo, asi que aqui estoy.
Tengo un DBLookUpComboBox que me muestra el nombre de categorias adquirido de una tabla "categoria". Yo estoy en la accion "ButtonClick" de un boton "aceptar" para guardar el resultado de dicho DBLookup... en la tabla "articulo" pero necesito un query que, tomando como entrada el valor del DBLookUpComboBox (es un string), me devuelva el id correspondiente a la categoria elegida (otro campo en la tabla "categorias"), ya que este es clave primaria de otra tabla "articulo", y lo necesito para la relacion (en la tabla articulo figura el id de categoria y no el nombre).

Este el codigo que hice, a ver donde me equivoco (codCat es el nombre del Query y cat es el parametro de entrada que representa a la opcion elegida en el dblookupcombobox)

procedure TForm8.Button1Click(Sender: TObject);
begin
DataModule7.Articulos.Edit;
DataModule7.codCat.Close;
DataModule7.codCat.ParamByName('cat').AsString:=DBLookupComboBox1.text;
DataModule7.codCat.Open;
DataModule7.Articulos.FieldByName('Nro_categoria').value:=DataModule7.DataSourceQuery;
DataModule7.Articulos.Post;
end;


Y esta es la consulta SQL del query
select nro_categoria
from categoria
where categoria.nombre= :cat


Esto que hice me tira error en la linea roja.
[Error] Unit8.pas(45): Incompatible types: 'Variant' and 'TDataSource'

A ver si se entiende lo que necesito, sino trato de explicarme mejor. Gracias de antemano.

basti 30-01-2007 05:15:18

hola, ante todo bienvenido

Al igual que usas FieldByName en Articulos, tienes que usar FieldByName en codCat:
Código Delphi [-]
DataModule7.Articulos.FieldByName('Nro_categoria').value := DataModule7.codCat.FieldByName('nro_categoria').AsVariant;

Aunque si el 'Nro_categoria' es numérico mejor sería:
Código Delphi [-]
DataModule7.Articulos.FieldByName('Nro_categoria').AsInteger := DataModule7.codCat.FieldByName('nro_categoria').AsInteger;

Y si es texto:
Código Delphi [-]
DataModule7.Articulos.FieldByName('Nro_categoria').AsString := DataModule7.codCat.FieldByName('nro_categoria').AsString;

De todas maneras, si usas un DBLookupComboBox, te sería más fácil asignarle los campos DataSource y DataField al la tabla de Artículos. Así no tendrías que hacer nada, ya lo haría el propio componente.


La franja horaria es GMT +2. Ahora son las 10:04: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