Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463

Работа с DBGrid

21.11.2015, 15:16. Показов 897. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть такова.Цифры с верху это номер кабинета, красный номер группы, синий предмет, зелёный препод. С помощью комбобоксов выбираю нужные данные и вставляю их в нужную мне ячейку. Нужно сделать так, чтобы у одной и той же группы не было одновременно две пары в разных кабинетах и то же самое с преподом. Как можно реализовать эту проверку?
https://www.cyberforum.ru/atta... 1448108151
Миниатюры
Работа с DBGrid  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2015, 15:16
Ответы с готовыми решениями:

Работа с DBGrid
Есть DBGrid с названиями цветов. Также есть таблица в Paradox, поля которой название цветка и соответствующая картинка. Как сделать чтобы...

Работа с DBGrid
Всем доброго времени суток. Интересует следующий момент, сейчас переношу содержимое DBGrid в StringGrid gen`v прокручивания и копирования,...

Работа с DBGrid
Помогите пожалуйста!!!Меня интерисует такой вопрос на форме есть таблица и 2 кнопки добавить строку в таблицу и редактировать строку в...

10
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
22.11.2015, 00:13
Когда в комбобоксах сделан выбор, нужно сделать SQL запрос в базу, с попыткой найти в это же время другую пару у группы или препода. Или пару дрогой группы в этом же кабинете. Если результат будет найден, то выдаём сообщение и не позволяем сохранять в базу изменения.

Это может быть проверка одним сложным запросом или три проверки запросами попроще. Многое зависит от того, как построена структура БД.

Добавлено через 5 минут
В первую очередь определись, когда хочешь делать проверку: как только в было сделано изменение (выбор) в любом из комбобоксов, или же только по нажатию кнопки, когда уже заданы все три параметра.
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
22.11.2015, 10:15  [ТС]
Я пробывал сделать по нажатию кнопки, но никак не смог разобраться с условием. Т.е if (Form1->DataSource1->DataSet->FieldByName(cap)->Value // выбранная ячейка == ) к чему её приравнять или с комбобоксами как-то связать у меня не получилось. Может подскажите что-то?
М.б как-то со строками работать надо, просто со строками вообще не разобрался как работать.
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
22.11.2015, 22:03
покажи, как эти данные хранятся в базе.

Добавлено через 2 минуты
Да, и опиши, через какие компоненты подключаешься к ней.
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
23.11.2015, 06:18  [ТС]
Таблица сделана в Access, подключаюсь через Conection, и для каждой таблицы по ADOTable и DataSource. Строки заполняю уже в самой программе, к примеру
C++
1
Form1->DataSource1->DataSet->FieldByName("Номер пары")->Value = "Понедельник";
и тд(обе таблицы). Данные в первую таблицу заношу так:
C++
1
Form1->DataSource1->DataSet->FieldByName(cap)->Value = ComboBox1->Text+"  "+ComboBox2->Text+"  "+ComboBox3->Text; , где cap = DBGrid1->Columns->Items[DBGrid1->SelectedIndex]->Title->Caption;
Во вторую данные заносятся автоматически
C++
1
2
3
4
if (ComboBox1->Text=="Ит-2")  {
Form6->DataSource2->DataSet->Edit();
 Form6->DataSource2->DataSet->FieldByName("Ит-2")->Value= cap+ "  " + Form5->ComboBox2->Text+"  " + Form5->ComboBox3->Text;
}
Вот только всё время в первую строку, а надо как-то в такую же строку как и в первой таблицы.
Я то описал?
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
23.11.2015, 19:55
Цитата Сообщение от Александр321321 Посмотреть сообщение
Я то описал?
Я хотел увидеть описание структуры таблиц, т. е. список их полей с указанием типов полей.

И ещё, по заданию список кабинетов фиксированный или моет меняться?
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
23.11.2015, 21:04  [ТС]
может меняться. Типы полей почти везде текстовые кроме время( тамт время и дата) в принципе ничего сверхъестественногго

Добавлено через 1 минуту
мне нужно будет предусмотреть добавление групп кабинетов преподов пар и тд и тп. Но пока с этим разобраться хотя бы
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
23.11.2015, 23:05
Цитата Сообщение от Александр321321 Посмотреть сообщение
полей почти везде текстовые
Ну ты показать структуру таблицы-то можешь? ) Чтоб понять, как обратиться к таблице с запросом для проверки, надо знать структуру таблицы

Добавлено через 15 минут
Цитата Сообщение от Александр321321 Посмотреть сообщение
мне нужно будет предусмотреть добавление групп кабинетов преподов пар и тд и тп. Но пока с этим разобраться хотя бы
Первым делом нужно сделать такую базу данных, которая удовлетворяет всем требованиям.
Ты сейчас решишь небольшую задачу, а на следующем шаге окажется, что твоя таблица не позволяет добавить аудиторию, что тогда? Тебе надо будет всё переделывать заново!
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
24.11.2015, 06:20  [ТС]
Так в том то и дело, надо будет сделать, переделаю, не впервой) Мне щас главное разобраться, чтобы потом без проблем владеть. Вообще мне надо делать с помощью ID. Но сам нужной информации как пользоваться я не нашёл, а на форумах никто не помог. Поэтому решил обойти с другой стороны и разобраться с другими вопросами. Надеюсь щас то скинул) Во второй таблице тоже самое, только вместо аудитории группы
https://www.cyberforum.ru/atta... 1448335116
Миниатюры
Работа с DBGrid  
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
25.11.2015, 20:29
я всё же считаю, что база данных изначально должна удовлетворять всем требованиям задания, потому что потом может потребоваться все переделать с нуля.
и ещё, как совет: не стоит хранить в базе записи в форме группа + " " + предмет + " " + преподаватель. В таком виде можно представить данные пользователю, но в базе это должны быть три разных поля (столбика).

Но если уж ты не хочешь сейчас ничего менять и тебе нужно решение с проверкой для этой реализации, то по нажатию на копку "Изменить" пройдись по всем остальным кабинетам в данной строке и проверь, содержит ли какая-то ячейка выбранную группу или преподавателя.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::B_EditClick(TObject *Sender)
{
    if (ATable->FieldByName("124")->AsString.Pos(ComboBox1->Text + "  "))
    {
        Application->MessageBox("Группе уже назначена другая пара в это время!", "Ошибка!", MB_OK | MB_ICONERROR);
        return;
    }
    else if (ATable->FieldByName("124")->AsString.Pos("  " + ComboBox3->Text + "  "))
    {
        Application->MessageBox("Преподователю уже назначена другая пара в это время!", "Ошибка!", MB_OK | MB_ICONERROR);
        return;
    }
 
    //проверки пройдены, сохранение изменений
}
здесь ATable - имя компонента ADOTable, используемого в качестве DataSet, B_Edit - имя кнопки "Изменить".


Ещё раз хочу подчеркнуть, что такое решение мне совсем не нравится, эти проверки можно было бы сделать одним SQL запросом, если правильно сформировать структуру таблицы.
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
25.11.2015, 21:12  [ТС]
Вот именно, то что я щас делаю это чисто тренировка чтобы разобраться в некоторых нюансах. А так естественно я буду делать с помощью SQL запросов, я немного разобрался. но веть с помощью SQL запроса тоже придётся делать проверку и я думаю что чем-то способ проверки будет похож. Спасибо большое.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2015, 21:12
Помогаю со студенческими работами здесь

Работа с dbGrid
Здравствуйте! Мне надо реализовать такую логику: в строке записаны данные о студенте. Пользователь щелкает по строке в dbGrid, открывается...

Работа с DBGrid
Здравствуйте, подскажите пожалуйста, можно ли выводить поочередно через кнопки нужные мне таблицы в DBGrid? И как это сделать. Я имею...

Работа с DBGrid
Как в DBGrid установить фиксированный размер ячеек? Чтобы они всегда были одного размера и нужного количества?

Работа с dbgrid !
Как перебрать значения столбца в dbgrid ??? и сохранить их к примеру в массив??? пасиб!

Работа с DBGrid
Ребята!!! У меня есть база созданная на SQL server 2005. В DBGrid вывожу таблицу через ADOQuery. Есть поле остаток. Как сделать чтобы...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru