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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2014, 18:43   #1
АНЯ_17
Пользователь
 
Регистрация: 16.08.2014
Сообщений: 17
Смущение НД-статистика

Здравствуйте,
как сделать что бы из Набор Данных-считала поле пол в edit1.text и edit2.text количество полов ?
так написала ...

For i:=0 to Table1.RecordCount-1 do
begin
Table1.First;
Table1.Fields.Fields[sex].Text:='Муж';
Table1.Fields.Fields[sex].Text:='Жен';
end;

оно не работает ???
за ран спс.
Изображения
Тип файла: jpg 2014-08-16_173343.jpg (50.8 Кб, 70 просмотров)
АНЯ_17 вне форума Ответить с цитированием
Старый 16.08.2014, 19:03   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Вообще для решения этой задачи лучше всего использовать отдельный SQL запрос. Подробнее о таких запросах можно почитать здесь: Вычисления и подведение итогов в запросах.
В прочем, в коде программы это тоже можно реализовать.
Код:
m_count:=0;
w_count:=0;
Table1.First;
while not Table1.Eof do
begin
  if Table1.Fields.Fields[sex].Text='Муж' then 
    inc(m_couunt);
  if Table1.Fields.Fields[sex].Text='Жен' then
    inc(w_couunt);
  Table.Next;
end;
Приблизительно как-то так. Код писал прямо на форуме. Поэтому не проверял. Однако, полагаю, даже несмотря на это обстоятельство идея ясна.

Последний раз редактировалось Streletz; 16.08.2014 в 21:30.
Streletz вне форума Ответить с цитированием
Старый 16.08.2014, 21:04   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Streletz, пропущен Table1.Next
Также лучше делать цикл не for по RecordCount (который не всегда отражает именно количество записей, в зависимости от условий разных, одно из которых конкретная СУБД), а цикл while:
Код:
Table1.First;
while not Table1.Eof do
begin
...
Table1.Next;
end;
Автору бы орфографию подтянуть (хоть Вы, как я полагаю, из региона, где русский не основной, но коли пишете программу на русском, то надо бы следить за этим):
мужЧина, женЩина

Последний раз редактировалось phomm; 16.08.2014 в 21:07.
phomm вне форума Ответить с цитированием
Старый 16.08.2014, 21:32   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

phomm, спасибо. Вверху поправил.
Как я уже говорил, писал прямо на форуме. Поэтому, код не проверял.
Просто для того чтобы проиллюстрировать саму идею и заодно дать автору вектор и стимул к самостоятельному изучению.
Streletz вне форума Ответить с цитированием
Старый 19.08.2014, 16:44   #5
АНЯ_17
Пользователь
 
Регистрация: 16.08.2014
Сообщений: 17
По умолчанию Задачка решено

Код:
var
 i: integer;
begin
      db.newroj.First;
      Edit1.text:='0';
      Edit2.text:='0';
 for I := 1 to db.newroj.RecordCount do
  begin
    if db.newroj.FieldByName('sex').Value='Муж'  then
      edit1.text:=inttostr(strtoint(Edit1.text)+1);
   begin
        if db.newroj.FieldByName('sex').Value='Жен'  then
           edit2.text:=inttostr(strtoint(Edit2.text)+1);
          db.newroj.next;
         end;
end;
Я чуть по другому решила.


Еще одна проблемка запросик точно не работает почему ???

Код:
var
f,j:string;
i: integer;
begin
    try
    f:=datetostr(DateTimePicker1.date);
    j:=datetostr(DateTimePicker2.date);
        db.Adq.SQL.Clear;
       db.Adq.SQL.Add('SELECT d_reg FROM roj WHERE   d_reg>='''+f+'''  and   d_reg<='''+j+'''');
        db.Adq.Active:=True;
      except
    on e:Exception do
     end;
end;
Изображения
Тип файла: jpg 2014-08-19_174414.jpg (28.6 Кб, 66 просмотров)
АНЯ_17 вне форума Ответить с цитированием
Старый 19.08.2014, 19:36   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Открываем поиск по форуму, выбираем раздел БД в Дельфи в списке разделов, вводим слово для поиска DateTimePicker и жмём Начать поиск. В открывшемся списке тем открываем несколько штук и читаем любой ответ на аналогичный Вашему вопросу, в котором в коде указывается Parameters - через них надо делать такое, а не через строки, как Вы сделали.
phomm вне форума Ответить с цитированием
Старый 20.08.2014, 09:56   #7
АНЯ_17
Пользователь
 
Регистрация: 16.08.2014
Сообщений: 17
Вопрос DateTimePicker1.Date;

спс. за советик. Кроме меня не кто не использовать в этом форуме БД ADS (Advantage Data Architect 9.10) хм

Код:
var
dat1:TdateTime;
dat2:TdateTime;
begin
db.AdQ.Active:=false;

db.adq.SQL.Clear;
db.adq.SQL.Add('SELECT *');
db.adq.SQL.Add('FROM roj');
db.adq.SQL.Add('Where d_reg between :dat1 and :dat2');
dat1:=DateTimePicker1.Date;
dat2:=DateTimePicker2.Date;
db.adq.Params.ParamByName('d_reg').Value:= dat1;
db.adq.Params.ParamByName('d_reg').Value:= dat2;
db.adq.Active:=true;

а так вообще не получается.
Может кто нибудь работает с Advantage Data Architect 9,10 ??? параметры другая навернка.
Изображения
Тип файла: jpg 2014-08-20_105113.jpg (7.3 Кб, 36 просмотров)
АНЯ_17 вне форума Ответить с цитированием
Старый 20.08.2014, 10:01   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Параметры dat1 и dat2 вижу, а d_reg нет. Сообщение об ошибке о том же говорит

И если время bp DateTimePicker1.Date не нужно, то dat1:=Trunc(DateTimePicker1.Date);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.08.2014 в 10:06.
Аватар вне форума Ответить с цитированием
Старый 20.08.2014, 13:54   #9
АНЯ_17
Пользователь
 
Регистрация: 16.08.2014
Сообщений: 17
По умолчанию А

Код:
var
dat1:tdate;
dat2:Tdate;
begin
db.AdQ.Active:=false;
db.adq.SQL.Clear;
db.adq.SQL.Add('SELECT D_reg');
db.adq.SQL.Add('FROM roj');
db.adq.SQL.Add('Where d_reg between :dat1 and :dat2');
  dat1:=Trunc(DateTimePicker1.Date);
  dat2:=Trunc(DateTimePicker2.Date);
db.adq.Params.ParamByName('dat1').Value:= dat1;
db.adq.Params.ParamByName('dat2').Value:= dat2;
db.adq.Active:=true;
работает но результат нету,


понятно, свойств поля какая должна быть? в данном случей у мя пока cicharacter, ммм

Последний раз редактировалось АНЯ_17; 20.08.2014 в 13:56.
АНЯ_17 вне форума Ответить с цитированием
Старый 20.08.2014, 14:54   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

d_reg - Character? (cicharacter - ?)

Если символьное, то и параметр нужно в том же виде и в том же формате. А лучше (и на много) типа даты-времени поле
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Статистика Апрель6 Помощь студентам 6 24.12.2013 20:58
Статистика Кристинка89 Общие вопросы Delphi 11 26.04.2012 02:11
Статистика Jack-sparrow Общие вопросы C/C++ 1 22.11.2011 18:53
Статистика M17 Microsoft Office Excel 4 10.04.2009 16:39