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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 23:42   #1
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Восклицание ADO изменение поля

Всем добра.
У меня имеется таблица Учащиеся и в ней есть поле Класс (значения 5А, 5Б, 10Г и т.д.) вот как можно реализовать с помощью ADO перевод всех учащихся в следующий класс.

Я пока сделал таким способом, но очень коряво и много писать надо,
Код:
ADOQuery1.SQL.Text:=('Update Ученики set Класс = "6А" where Класс = "5А"');
может кто знает способо по програмистски)
glebast вне форума Ответить с цитированием
Старый 17.12.2013, 23:44   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А это он и есть способо по програмистски
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.12.2013, 08:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы структуру переделал.

как минимум, добавил таблицу Класс
в ней поля
Код:
ID, НомерКласса Буква ГодНачалаОбучения 
в таблице Ученики ссылка на эту таблицу (idКласса).
При переходе в следующий класс изменяем только номер класса в таблице Класс

а как максимум, вычислял номер класса по началу году обучения и текущему учебному году. Тогда update при переходе в следующий класс вообще не понадобился бы!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.12.2013, 10:43   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
очень коряво
В чем корявость?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2013, 13:17   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
В чем корявость?
ручками написать для всех классов и ВСЕХ букв классов (говоряд, бывают классы с буквами не только А Б В и Г, но и Д, Е...
при этом учитывать, что нужно СТРОГО соблюдать последовательность перехода: сначала убрать все старшие классы (11-е), потом 10е перевести в 11е, потом 9-е перевести в 10 и т.д.
всё это выполняется МНОЖЕСТВОМ ОТДЕЛЬНЫХ запросов (по каждому классу и каждой букве), если не пользоваться транзакциями (откат/commit), то прервав процесс на середине, получим кучу учеников, которые непонятно в каком классе учатся.
Вот это и называется КОРЯВО.

p.s. предложенный мною способ будет состоять из одного UPDATE:
Код:
update Класс 
  set НомерКласса = НомерКласса + 1;
ну и ещё одного запроса, чтобы убрать (пометить, перенести в архив, удалить и т.п. для того класса, который стал 12-м - т.е. выпускной класс, ученики которого вышли из стен школы)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.12.2013, 13:28   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

То же самое для 5А, 5Б, 10Г можно сделать и так (думаю что у ТС Access)
Код:
update Класс 
  set НомерКласса = CStr(CInt(Left(НомерКласса,Len(НомерКласса)-1))+1)+Right(НомерКласса,1);
хотя несомненно то, что Серж предлагает удобнее
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.12.2013, 13:29   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ручками написать для всех классов и ВСЕХ букв классов
А-а-а... Ну да. Изменять конечно именование классов - жестяк.
Согласен - справочник наименований классов тут уместен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADO: Динамические поля синхронного просмотра grh БД в Delphi 2 03.10.2012 10:48
Изменение типа поля Ericnex БД в Delphi 1 06.09.2012 10:54
Запись в поля DateTime в БД Visual FoxPro посредством ADO Аватар БД в Delphi 2 13.12.2010 11:44
Выбор поля по условию (ADO) Gracia БД в Delphi 2 27.04.2010 12:36
Копирование поля из одной таблицы в другую(ADO) RamireZ БД в Delphi 5 17.11.2009 22:48