[firebase-br] FB 2.1

Escovador de Bits escovadordebits em gmail.com
Ter Fev 3 11:54:30 -03 2009


Bom dia/tarde Renato.

Grande Renato, verifique qual é o nome do campo que é retornado na 
execução desse mesmo SELECT tanto no FB 1.5 quanto no 2.1 que 
provavelmente serão nomes diferentes.

Nessa situação, você tem apenas dois caminhos:

1 - Informe um "alias" para o "COUNT(*)", ou seja, onde havia:

SELECT COUNT(*) FROM WSISNOMES

Utilize:

SELECT COUNT(*) TOTAL FROM WSISNOMES

Dessa forma, sempre receberemos o valor de "COUNT(*)" com o nome 
"TOTAL", e sendo assim, onda havia:

Result := sql.FieldByName('COUNT').AsInteger;

Utilize:

Result := sql.FieldByName('TOTAL').AsInteger;

2 - Acesse o campo retornado pelo seu índice e não pelo seu nome, ou 
seja, onde havia:

Result := sql.FieldByName('COUNT').AsInteger;

Utilize:

Result := sql.Fields[0].AsInteger;

Dessa forma, você estará acessando o primeiro campo retornado, 
independente do nome dele.

Espero ter ajudado mais que atrapalhado. :D

Renato Miranda escreveu:
> Senhores,
>
> Alguém saberia dizer porque o código abaixo não funciona no FB 2.1 ?
> Funciona perfeitamente no FB 1.5 e no IBExpert (o SQL).
>
> Delphi 7 / DBXPress
>
> function TdmPsw.fPegaQtdSis: integer;
>   var sql: TSQLDataSet;
> begin
>   try
>     sql := TSQLDataSet.Create(nil);
>     sql.CommandType   := ctQuery;
>     sql.SQLConnection := dmBase.sqlConBase;
>     sql.Close;
>     sql.CommandText := 'SELECT COUNT(*) FROM WSISNOMES';
>     sql.Prepared := False;
>     sql.Open;
>     if sql.Eof then
>       Result := 0 else
>       Result := sql.FieldByName('COUNT').AsInteger;
>   finally
>     sql.Free;
>   end;
> end;
>
>
>   




Mais detalhes sobre a lista de discussão lista