Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/39: Рейтинг темы: голосов - 39, средняя оценка - 4.85
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131

DBGridEh Access

06.06.2011, 09:42. Показов 8568. Ответов 87
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть база данных, надо посчитать возраст человека и поставить "+" в нужную ячейку(от 15 до 23+ лет) средствами Delphi

Добавлено через 18 минут
достали меня с работы... нужно не плюс ставить а только в одной колонке возраст

Добавлено через 25 секунд
помогите кто может! очень надо
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2011, 09:42
Ответы с готовыми решениями:

Delphi 7 SQL, Access, DBGridEh и мн другое
Помогите! Уже на протяжении 5 часов подряд пытаюсь :wall: реализовать данное условие: Есть 2 таблицы: главная (Проекты) и подчиненная...

DBGridEh
Подскажите как сделать нумерацию строк в DBGridEh (DBGride)? Не отдельным столбцом, а в том где находится треугольник активной строки.

DbgridEh
В дб грид через связку query + datasourse выводятся значения из бд, mssql, вопрос такой: в дбгриде отображаются строки...

87
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
07.06.2011, 07:30  [ТС]
Студворк — интернет-сервис помощи студентам
в базе будет не более 200-300 записей. а что и как будет в базе всем до одного места. а почему процедура не пересчитывает возраст сразу, а только после перезапуска?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var
   bm: TBookMark;
begin
  try
    with qry1 do
    begin
      DisableControls;
      if not Active then Open;
      bm := GetBookMark;
      First;
        while not Eof do
          begin
          Edit;
              if YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime) in [1..80] then
                FieldByName('Возраст').AsInteger := YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime)
              else
            FieldByName('Возраст').AsInteger := 0;
            Post;
            Next;
          end;
        GotoBookmark(bm);
        FreeBookMark(bm);
        EnableControls;
    end;
    except
 
    end;
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
07.06.2011, 07:54
Если записей немного, то проще вычисляемое поле создать.
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
07.06.2011, 08:05  [ТС]
да в том то и дело что записей немного.
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
07.06.2011, 09:56
Создаем вычисляемое поле в наборе данных и используем обработчик OnCalcFields.
Лучше конечно в самом запросе вычислять.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
07.06.2011, 10:44
Delphi
1
а почему процедура не пересчитывает возраст сразу, а только после перезапуска?
Дык кто ж его знает, куда Вы встромили этот код. Если в OnCreate формы (типо по Архангельскому, туды его в качель), тогда и будет "пересчитывать" только один раз, при загрузке программы. А надо чаще ?

И советую все-таки прислушаться к harmless (меня Вы не слушаете, так хоть его послушайте, дело ведь говорит !) и определять возраст непосредственно при выборках, а не хранить его в базе.
1
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
07.06.2011, 11:36  [ТС]
а как это сделать? я вообще ума не приложу. не мое это а делать приходится

Добавлено через 25 минут
данные должны пересчитываться сразу после добавления новой записи или после её редактирования.
я так понимаю что эти данные можно не хранить в базе(возраст), но тогда как вычислять их в условии добавления и редактирования. что бы не приходилось перезапускать программу
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
08.06.2011, 12:12  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
Дык кто ж его знает, куда Вы встромили этот код. Если в OnCreate формы (типо по Архангельскому, туды его в качель), тогда и будет "пересчитывать" только один раз, при загрузке программы. А надо чаще ?
этот код у меня в отдельной процедуре. я даже вешал вызов процедуры на кнопку, но он не пересчитывает почему то
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
08.06.2011, 12:28
Вам осталось только напомнить мне мантру, произнеся которую я смогу увидеть код вызова и тело Вашей процедуры (не Ваше, а процедуры ) пересчета и соответственно эффективно ткнуть Вас носом в ошибку
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
08.06.2011, 14:44  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
procedure TForm1.year;
var
   bm: TBookMark;
begin
  try
    with qry1 do
    begin
      DisableControls;
      if not Active then Open;
      bm := GetBookMark;
      First;
        while not Eof do
          begin
          Edit;
              if YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime) in [1..80] then
                FieldByName('Возраст').AsInteger := YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime)
              else
            FieldByName('Возраст').AsInteger := 0;
            Post;
            Next;
          end;
        GotoBookmark(bm);
        FreeBookMark(bm);
        EnableControls;
    end;
    except
 
    end;
