Fórum Order By some com os registros quando ... #41939

31/01/2004

0

Quando o cbxData está checkado os registros deixam de aparecer na grid, acredito que seja alguma imcompatibildade entre o ORDER BY e o
´DATA >= :DtInicio AND DATA <= :DtFim´

Alguem pode me ajudar?

Código em Delphi que monta a Query:

procedure TfmConsultaLavagens.btnExecutarClick(Sender: TObject);
Var
QTD : Byte;
begin
inherited;
quResultado.Close;
quTotal.Close;
quResultado.SelectSQL.Clear;
quTotal.SelectSQL.Clear;
quResultado.SelectSQL.Add(´SELECT * FROM LAVAGENS´);
quTotal.SelectSQL.Add(´SELECT COUNT(CODLAVAGEM), SUM(Valor) FROM LAVAGENS´);
QTD:=0;
If (cbxUnidade.Checked) or (cbxTipo.Checked) or (cbxData.Checked) Then
Begin
quResultado.SelectSQL.Add(´WHERE´);
quTotal.SelectSQL.Add(´WHERE´);
End;
If cbxUnidade.Checked Then
Begin
If QTD > 0 Then
Begin
quResultado.SelectSQL.Add(´AND´);
quTotal.SelectSQL.Add(´AND´);
End;
quResultado.SelectSQL.Add(´CODUNIDADE=´+quUnidadesCODUNIDADE.AsString);
quTotal.SelectSQL.Add(´CODUNIDADE=´+quUnidadesCODUNIDADE.AsString);
QTD:=QTD+1;
End;
If cbxData.Checked Then
Begin
If QTD > 0 Then
Begin
quResultado.SelectSQL.Add(´AND´);
quTotal.SelectSQL.Add(´AND´);
End;
quResultado.SelectSQL.Add(´DATA >= :DtInicio AND DATA <= :DtFim´);
quResultado.Params[0].AsDate:=DtInicio.Date;
quResultado.Params[1].AsDate:=DtFim.Date;
quTotal.SelectSQL.Add(´DATA >= :DtInicio AND DATA <= :DtFim´);
quTotal.Params[0].AsDate:=DtInicio.Date;
quTotal.Params[1].AsDate:=DtFim.Date;
End;
If cbxTipo.Checked Then
Begin
If QTD > 0 Then
Begin
quResultado.SelectSQL.Add(´AND´);
quTotal.SelectSQL.Add(´AND´);
End;
quResultado.SelectSQL.Add(´CODTIPO=´+quTipoLavagensCODTIPO.AsString);
quTotal.SelectSQL.Add(´CODTIPO=´+quTipoLavagensCODTIPO.AsString);
QTD:=QTD+1;
End;
ShowMessage(quResultado.SelectSQL.Text);
ShowMessage(quTotal.SelectSQL.Text);
quResultado.SelectSQL.Add(´ORDER BY DATA´);
quResultado.Open;
quTotal.Open;
end;


Drakkar

Drakkar

Responder

Posts

31/01/2004

Afarias

|acredito que seja alguma imcompatibildade entre o ORDER BY e o
|´DATA >= :DtInicio AND DATA <= :DtFim´

Não

o q está havendo?? vc recebe uma mensagem de erro?? se SIM, qual??

se não, apenas não aparece registros?? os registros no banco conferem com as opções de consulta?? já testou no IBConsole?? se sim, qual o comando q usou no IBConsole??


T+


Responder

Gostei + 0

31/01/2004

Drakkar

Sem mensagens de erro, simplesmente nao aparece nada, mas eu sei que tem registros lá porque a quTotal é uma copia da quResultado com a diferença do ORDER BY no final da quResultado e o COUNT E SUM da quTotal estão vindo certos.

Botei a SELECT na mão no IBExpert usando ORDER BY é retornou certo, acho que é problema com o IBX...
Select no IBExpert:

Select * FROM Lavagens Where Data >= ´01.01.2004´ AND Data <= ´30.01.2004´ ORDER BY CODLAVAGEM


Responder

Gostei + 0

31/01/2004

Drakkar

Consegui.. troquei o componente de IBDataSet para IBQuery.. agora fica uma pergunta... qual a diferença entre esses dois?

Vlw pela atenção.


Responder

Gostei + 0

31/01/2004

Afarias

|Consegui.. troquei o componente de IBDataSet para IBQuery.. agora
|fica uma pergunta... qual a diferença entre esses dois?

NENHUMA! -- O IBDataSet é uma espécie de IBQuery com IBUpdateSQL junto!

Provavelmente a questão ai é outra...

Qualquer coisa, posta mais informações, blz!


T+


Responder

Gostei + 0

31/01/2004

Drakkar

Pois é... acho que deve ter algum bug no IBDataSet ... o importante é que ta funcionando agora e eu nao prescisei mudar nada no código fonte.. so a propriedade que no IBDataSet era SelectSQL e no IBQuery é só SQL.


Responder

Gostei + 0

01/02/2004

Luppy

Acho que pode ser bug do IbDataSet nessa versão do IBX, tbém tive o mesmo problema, resolveu quando passei o valor dos Params depois do Order By, tente fazer isso e diz qual o resultado.
Pra quem não tem esse problema, qual a versão do IBX que estão usando?

Até


Responder

Gostei + 0

01/02/2004

Fabio.hc

A palavra DATA. Será que o IBDataSet não usa esta palavra internamente e quando vc sua a mesma interfere no resultado do IBDataSet no caso o order by.

Eu tive um problema com a palavra NATURAL (de naturalidade), troquei o nome e acabou o problema.


Responder

Gostei + 0

01/02/2004

Drakkar

Eu tentei trocar mas não funcionou.. e se tivesse funcionado.. porque no IBQuery não prescisaria trocar?


Responder

Gostei + 0

01/02/2004

Fabio.hc

Fui só uma suposição, eu abri o .pas do IBquery e IBDataSet e pesquisei a palavra DATA. No IBDataSet achei uma variavel DATA e no IBQuery eu não achei. Achei que talvez pudesse interferir no resultado. Mas já que funcionou no IBQuery, beleza, eu só uso IBQuery.


Responder

Gostei + 0

01/02/2004

Drakkar

Blz. Mas acredito que o é problema é com a passagem de parametros antes do do order by, o certo seria passar os parametros antes de abrir a query, é claro que isso no meu caso irá necessitar de um if pra ver se o cbxdata ta checkado, mas como to tentando deixar as coisas o mais rápido possíveis entao to enconomizando até ifs.
hehe


Responder

Gostei + 0

02/02/2004

Afarias

|Acho que pode ser bug do IbDataSet nessa versão do IBX, tbém tive o
|mesmo problema, resolveu quando passei o valor dos Params depois do
|Order By, tente fazer isso e diz qual o resultado.

é BUG sim... mas não do IBDataSet -- Só se pode(deve) preencher qualquer parâmetro do SQL (SelectSQL) depois de todo SQL ter sido definido!

Não se pode(deve) asinalar os parâmetros e depois concluir o código SQL -- este procedimento está errado.


No mais, sugiro q todos certifíquem-se de atualizar seu IBX para a versão mais recente.


T+


Responder

Gostei + 0

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

Aceitar