IbQuery

Delphi

15/09/2003

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

Curtidas 0

Respostas

Meni.momm

Meni.momm

15/09/2003

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));


GOSTEI 0
Marcelo.c

Marcelo.c

15/09/2003

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´+´"´);



GOSTEI 0
Marmota

Marmota

15/09/2003

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+


GOSTEI 0
POSTAR