Fórum IbQuery #182213

15/09/2003

0

Olá colegas,

estou começando a utilizar o Interbase

para fazer a ligação utilizei os seguintes componentes da Interbase:
IbQuery, IbTransaction, IbDataBase, DataSource

Adicionei um DbGrid e um Button. No Button escrevi o seguinte código:

IBQUERY1.Close;
IBQUERY1.SQL.Clear;
IBQUERY1.SQL.Add(´SELECT * FROM ALUNO where SEXO = ´´+´M´+´´ ´);
IBQUERY1.Active := TRUE;
SHOWMESSAGE(INTTOSTR(IBQUERY1.RecordCount));

O select não funciona. Quando peço para mostrar todos (tiro a clausula where) funciona. Mas o contador mostra apenas os que estão na Dbgrid.
Portanto, precido de duas ajudas.
1) fazer funcionar a clausula where
2) fazer funcionar o contador

Grato pela atenção


Vanp

Vanp

Responder

Posts

15/09/2003

Meni.momm

OLÁ COLEGA VC PODERÁ FAZER ASSIM:

IBQUERY1.Close;
IBQUERY1.SQL.Clear;
IBQUERY1.SQL.Add(´SELECT * FROM ALUNO where SEXO =:Tipo´);
IBQUERY1.PARAMBYNAME(´Tipo´).VALUE := ´M´;
IBQUERY1.EXECSQL;

SHOWMESSAGE(INTTOSTR(IBQUERY1.RecordCount));


Responder

Gostei + 0

15/09/2003

Marcelo.c

IBQUERY1.SQL.Add(´SELECT * FROM ALUNO where SEXO = ´´+´M´+´´ ´);


Uma dica, para evitar erros e manter um código mais ´limpo´, utilize QuotedStr ex:

IBQUERY1.SQL.Add(´SELECT * FROM ALUNO where SEXO = ´+QuotedStr(´M´)); 


Outro detalhe, o seu código possui um erro depois do sinal de = , creio que o correto poderia ser:

IBQUERY1.SQL.Add(´SELECT * FROM ALUNO where SEXO = ´+´´´´+´M´+´"´);



Responder

Gostei + 0

24/10/2007

Marmota

O bug do valor incorreto dado pelo recordcount fica resolvido usando o procedure ´Fetch all´ antes de ler o recordcount.

Assim:

ibquery1.SQL.Clear;
ibquery1.SQL.Add(´select * from tabela´);
ibquery1.Open;
[b:b25537f1b1]ibquery1.FetchAll;[/b:b25537f1b1]

showmessage(ibquery1.RecordCount);

testei e deu certo;

mas como ja faz tempo q foi postada... acho que voce ja resolveu isto

T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar