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

DBGridEh Access

06.06.2011, 09:42. Показов 8731. Ответов 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
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.06.2011, 11:26
Студворк — интернет-сервис помощи студентам
Delphi
1
DataSet.FieldByName('Возраст').AsInteger := age;
При этом DataSet передается параметром.
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 11:33  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.qry1CalcFields(DataSet: TDataSet);
var
  age:Integer;
begin
DataSet.FieldByName('Возраст').AsInteger := age;
age := YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime);
if  age in [1..80]
  then
    FieldByName('Возраст').AsInteger := age
end;
так?
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 11: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
      Qry1.FieldByName('Возраст').AsInteger := age;
end;
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.06.2011, 11:59
А не надо гадать - надо просто внинкуть в то, что пишете (копипастите) и все "сразу прояснится на доске", а заодно и в голове:

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.qry1CalcFields(DataSet: TDataSet);
var
  age:Integer;
begin
  with DataSet do
   begin
     age := YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime);
      if age in [1..80] then
         FieldByName('Возраст').AsInteger := age;
   end;
end;
И еще просто совет:
НИКОГДА не обращайтесь к именам компонентов (объектов) в методах классов если имеется возможность прямого обращения по параметру. В данном случае это указатель на DataSet.
Ваш код, если конечно добавить Qry1 перед FieldByName тоже будет работать, но МЕТОДОЛОГИЧЕСКИ код не корректен и такая манера рано или поздно приведет к тому, что придется или переписывать приличные куски кода или плодить обработчики (процедуры) для каждого объекта.
2
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 12:17  [ТС]
поправил! без ошибок! но по прежнему все так же. не пересчитывает при редактировании!
я прикрепил исходники. посмотрите, если не затруднит
Вложения
Тип файла: rar приемная.rar (702.9 Кб, 25 просмотров)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.06.2011, 12:36
Пусть проект смотрят те, у кого установлен Ухлиб
А Вы сами не можете сообразить ГДЕ у Вас должно пересчитываться и скопировать сюда этот фрагмент кода (процедуру) ?
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 12:43
Кто юзал связку TADOConnection -> TADOQuery -> TDataSetDriverEh -> TMemTableEh -> TDataSource -> TDBGridEh?
Для чего она такая?
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 12:49  [ТС]
TADOConnection можно выкинуть. а эта связка для сортировки поиска и еще некоторых премудростей без написания кода.

Добавлено через 1 минуту
Цитата Сообщение от MsGuns Посмотреть сообщение
Пусть проект смотрят те, у кого установлен Ухлиб
А Вы сами не можете сообразить ГДЕ у Вас должно пересчитываться и скопировать сюда этот фрагмент кода (процедуру) ?
я выше писал что программирование не моя профессия. это вынужденная мера. вот и приходится понимать непонятное
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 13:15
Проще всё переделать на мой взгляд...
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 13:16  [ТС]
Проще всё переделать на мой взгляд...
посоветуйте пожалуйста! я не против. только я без Вашей помощи не справлюсь
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 13:38
Дважды щелкаем mtblh1, выбираем закладку Edit fields, жмем правую кнопку, затем Add all fields.
Выделяем поле Возраст и меняем его свойство FieldKind на fkCalculated. Затем в обработчике OnCalcFields пишем:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.mtblh1CalcFields(DataSet: TDataSet);
var
  age:Integer;
begin
  with DataSet do
   begin
     age := YearsBetween(Now,FieldByName('ДатаРождения').AsDateTime);
      if age in [1..80] then
         FieldByName('Возраст').AsInteger := age;
   end;
end;
Добавлено через 1 минуту
Ну и, соответственно, всё что до этого писалось надо убрать...
1
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 13:44  [ТС]
harmless БОЛЬШОЕ И ЧЕЛОВЕЧЕСКОЕ ВАМ СПАСИБО!!!!! все заработало как надо!!!
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 13:58
Не так уж всё и хорошо. Я бы даже сказал - плохо.
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 14:03  [ТС]
почему? что то не так?
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 14:06
1. Имя файла БД.
2. Наименования таблиц, полей кирилицей.
3. Зачем две таблицы с одной структурой отдельно для очников и заочников?
Это на вскидку...
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 14:20  [ТС]
имя файла исправлю.
на счет таблица: нужно добавить поле что бы различать очное и заочное отделение?
а на счет кириллицы не знаю что надо поставить

Добавлено через 12 минут
извиняюсь. понял что Вы имели ввиду. транслитом имена таблиц и полей
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.06.2011, 15:34
- Если Вам не нужно отображение содержимого ячеек (в т.ч. в шапках) в несколько строк, нестандартная раскраска грида, экспорт содержимого сетки и прочих наворотов Ухгрида,- откажитесь от него. Сортировка делается в ADO легко и просто (см. св-во TCustomADOdataSet.Sort)

- Компонент "Таблица в памяти" нужна, если у Вас нет СУБД, а надо спроектировать интефейс "как базу". ИМХО, у Вас случай не тот явно

- Зачем нужен Ухдатасорс, вообще не знаю ибо никогда даже не слыхивал о таком (в отличие от ухгрида).

Короче, жентльменский набор:
- TAtionList, TMainMenu, TImageList, TControlBar, TTollBar, TStatusBar, TPupUpMenu - для построения элементов управления.
- TADOConnetction,TADODataSet,TADOCommand - доступ к БД
- TPanel, DataSource, TDBGrid - Визуализация данных БД,

Все правки через модальную форму, только НЕ DB-aware контролы.
Соединение устанавливается в ран с возможностью сохранения параметров в ini-файле (реестре).
Сервис на сетке должен включать :
- сортировку по произвольно выбранным колонкам
- поиск, в т.ч. контекстный и в списки (все удовлетворяющие заданному условию - отображать в отд.списке, по которому можно "кликать" и ссоотв.строке запись будет актуалтизировтаься в гриде)
- фильтрация с сохранением текущего фильтра в ini-файле для начальной фильтрации при следующем старте приложения.
- настройку сетки: изменение порядка колонок, ширины, возможность прятать и показывать колонки, восстановление вида при след.старте программы.
0
11 / 11 / 2
Регистрация: 05.01.2009
Сообщений: 131
09.06.2011, 15:39  [ТС]
harmless скажите, Вы случайно не знаете как сделать импорт в Excel с сохранением форматирования из компонента DBGridEh. я сейчас это делаю
Code
1
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,dbgrdh1,'Абитуриент.xls',True);
так. но форматирование при этом не сохраняется

Добавлено через 4 минуты
Цитата Сообщение от MsGuns Посмотреть сообщение
Если Вам не нужно отображение содержимого ячеек (в т.ч. в шапках) в несколько строк, нестандартная раскраска грида, экспорт содержимого сетки и прочих наворотов Ухгрида,- откажитесь от него. Сортировка делается в ADO легко и просто (см. св-во TCustomADOdataSet.Sort)
как раз и используются многострочные заголовки и сейчас делаю экспорт содержимого
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.06.2011, 15:52
Где-то тут рядом есть очхорошая статейка по работе с Экселем из делфи - поищите
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
09.06.2011, 16:15
Инструкция: Использование Excel из Delphi
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2011, 16:15

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru