[firebase-br] Re: IBOQuery

alarrudajr alarrudajr em ig.com.br
Sex Jan 7 11:52:07 -03 2005


> Estou com um probleminha. 
  > Tenho um IBQuery para efetuar consultas, a instrução SQL é alterada 
  > dependendo da seleção do usuário. 
  > Se efetuo a consulta passando como parametro o nome do cliente a 
  > consulta é 
  > efeuada normalmente, se logo em seguida efetuar a consulta passando o 
  > codigo 
  > como parametro ocorre um erro dizendo que o valor 'A%' não é um valor > 
  inteiro. 
  > 
  > Oque pode estar ocorrendo ? 
  > Agradeço deste já a colaboração. 
  > 
  > Jr 
  > 

  >Ola, vc ja tentou converter o parametro, exemplo vc passa tudo com %s e 
  >depois o que for inteiro vc vai convertendo, tenho tabm esse tipo de 
  >consulta e por enquanto vai funcionando. 

  >espero ter te ajudado. 
  >Ricardo 

  >Ricardo, 

  >Obrigado pela resposta, mas não resolve. O problema é que está >mantendo 
o valor do parametro anterior que erá "A%" e não o novo >que é um inteiro. 

>  Jr 

>Caro amigo, Bom Dia, 

>Você pode nos dar um exemplo do código de sua instrução sql ? 
>Será mas fácil interpretar o problema. 


>[]s 

>Wecsley Fey 
>Progestor Informática Ltda 

Ola! 

Segue o código abaixo: 

procedure TFConsVendedor.ConsultaVendedor(iIndex, iParam: Integer; sParam: 
String); 
var sSql: String; 
begin 
  sSql := 'SELECT V.ID_VEND, V.NOME_VEND, V.FONE1_VEND, V.CEL_VEND, '; 
  sSql := sSql + 'C.DESC_CID || '' - '' || U.SIGLA_UF AS CID_UF '; 
  sSql := sSql + 'FROM UF U INNER JOIN CIDADES C ON (U.ID_UF = C.ID_UF) '; 
  sSql := sSql + 'INNER JOIN VENDEDORES V ON (C.ID_CID = V.ID_CID) '; 
  if DM.IBOConsVend.Active then 
    DM.IBOConsVend.Close; 
  DM.IBOConsVend.Unprepare; 
  DM.IBOConsVend.SQL.Clear; 
  case iIndex of 
    0: begin 
         sSql := sSql + 'ORDER BY V.NOME_VEND'; 
         DM.IBOConsVend.SQL.Add(sSql); 
         DM.IBOConsVend.Prepare; 
         DM.IBOConsVend.Open; 
       end; 
    1: begin 
         sSql := sSql + 'WHERE (V.ID_VEND = :v0) ORDER BY V.NOME_VEND'; 
         DM.IBOConsVend.SQL.Add(sSql); 
         DM.IBOConsVend.Prepare; 
         DM.IBOConsVend.Params[0].AsInteger := iParam; 
         DM.IBOConsVend.Open; 
       end; 
    2: begin 
         sSql := sSql + 'WHERE UPPER(V.NOME_VEND) LIKE :v1 ORDER BY 
V.NOME_VEND'; 
         DM.IBOConsVend.SQL.Add(sSql); 
         DM.IBOConsVend.Prepare; 
         DM.IBOConsVend.Params[0].AsString:= sParam + '%'; 
         DM.IBOConsVend.Open; 
       end; 
    3: begin 
         sSql := sSql + 'WHERE (V.ID_CID = :v0) ORDER BY V.NOME_VEND'; 
         DM.IBOConsVend.SQL.Add(sSql); 
         DM.IBOConsVend.Prepare; 
         DM.IBOConsVend.Params[0].AsInteger := iParam; 
         DM.IBOConsVend.Open; 
       end; 
  end; 
end; 

Grato pela atenção, 
Jr 


Mais detalhes sobre a lista de discussão lista