end;
Delphi
1
2
3
4
procedure TForm1.btn1Click(Sender: TObject);
begin
year;
end;
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
08.06.2011, 17:35
Не считая фиглярства с названием метода класса ('year' за такое название ухи надо драть) и того, что вообще-то после изменений набор данных нормальные кунаки переоткрывают (Close-Open), код рабочий. Почему "не работает" неясно, надо еще мантру: текст сообщения об ошибке или с чего Вы взяли, что "не работает" ?
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
08.06.2011, 19:16
Такой огород вместо пары строк в OnCalcFields....
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
08.06.2011, 19:55  [ТС]
Цитата Сообщение от harmless Посмотреть сообщение
Такой огород вместо пары строк в OnCalcFields....
ну так Вы подскажите что за строки надо там ввести
А этот код ошибок не выдает. он считает один раз при запуске программы и все.
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 07:46
в OnCalcFields:
Delphi
1
2
3
4
age := YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime);
if  age in [1..80]
  then
    FieldByName('Возраст').AsInteger := age;
При этом надо поле создать вычисляемое в наборе данных - в данном пример 'Возраст'.
Еще раз - не в БД, а в наборе данных - qry1 (вроде как) в Вашем случае.

Delphi нету - если я не прав, пусть кто-нить поправит.
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 08:00  [ТС]
Цитата Сообщение от harmless Посмотреть сообщение
в OnCalcFields:
Delphi
1
2
3
4
age := YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime);
if  age in [1..80]
  then
    FieldByName('Возраст').AsInteger := age;
При этом надо поле создать вычисляемое в наборе данных - в данном пример 'Возраст'.
Еще раз - не в БД, а в наборе данных - qry1 (вроде как) в Вашем случае.

Delphi нету - если я не прав, пусть кто-нить поправит.
если я правильно понял, то мне надо в базе удалить поле "Возраст" и создать это поле в query?
и что за переменная age?
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 09:41
Цитата Сообщение от Feelosoff Посмотреть сообщение
и что за переменная age?
Просто переменная... Целочисленная естественно.
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 10:04  [ТС]
а что по поводу вычисляемого поля? мне надо создать в query поле и что потом?
я просто вообще почти ничего не понимаю. у нас штатного программиста нет. вот мне и приходится осваивать то, что я пока очень, очень плохо знаю
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 10:14
Цитата Сообщение от Feelosoff Посмотреть сообщение
мне надо создать в query поле и что потом?
Ничего по идее - наслаждаться.
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 10:49  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.qry1CalcFields(DataSet: TDataSet);
var
  age:Integer;
begin
age := YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime);
if  age in [1..80]
  then
    FieldByName('Возраст').AsInteger := age
end;
сделал так. но выдает ошибку
[Error] Unit1.pas(195): Undeclared identifier: 'FieldByName'
я не знаю как создать это поле! подскажите?
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 11:03
Query(или чего там).FieldByName....

Добавлено через 1 минуту
Qry1.FieldByName('Возраст').AsInteger := age;
Чет сразу ступил.
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 11:07  [ТС]
Добавлено через 1 минуту
Qry1.FieldByName('Возраст').AsInteger := age;
Чет сразу ступил.[/QUOTE]
куда это добавить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2011, 11:07

DBGridEh
Как сделать, чтобы при активной строки в DBGridEh1 отображалась необходимая строчка в DBGridEh2. Есть две таблицы в первой хранится...

DBGridEh
Добрый вечер! Объясните, пожалуйста, девушке-чайнику.. Прочитала кучу статей и все равно не поняла.. Есть таблица, соединена через...

Как скопировать данные из таблицы одной БД Access в такую же таблицу БД Access другой БД Access?
Как с помощью компонента AdoQuery (Delphi7) скопировать данные из таблицы одной БД Access в такую же таблицу БД Access (такой же структуры)...

Выборка в DBGridEh
Добрый день! Есть таблица ЗАКАЗЫ (Код,Номер,Покупатель,Товар,Дата) При формировании Заказа, формируются записи в таблице, где...

Dbgrideh и footer
Доброго всем времени суток. Столкнулся с такой вот проблемой при использовании footers - можно ли каким либо образом записать в ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru