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

Работа с DBGrid

21.11.2015, 15:16. Показов 877. Ответов 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
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
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
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
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
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
23.11.2015, 19:55
Цитата Сообщение от Александр321321 Посмотреть сообщение
Я то описал?
Я хотел увидеть описание структуры таблиц, т. е. список их полей с указанием типов полей.

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

Добавлено через 1 минуту
мне нужно будет предусмотреть добавление групп кабинетов преподов пар и тд и тп. Но пока с этим разобраться хотя бы
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
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
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
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
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru