![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 24.10.2007
Сообщений: 8
|
![]()
Люди добрые, выручайте. Курсовая - учет работников на предприятии, в которой должен быть поиск по возрасту. Но возраст - вычисляемое поле, считается по дате рождения, и никакого поиска по нему делать нельзя. Придумал решение - сделал кнопку "Обновить", при нажатии на которую указатель проходит по всем записям БД и переписывает значение из вычисляемого поля в постоянное. Но появляется ошибка "Table is not in edit or write mode", хотя при добавлении новой записи все нормально.
БД организована следующим образом: Создана в MS Access. Исбользую DataModule и на нем объекты: KursD: TDatabase; MainTab :TTable; SourceEdit :TDataSource; (Настроена на MainTab) Отображается все в DBGrid. Код, выполняемый по нажатию кнопки "Обновить" Код:
|
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
![]()
ошибка происходит потому что у тебя DataSet закрыт от редактирования...
Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 24.10.2007
Сообщений: 8
|
![]()
Ну спасибо!
![]() MainTabAge.AsInteger:=MainTabAgeTemp.AsInteger; Если оставить как раньше, никаких изменений не происходит, хотя ошибок нет. В итоге код выглядит так: Код:
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 24.10.2007
Сообщений: 8
|
![]()
Стараюсь!
![]() |
![]() |
![]() |
![]() |
#6 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Это делается вполне тривиально: 1 - Пусть нужно выбрать сотрудников с возрастом 30 лет. На текущую дату вычисляются "крайние" даты рождения. То есть, год рождения может быть и в прошлом году, и в текущем. Все наши 30-летние родились не ранее, чем текущая дата минус 1 день минус 30 лет, и не позже, чем сегодня плюс 29 лет. Вот вам и крайние даты. 2 - выбираем всех сотрудников с датами рождения между этими датами. Здесь может возникнуть только один нюанс - из-за формата представления даты в конкретной БД. Поэтому те самые "крайние" даты, возможно, придется перевести в соответствующую форму и сравнение производить именно в этом формате. Последний раз редактировалось mihali4; 12.11.2007 в 14:25. |
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 24.10.2007
Сообщений: 8
|
![]()
Мдаа... Что-то я, видать, совсем заучился... Чуть-чуть бы пораньше мне это увидеть. Ну да ладно, оставлю пока как есть, там - посмотрим.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder | AleksP | C++ Builder | 7 | 11.04.2009 13:06 |
"Ошибка приложения" при запуске мидлета | hotman | Общие вопросы по Java, Java SE, Kotlin | 0 | 04.09.2008 15:16 |
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует | skobets | Общие вопросы C/C++ | 2 | 03.06.2008 06:51 |
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) | Dorvir | Microsoft Office Excel | 2 | 28.03.2008 10:03 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |