Изменение срока действия всех проксимити-карт

FORUM_NAME: АРМ Орион
Описание: Программное обеспечение АРМ «Орион» предназначено для организации автоматизированных рабочих мест различного назначения при эксплуатации ИСО «Орион».
Справочная информация, руководства для АРМ Орион
Модератор: Модераторы
cyberhoffman
Автор темы
cyberhoffman
Автор темы
Репутация: 0
Сообщения: 3
Зарегистрирован: 15.01.2016
С нами: 10 месяцев 18 дней
Профессия: инженер

Непрочитанное сообщение #1 cyberhoffman » 15.01.2016, 12:33

Прошли новогодние праздники и тут внезапно обнаружилось, что срок действия большой массы пластиковых карт допуска у сотрудников бизнес-центра ограничен датой "31.12.2015". Возникла необходимость исправления этой ситуации. Путём изучения БД ПО "Орион" (вер. 7.6.3) было выяснено, что поле, отвечающее за окончание действия проксимити-карты имеет название "finish" и находится в таблице pMark.db. Накидал что-то вроде этого:

Код: Выделить всё

 while(!Table1->Eof)
   {   Table1->Edit();
      Table1->FieldByName("finish")->AsDateTime=StrToDateTime("31.12.2025");
      Table1->Post();
      Table1->Next();
   }
, где Table1 - это pMark.db

Проверил сторонним датабейзридером: все значения в "finish" изменились на "31.12.2025".
При попытке запуска Оперативной задачи Орион - ругается на индекс и вываливается в Access Violation. Посоветуйте, как ещё можно массово изменять значения в таблицах, штатными средствами это невозможно, так понял.

ALEX_SE
ALEX_SE
Репутация: 0
Сообщения: 46
Зарегистрирован: 26.11.2015
С нами: 1 год
Профессия: Инженер

Непрочитанное сообщение #2 ALEX_SE » 15.01.2016, 18:04

там же можно выделеть всех.? и поменять

ALEX_SE
ALEX_SE
Репутация: 0
Сообщения: 46
Зарегистрирован: 26.11.2015
С нами: 1 год
Профессия: Инженер

Непрочитанное сообщение #3 ALEX_SE » 15.01.2016, 18:05

скорее всего формат поля поменяли.

Sia-Ori
Активный участник
Активный участник
Sia-Ori
Активный участник
Активный участник
Возраст: 46
Репутация: 2
Сообщения: 763
Зарегистрирован: 04.02.2012
С нами: 4 года 9 месяцев
Профессия: инженер СКУД
Откуда: Ростов на Дону

Непрочитанное сообщение #4 Sia-Ori » 15.01.2016, 22:47

Одним запросом проще, чем поштучно перебирать каждую запись.
update pMark
set Finish = '31.12.2025'
where Finish <= '31.12.2015'

ALEX_SE
ALEX_SE
Репутация: 0
Сообщения: 46
Зарегистрирован: 26.11.2015
С нами: 1 год
Профессия: Инженер

Непрочитанное сообщение #5 ALEX_SE » 16.01.2016, 08:58

Запрос правильный, только надо учитывать тип поля.
А что через Ctrl+A выделить все нельзя?

Sia-Ori
Активный участник
Активный участник
Sia-Ori
Активный участник
Активный участник
Возраст: 46
Репутация: 2
Сообщения: 763
Зарегистрирован: 04.02.2012
С нами: 4 года 9 месяцев
Профессия: инженер СКУД
Откуда: Ростов на Дону

Непрочитанное сообщение #6 Sia-Ori » 16.01.2016, 09:33

Что там с типом поля не так? Оно всё время какое было, такое и осталось.
Значение даты этой в индексах, кажется, нив каких не участвует, при обработке сторонним ПО вы в таблице (не факт, что в этой) прихватили что-то другое.

cyberhoffman
Автор темы
cyberhoffman
Автор темы
Репутация: 0
Сообщения: 3
Зарегистрирован: 15.01.2016
С нами: 10 месяцев 18 дней
Профессия: инженер

Непрочитанное сообщение #7 cyberhoffman » 31.05.2016, 13:53

Sia-Ori писал(а):Одним запросом проще, чем поштучно перебирать каждую запись.
update pMark
set Finish = '31.12.2025'
where Finish <= '31.12.2015'

Спасибо, так и сделал тогда - через TQuery.

Отправлено спустя 8 минут 23 секунды:
ALEX_SE писал(а):Запрос правильный, только надо учитывать тип поля.
А что через Ctrl+A выделить все нельзя?
Кстати, да: выделение всех записей (ctrl+a) не работает почему-то. Версия "Администратор базы данных Орион" - 1.7.6.1643.


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «АРМ Орион»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость
Боты: Yahoo [Bot]

forum-bolid.ru : Отказ от ответственности