Fórum Query não funciona #258546
16/11/2004
0
Em uma aplicação que estou desenvolvendo, tenho que controlar alguns intervalos de datas. Ex. não posso ter o mesmo usuário com datas de acesso iguais.
Tenho na tela, dois componentes DateTimePicker (1 para data_inicio e outro p/data_final), e para o controle coloquei uma query que é chamada no evento onExit do DateTimePicker data_final.
Com essa query, no sqlPlus obtenho o resultado correto, ou seja, o sql está correto, mas quando passo os parâmetros (e eles estão sendo passados corretamente, pois fiz o debug e vi que os valores passados são corretos) dentro do Delphi
Estou usando o seguinte código no evento onExit do DateTimePicker data_final:
with qryValidaData do
begin
Close;
ParamByName( ´pUsu´ ).AsString := Usuario.text;
ParamByName( ´pInicio´ ).AsDateTime := StrToDate(edtDatInicio.Text);
ParamByName( ´pFim´ ).AsDateTime := StrToDate(edtDatFim.Text);
Open;
end;
if qryValidaData.FieldByName( ´count´ ).Value <> 0 then
begin
ShowMessage (´Já existe acesso para o usuário nessa data´);
exit;
end;
No sqlPlus o valor do count = 3, mas no delphi se colocar um showmessage (IntToStr(count.Value)) o valor é sempre 0.
Criei tb procedure e function e está acontecendo a mesma coisa, se executá-la fora do delphi o valor retornado é 3, mas no delphi é sempre = 0.
query
SELECT COUNT(*)
FROM acesso V
WHERE V.usu = :pUsu AND
V.dt_inicio between TO_DATE(:pDataInicio, ´DD/MM/YYYY´) AND TO_DATE(:pDataFinal, ´DD/MM/YYYY´) AND
V.dt_final between TO_DATE(:pDataInicio, ´DD/MM/YYYY´) AND TO_DATE(:pDataFinal, ´DD/MM/YYYY´)
Por favor, não sei mais o que fazer, alguém pode me ajudar?
Obrigada.
Barbara.michele
Curtir tópico
+ 0Posts
16/11/2004
Bruno_fantin
Se for o sql server... Vai no query analize e verifica que o select traz somente uma coluna com o titulo em branco....
Faz assim... No sql coloca...
SELECT COUNT(*) as Resultado
FROM acesso V
WHERE V.usu = :pUsu AND
V.dt_inicio between TO_DATE(:pDataInicio, ´DD/MM/YYYY´) AND TO_DATE(:pDataFinal, ´DD/MM/YYYY´) AND
V.dt_final between TO_DATE(:pDataInicio, ´DD/MM/YYYY´) AND TO_DATE(:pDataFinal, ´DD/MM/YYYY´)
e no delphi faz isso...
if qryValidaData.FieldByName( ´Resultado´ ).Value 0 then
begin
ShowMessage (´Já existe acesso para o usuário nessa data´);
exit;
end;
Gostei + 0
16/11/2004
Osocram
Gostei + 0
16/11/2004
Paulo_amorim
Olá
O RecordCount não é muito confiável... normalmente não eh recomendado seu uso...
Creio que nomear o campo Count seria útil...
Até+
Gostei + 0
16/11/2004
Barbara.michele
Gostei + 0
16/11/2004
Bruno_fantin
Gostei + 0
16/11/2004
Barbara.michele
if qryData.FieldByName( ´Resultado´ ).Value <> 0 then
Antes disso, se colocar showmessage (IntToStr(qryData.FieldByName( ´Resultado´ ).Value )); o valor exibido é 0.
Gostei + 0
16/11/2004
Bruno_fantin
Tira o count do select e no if chama a função IsEmpty...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)