Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con query (https://www.clubdelphi.com/foros/showthread.php?t=76440)

Salnhack 01-11-2011 17:10:21

Problema con query
 
Hola estoy implementado una consulta de seleccion para asignarle el resultado a una variable que despues sera utilizada mas adelante el codigo que utilizo es el siguiente

Código Delphi [-]

with DataModule4.Query1 do
      begin
       Close;
       SQL.Clear;
       SQL.Add('select (id_cult) from cultivos where desccultv=' +  QuotedStr(suiDBLookupComboBox3.Text));
       Open;
       id_cultv:=ParamByName('id_cult').AsInteger;
     end;

seleciono el ide de la tabla cultivos correspondiente al cultivo selecionado en el comboBox
el problema es que cuando compilo y ejecuto la consulta me da que no encuentra el campo id_cult en la tabla, a la hora de la asignacion.

id_cultv:=ParamByName('id_cult').AsInteger;

cundo ejecuto la consulta sin la asignacion me trabaja bien, help please
Gracias.

AzidRain 01-11-2011 17:24:41

Querras decir:

Código Delphi [-]
with DataModule4.Query1 do
      begin
       Close;
       SQL.Clear;
       SQL.Add('select id_cult from cultivos where desccultv=:cultivo') ;
       ParamByName('id_cult').AsString :=suiDBLookupComboBox3.Text;
       Open;
       id_cultv:=FieldByName('id_cult').AsInteger;
       Close;
     end;

Este código funciona bien usando Zeos que crea automáticamente los parámetros del query, no se si los demás componentes lo hagan también ya que no mencionas cuales usas.

La asignación que haces es incorrecta ya que estas tratando de acceder a un Parámetro del query y no a un campo, puedes tambien cambiar ParamByName por FieldByName y seguramente ahora si te va a funcionar. Por otro lado, tienes que verificar que la consulta te devuelva algo antes de asignarlo y en caso contrario hacer algo en consecuencia, ya que si no te devuelve nada quiere decir que no existe ninguna muestra con ese nombre.

Salnhack 01-11-2011 17:58:14

Ok
 
gracias, tendre en cuenta tus sugerencias, soy nuevo en el trabajo con base de dato,

javier7ar 02-11-2011 16:49:20

Cita:

Empezado por AzidRain (Mensaje 417281)
Querras decir:

Código Delphi [-]
with DataModule4.Query1 do
      begin
       Close;
       SQL.Clear;
       SQL.Add('select id_cult from cultivos where desccultv=:cultivo') ;
       ParamByName('id_cult').AsString :=suiDBLookupComboBox3.Text;
       Open;
       id_cultv:=FieldByName('id_cult').AsInteger;
       Close;
     end;

en el codigo que te paso AzidRain, la linea:
Código Delphi [-]
ParamByName('id_cult').AsString :=suiDBLookupComboBox3.Text;
deberia ser:
Código Delphi [-]
ParamByName('cultivo').AsString :=suiDBLookupComboBox3.Text;
porque el parametros se llama cultivo no id_cult
Aclaro por si lo copias y no te funciona, es ese el problema
Saludos


La franja horaria es GMT +2. Ahora son las 06:09:56.

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