[ОТВЕТИТЬ]
Опции темы
05.08.2014 13:13  
Ринат
День добрый, пытаюсь выполнить простенький SQL скрипт в коде:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  dt1, dt2 : TDateTime;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add ('select SMCardSecurityLog.username as Оператор, Count(DISTINCT SMCardSecurityLog.article)AS Количество from SMCardSecurityLog where actioncode= :docstate and (eventtime between :date1 AND :date2) group by username');
dt1 := Trunc(DateTimePicker1.Date);
dt2 := Trunc(DateTimePicker2.Date);
ADOQuery1.Parameters.ParamByName('date1').Value:= dt1;
ADOQuery1.Parameters.ParamByName('date2').Value:= dt2;
ADOQuery1.Parameters.ParamByName('docstate').Value:=3;
ADOQuery1.Open;
end;

end.
В результате столбец "Количество" пустой, если делать запрос:
Код:
select * from SMCardSecurityLog
т.е без использования агрегатных функций SQL, запрос отрабатывает на отлично, но не так как надо
 
05.08.2014 13:16  
OlegON
Как минимум - неявное приведение типов с датой. Любимая ошибка начинающих программеров.
 
05.08.2014 13:50  
Ринат
Если исключить Distinct, count, SUM и тд запрос выдает верные данные - согласно фильтрации и параметрам, мне правда они не нужны....
 
05.08.2014 14:07  
OlegON
Я сейчас не доберусь попробовать, а в SQL Plus полный запрос выдает требуемое?
 
05.08.2014 14:15  
Ринат
Да сам запрос отлично работает уже пару месяцев, нашел проблему - не знаю только как решить))
В общем код и запрос рабочие, данные они возвращают, вот только чтобы посмотреть их надо 2 раза шелкнуть на строке в столбце количество, и так для каждой строки, одновременно показывает только одну строку. При том никаких настроек в Delphi я не трогал, только поставил и попробовал этот код...
 
05.08.2014 15:10  
OlegON
Ну так заменить ADO на что-то нормальное, родное оракловое...
 
05.08.2014 15:17  
Ринат
Ура, случайно наткнулся, поменял строку подключения, и все заработало как надо...
 
05.08.2014 18:31  
OlegON
А строка подключения-то тут при чем? Что именно поправил?
На самом деле рекомендую еще раз присмотреться к тому, что написал ранее. ADO сильно медленнее работает, чем "родные" способы подключения.
И приведение типов где-нибудь рано или поздно вылезет.
 
05.08.2014 19:14  
Ринат
Подключался через Родное подключение, создавал системный DSN (изначально для других целей) и через него подключался, когда сменил, и подключился через Microsoft OLE DB ORACLE все заработало нормально. Ну, мне для начала и так сойдет, учусь ток, все же сисадмин а не программер)))
 
05.08.2014 19:26  
OlegON
Вот, как сисадмину рекомендую, не пользуйся ADO. Это еще верхушка айсберга глюков.
 
"Спасибо" OlegON от:
 
Опции темы



Часовой пояс GMT +3, время: 02:56.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.