Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2010, 16:24   #1
Zohei
Пользователь
 
Регистрация: 29.04.2010
Сообщений: 13
По умолчанию База данных. ADOQuery SQL

Добрый день)

Есть некая бд..
В столбец дата записываются даты посещения..
Необходимо подсчитать количество посещений в течении года...
Через год счетчик посещений обнуляется и считается заново...

Помогите разобраться в составлении корректных sql запросов..

Код:
 ///////////////вычисляю дату первого посещения тупо перебором в масиве... как это реализовать на sql ?

datemin := TStringList.Create;         
  for i:=0 to ADOQuery1.RecordCount-1 do
    begin
      datemin.Add(ADOQuery1.Fields.Fields[1].AsString);   /// записываю все ячейки в массив
      ADOQuery1.Next;
    end;
    min := datemin[0];
    for i := 0 to datemin.Count-1 do
      if (StrToDate(datemin[i]) - StrToDate(min) < 0) then
        min := datemin[i];                ///////вычислил дату первого посещения

//////// проверяю прошел ли год...

    if (Date - StrToDate(min)>=365) then  
      begin
        ADOQuery1.Active := false;
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add('SELECT Auto, Date, Time');
        ADOQuery1.SQL.Add('FROM TableMain');
        ADOQuery1.SQL.Add('WHERE Date > ''' + ???? + '''') ////??????????  

        ADOQuery1.Active := true;
      end;

  Label4.Caption:=IntToStr(ADOQuery1.RecordCount); //  кол-во посещений
Zohei вне форума Ответить с цитированием
Старый 29.04.2010, 16:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как-то так:
Код:
Select Count(*)
FROM TableMain
group by YEAR(Date)
Цитата:
Через год счетчик посещений обнуляется и считается заново...
Wow... А зачем? Этого совершенно не нужно делать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.05.2010, 15:28   #3
Zohei
Пользователь
 
Регистрация: 29.04.2010
Сообщений: 13
По умолчанию

угу. спасибо.
сделал так:
так нахожу временной интервал:
Код:
  
  ADOQuery1.Active := false;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Text :=
    'SELECT * FROM TableMain WHERE Auto LIKE ''' +
      Edit2FindAuto.Text + ''' AND (Date>=:date1) AND (Date<=:date2)';
  ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text, True);
  ADOQuery1.Parameters.ParamByName('date1').Value := StrToDate(date1);
  ADOQuery1.Parameters.ParamByName('date2').Value := StrToDate(date2);
а счетчик так
Код:
  while not(ADOQuery1.Eof) do begin
  m:=m+ADOQuery1.fieldbyname('Sum').AsInteger;
  ADOQuery1.Next;        end;
  LabelSumOnYear.Caption:=IntToStr(m)

такой вот вопрос еще...
у меня есть куча вычислений.. для каждого отдельное обращение к adoquery...
вот например:
Код:
  ADOQuery1.Active := false;                 /// вычисление общей суммы за день
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT SUM(Sum) FROM TableMain WHERE Date LIKE '''+DateToStr(Date)+'''');
  ADOQuery1.Active := True;
  LabelSum.Caption := ADOQuery1.Fields.Fields[0].AsString;

  ADOQuery1.Active := false;                 /// вычисление кол-ва машин за день
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT Auto FROM TableMain WHERE Date LIKE '''+DateToStr(Date)+'''');
  ADOQuery1.Active := True;
  LabelAutoOnDay.Caption := IntToStr(ADOQuery1.RecordCount);
собственно, как это по нормальному сделать, объеденить в одно обращение к базе?
Zohei вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Небольшая база в Open Office База данных. sashaman Фриланс 3 11.04.2010 20:13
база данных SQL motaro SQL, базы данных 0 05.02.2010 23:20
База данных в Access, ADOQuery, организовать поиск monushka БД в Delphi 27 23.10.2009 20:45
ADOQuery.SQL skymaster Общие вопросы Delphi 1 15.06.2009 20:27
база данных на языке SQL(ORACLE) j_Q SQL, базы данных 1 24.01.2009 23:02