IbQuery
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
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
Curtidas 0
Respostas
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));
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
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
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+
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