Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как разделить поли по подразделение БД 
:(
    Опции темы
Аня17
  Дата 28.8.2014, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.8.2014

Репутация: нет
Всего: нет



Как мне сделать что бы оно по подразделение разделила пол по девушки и мальчики  ??? 
смотрите скриншот так  хотела что бы получил.... 

Код

 var
 Ap,xl,sv,sm,podr1,podr2: Variant;// peremeni sv = пол жен sm = пол муж
   i: integer;
    f,j : TdateTime;
 begin
      Fstatic.DBGrid1.DataSource:=db.dataq;
      Edit3.text:='0';  Edit4.text:='0';
      sm:='0'; sv:='0'; podr1:='0'; podr2:='0';

 begin
      Ap := CreateOleObject('Excel.Application');
      Ap.Workbooks.Open('C:\exl\44.xls');
      Ap.Workbooks.Open('C:\exl\44.xls',1,true);
      Ap.Visible := true;
      Ap.DisplayAlerts := False;
 end;
 begin
      Fstatic.DBGrid1.DataSource:=db.dataq;
      try
        db.AdsQueryStatistic.SQL.Clear;
          db.AdsQueryStatistic.SQL.Add('SELECT *  FROM roj WHERE  d_reg between :f and :j');       //sex,podra, count(*) as VsegoPodr '+
              f := Trunc(DateTimePicker1.Date);
              j := Trunc(DateTimePicker2.Date);
        db.AdsQueryStatistic.Params.ParamByName('f').Value:= f;
        db.AdsQueryStatistic.Params.ParamByName('j').Value:= j;
        db.AdsQueryStatistic.Active:=True;
      except
      on e:Exception do
 end;
     db.AdsQueryStatistic.First;
        for I := 1 to db.AdsQueryStatistic.RecordCount do
           begin
             if db.AdsQueryStatistic.FieldByName('sex').Value='Муж'  then
                 begin
                    sm:=sm+1;
                    Ap.Range['e11'] := sm; {yoe ana iia?aoi?u auiieiy?ony anee iie = Io?}
                 end;
                  begin
                     if db.AdsQueryStatistic.FieldByName('sex').Value='Жен'  then
                         begin
                            sv:=sv+1;
                            Ap.Range['f11'] := sv;
                          end;
                   begin
                      if db.AdsQueryStatistic.FieldByName('podra').Value='Первомайский район'   then
                          begin
                             edit3.text:=inttostr(strtoint(Edit3.text)+1);
                             podr1:=podr1+1;
                          end;
                    begin
                       if db.AdsQueryStatistic.FieldByName('podra').Value='Октябрьский район'  then
                           begin
                          edit4.text:=inttostr(strtoint(Edit4.text)+1);
                              podr2:=podr2+1;
                     end;
       db.AdsQueryStatistic.next;
            end;
          end;
          end;
       end;
   end;
end;


за ран спс.

Добавлено через 3 минуты и 4 секунды
Скриншотик

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  2014_08_28_164145.jpg 110,32 Kb
PM MAIL   Вверх
ТоляМБА
Дата 28.8.2014, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



21 строка
'SELECT podra, sex, count(*) as C  FROM roj WHERE  d_reg between :f and :j GROUP BY podra, sex ORDER BY 1, 2'
вернет нам в отсортированном порядке подразделение, пол, количество, отсюда можно уже выбирать нужный район в цикле как у тебя, но лучше передать нужные районы в массив и сделать вложенный цикл.
Можно поиск района включить во WHERE и передать параметром - количество запросов будет равно количеству необходимых тебе районов.

Добавлено через 2 минуты и 14 секунд
необходимое количество будет в
db.AdsQueryStatistic.FieldByName('C').Value
PM   Вверх
Аня17
Дата 29.8.2014, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.8.2014

Репутация: нет
Всего: нет



Честно сказать я перепутала чуть, как присваиваем значение, в массив  Value ‘С’  к например ячейке  А1, B1 ?? как вы сказкали
или на 
edit1.text:=;
и я выгружаю в ексел с edit1.text
за ран спс.
PM MAIL   Вверх
superVad
Дата 1.9.2014, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



 smile 
PM MAIL   Вверх
ТоляМБА
Дата 1.9.2014, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



superVad, что с тобой? 1 сентября?
PM   Вверх
Аня17
Дата 2.9.2014, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.8.2014

Репутация: нет
Всего: нет



 smile   smile 
PM MAIL   Вверх
Rodman
Дата 2.9.2014, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122




M
Rodman
Модератор: Давайте вернёмся к теме обсуждения.

PM MAIL WWW Skype GTalk YIM MSN   Вверх
superVad
Дата 3.9.2014, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Цитата(Rodman @  2.9.2014,  11:03 Найти цитируемый пост)
Модератор: Давайте вернёмся к теме обсуждения.

Я или русский за отпуск забыл или как раз таки понять тему сложно...
PM MAIL   Вверх
gesper
Дата 3.9.2014, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Shарфик"
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 23.2.2005

Репутация: нет
Всего: 2



Цитата(superVad @ 3.9.2014,  15:49)
Цитата(Rodman @  2.9.2014,  11:03 Найти цитируемый пост)
Модератор: Давайте вернёмся к теме обсуждения.

Я или русский за отпуск забыл или как раз таки понять тему сложно...

согласен, ничего не понятно....

И самое главное, если поделить на М и Ж список можно, то как программа понимать должна что объект уже Девушка, или еще Мальчик... не ясно  smile 

Это сообщение отредактировал(а) gesper - 3.9.2014, 16:11
--------------------
...И приколется обломившийся и oбломится приколовшийся...
PM MAIL   Вверх
Аня17
Дата 4.9.2014, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.8.2014

Репутация: нет
Всего: нет



как построить запрос ??? чтобы получить следующие поля 
Район, кол-во мужчин, кол-во женщин.


Код

var
   Ap,xl,sv,sm,podr1,podr2,C: Variant;// peremeni sv = пол жен sm = пол муж
   i: integer;
   f,j : TdateTime;
 begin
      Fstatic.DBGrid1.DataSource:=db.dataq;
      Edit3.text:='0';  Edit4.text:='0'; c:='0';
      sm:='0'; sv:='0'; podr1:='0'; podr2:='0';

 begin
      Ap := CreateOleObject('Excel.Application');
      Ap.Workbooks.Open('C:\exl\44.xls');
      Ap.Workbooks.Open('C:\exl\44.xls',1,true);
      Ap.Visible := true;
      Ap.DisplayAlerts := False;
 end;
 begin
      Fstatic.DBGrid1.DataSource:=db.dataq;
      try
        db.AdsQueryStatistic.SQL.Clear;
         db.AdsQueryStatistic.SQL.Add('SELECT podra, sex, count(*) as C FROM roj WHERE  d_reg between :f and :j GROUP BY podra, sex ORDER BY 1, 2');       //sex,podra, count(*) as VsegoPodr '+
              f := Trunc(DateTimePicker1.Date);
              j := Trunc(DateTimePicker2.Date);
        db.AdsQueryStatistic.Params.ParamByName('f').Value:= f;
        db.AdsQueryStatistic.Params.ParamByName('j').Value:= j;
        db.AdsQueryStatistic.Active:=True;
      except
      on e:Exception do
 end;

     db.AdsQueryStatistic.First;
        for I := 1 to db.AdsQueryStatistic.RecordCount do
           begin
          db.AdsQueryStatistic.FieldByName('C').Value
          //Edit1.Text := DataSource.DataSet.FieldByName('c').AsString;
             //C:=C+1;
     //Ap.Range['B3'] :=db.AdsQueryStatistic.FieldByName('C').Value;
end;
         begin

           end;
             if db.AdsQueryStatistic.FieldByName('sex').Value='Муж'  then
                 begin
                    sm:=sm+1;
                    Ap.Range['e11'] := sm; 
                 end;
                  begin
                     if db.AdsQueryStatistic.FieldByName('sex').Value='Жен'  then
                         begin
                            sv:=sv+1;
                            Ap.Range['f11'] := sv;
                          end;
       db.AdsQueryStatistic.next;
            end;
          end;
          end;





Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  2014_09_03_160627.jpg 53,28 Kb
PM MAIL   Вверх
ТоляМБА
Дата 4.9.2014, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Добавляем переменные
Код
var
   rc, c : Integer;
   mypodra, sex : string;


Пример для нахождения первомайского района. С 32 строки в твоем примере пишем:

Код
rc := db.AdsQueryStatistic.RecordCount;
mypodra:= "Первомайский район";
for i:=1 to rc do //а ты уверена что с 1 а не с 0, я просто сейчас не могу проверить
begin
  if db.AdsQueryStatistic.FieldByName('podra').Value = mypodra then
  begin
     sex:=db.AdsQueryStatistic.FieldByName('sex').Value;
     c:=db.AdsQueryStatistic.FieldByName('C').Value;
     if sex = "Жен" then //так как sex у нас отсортирован по возрастанию, то сначала нам попадутся женщины
     begin
        Ap.Range['b2'] := c; //как я понял из прикрепленной картинки девочки в первомайском районе в ячейке B2 находятся
        continue;
     end;
     if sex = "Муж" then
     begin
        Ap.Range['c2'] := c; 
        break; //и жен и муж нашли, дальше можно записи не перебирать - выходим из цикла
     end;
  end;
  db.AdsQueryStatistic.next;
end;


Для нахождения других районов будешь их название приравнивать mypodra ну и Ap.Range менять. Как ты это организуешь уже другая песня.

Это сообщение отредактировал(а) ТоляМБА - 4.9.2014, 15:42
PM   Вверх
Аня17
Дата 5.9.2014, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.8.2014

Репутация: нет
Всего: нет



ага  smile пасибки, теперь придется сочинять что бы спеет песенку .

 smile  smile 

 а как на счет этого проектчика с источниками ??

Это сообщение отредактировал(а) Аня17 - 8.9.2014, 14:50

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  DB_test.rar 40,91 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1449 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.