![]() |
|
![]() ![]() ![]() |
|
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Доброго времени суток, Уважаемые Формучане!
Использую базу Acceess 2003. Доступ через ADO. Проблему немогу решить уже долгое время, есть несколько связанных таблиц, рисунок БД прилагается. Необхомо в DBGrid'е вывести список всех учащихся (но желательно определенного класса (хотя это уже решил)) и поля для выбора даты (выбирается отдельно и заносится для всех учащихся), номера уроков (так же выбираются отдельно и заносятся для всей группы), предметов (аналогия с ранее сказанным) и оценок (необходимо сделать для всех учащихся отдельно). Суть проблемы в том, что не получается сделать весь список класса, с пустыми полями для оценок. Получалось либо повторение данных, либо только те учащиеся, которые уже есть в таблице "jurnal". Заранее Спасибо! Это сообщение отредактировал(а) ParaNO1k - 14.6.2009, 18:35 Присоединённый файл ( Кол-во скачиваний: 20 ) ![]() |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Покажите формат вывода данных, т.е. в каком виде вы хотите видеть "весь список класса, с пустыми полями для оценок".
|
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Планировал выводить все в DBGrid'е или DBGridEh'е, выглядеть это должно вот так:
Фамилия | Имя | Оценка | ---------------------------------------------- | Сидоров | Алексей | 3 | Иванив | Иван | | Любых | Настя | | и тд. По хорошему поле "Оценка" LookUp поле из таблицы. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 4 Всего: 146 |
а оценка одна же на предмет или усредненая нужна?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Оценка идет 1, на предмет, на урок и на конкретный день для учащегося.
Это сдаланно для того чтобы после, можно было сделать распечатку отчета, в котором будут указываться промежутки дат, предметы и оценки за это время для класса. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 4 Всего: 146 |
возможно что то типа такого
а вообще БД саму прикрепи ... Это сообщение отредактировал(а) Romikgy - 14.6.2009, 19:25 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ParaNO1k |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Идия то хорошая и мною разобранная вдоль и поперек, но... главная проблема, что мне необходимо выбирать учеников конкретного класса...:( Ученики ссылаются на класс при помощи поля id_node в таблице uch и если пытаться сортировать учащихся по классу, то остаются только те поля которые заполнены в таблице jurnal... В БД, в запросах можешь посмотреть кое какие попытки решить эту проблему... Отвечаю заранее на вопрос, почему имеется такой код
Это сделанно потому что в Delphi программно будет указываться номер класса, чтобы выбирались учащиеся этого класса, а не все учащиеся. Присоединённый файл ( Кол-во скачиваний: 8 ) ![]() |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 4 Всего: 146 |
еще раз , как хочется получить результат , можешь показать ?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Я уже писал%)
|Фамилия | Имя | Оценка | |----------------------------------------------| |Сидоров | Алексей | 3 | |Иванов | Иван | | |Любых | Настя | | |и тд. По хорошему поле "Оценка" LookUp поле из таблицы. Как ещё это изобразить на форуме я не знаю... З.Ы. Отображать нужно учащихся определенного класса, который будет выделен! Чтото пришла такая мысль: а что если выводить всех учащихся, но перед тем как они появятся, в гриде скрывать тех кто не относится в выбранному классу... Тогда пролбема получается как скрывать строки с ненужными учащимися ![]() Это сообщение отредактировал(а) ParaNO1k - 14.6.2009, 19:50 |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 4 Всего: 146 |
тогда это к чему? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Эм... такая система, в Delphi есть TreeView в котором отображается список класса, при выделении какого-либо класса, берется его ID.
После выделении класса отображается DBGrid с таблицей, в которой должны отображатся список класса и выбор оценок для каждого учащегося. Отдельно имеются кнопки для выбора предмета, номера урока и даты. |
|||
|
||||
Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 4 Всего: 146 |
так ? Добавлено через 2 минуты и 35 секунд или
and uch.id_node=2 это для выбора по классу -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||
|
|||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Сорри, но не то :(
Он все равно делает выборку из тех учащихся которые занесены в таблицу jurnal, а нужно чтобы он брал учащихся из класса, а потом уже заносил в эту таблицу, когда проставлены оценки. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 4 Всего: 146 |
не понял (( -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Эх... почему мозги у меня не так работают?! :(
Ладно, поробую тогда так: в ДБГрид, надо сделать список класса, класс формируется по значению ид_ноде в таблице уч. Так же напротив каждого учащегося надо сделать выпадающий список с оценкой, которой он получил(ит). Может быть станет понятнее, если увидишь форму... На кнопки добавить день и урок, не обращая внимания, толку от них пока все равно ни какого... В зависимости от выбранного дня формируется подобная форма, на ней отображаются номера уроков, предмет который был выбран в соответствии с уроком, в ДИБГрид появляется список ВСЕХ учащихся ЭТОГО КЛАССА. Нужно чтобы ещё справа от списка учащихся появлялось ЛукАп поле с выбором оценки учащемуся, при нажатии кнопки сохранить, данные сохранялись в таблицу jurnal. Пока для вывода списка использую:
Присоединённый файл ( Кол-во скачиваний: 12 ) ![]() |
|||
|
||||
ParaNO1k |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Часть проблемы решена, для того чтобы отображать данные из таблицы jurnal использую код предложенный Romikgy
Только с той поправкой, что была изменена база: были удалены связи таблицы jurnal с таблицами predmet и ocenka. Используя следующий код добавляю всем учащимся класса, дату и номер урока:
Где за место вопросиков будет ставится предмет, но в виде текстового поля, так как он будет указываться во время создания урока в какую то дату. А оценка будет добавлятся позже отдельно, так же как текст (убрал связи). Теперься такая проблема, как сделать выпадающий список оценок, чтобы заносились не ID поля, а его текстовку, потому что связи пришлось убрать... |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 4 Всего: 146 |
ParaNO1k, у тя много оценок будет ? имхо проще выбросить эту табл и писать цифры напрямую,
по просьбе, кидай комбобокс , и заполняй его из БД текст как текстовые оценки , объекты как ид текстовой оценки (юзая AddObject) -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Оцени 1..5 + Н, того 6, я бы с удовольствием, всё выкинул, но нельзя... ещё немного осталось
![]() Попробую, а можно в DBGrid или DBGridEh как нить реализовать LookUp поле из уже готовых значений (программно забить эти оценки), чтобы они не брались из БД, тем самым облегчить себе работу и лишний раз не юзать БД? |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 4 Всего: 146 |
низнаю насчет этого , я вообще пытался не юзать компоненты из db кучи -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Хорошо, поробую, как сделаю/не сделаю отпишусь!
![]() |
|||
|
||||
flomaster |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 28.12.2007 Где: СПб Репутация: нет Всего: нет |
Вы хотите сделать Пустую страницу (шаблон) Журнала, наподобие как в Екселе?
Чтобы учитель, открыв Вашу таблицу проставлял оценки? Либо надо добавлять каждый день на каждого ученика по каждому предмету пустую запись, и ее редактировать в гриде, либо иметь гемор с редактированием через ДБГрид несуществующих еще записей.
Дальше как обычно делаем датасет, открываем редактируем... Только указывайте соответствующие условия (ParamClass и ParamPredmet)
Рекомендую изменить название поля Date, т.к. будут неудобства в дальнейшем. Полям jurnal.predmet и predmet.id дать одно название напр, в [PredmetId] и т.д. К слову, использование одинаковых названий для полей и таблиц ведет к путанице в голове. Удобно для таблиц как название использовать существительное множественного числа, для поля - единственного числа. Применение таблицы "Оценка" - вообще бессмысленно, если Вы планируете там указывать цифровые обозначения оценок. Для использования поля подстановки его нужно создать дизайнером в ДатаСете. В гриде оно появится автоматом. Это сообщение отредактировал(а) flomaster - 16.6.2009, 02:17 |
||||
|
|||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Спасибо за предложенную идею, но данную часть задачи я уже решил, почти аналогичным способом, написанную ранее (или выше, в начале страницы)).
Сейчас у меня проблема с созданием отчета для вывода на печать... Необходимо выводить в ДБГрид(Ех) (или ещё куданить откуда можно распечатать без особых проблем), следующие очеты: 1) список учащихся, а так же предметы и уроки с оценками за определенный промежуток времени; (наверное придется отказаться, слишком тяжело на вывод и не удобно в печати из-за возможного большого кол-ва данных) 2) список учащихся и оценки по конкретному предмету за промежуток времени; 3) для каждого учащегося отдельный отчет, в котором за промежуток времени указываются предметы и оценки. (самый распространеный отчет, который будет чаще всего использоваться) В книге Excel на каждой странице я отобразил примерно как это должно выглядеть. лист 1: ParamPredmet - отображает название предмета и в это поле заносятся все оценки по этому предмету за промежуток времени; лист 2: Data1 - зачем я её поставил не понял, поэтому можно отказаться и просто выводить оценки сплошником; лист 3: ничего особенного не заметил. З.Ы. Все что выделенно синим, в это место необходимо вставлять оценки ![]() Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
flomaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 28.12.2007 Где: СПб Репутация: нет Всего: нет |
При изменении региональных настроек полезут грабли.
Изучайте запросы с параметрами. Dataset.Parameters Только это избавит вас от головняка с передачей дат в запрос. |
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Эм... проблем с датами нет и возникнуть не должно... лист 2: Data1 просто указывает дату когда была проставленна оценка...
Сейчас парю мозг над тем как скинуть данные в Excel, если есть хорошие ссылки по этой информации поделитесь плиз... Заранее спасибо! |
|||
|
||||
flomaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 28.12.2007 Где: СПб Репутация: нет Всего: нет |
http://www.delphikingdom.com/asp/search.asp
Есть статья про Excel и БД. Называется "Excel ЧаВо..." в пяти частях. Найдется по "Excel ADO" Не надейся. Работа с датами через параметры - единственный ГАРАНТИРОВАНО надежный способ. Это сообщение отредактировал(а) flomaster - 17.6.2009, 12:18 |
|||
|
||||
ParaNO1k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 31.5.2009 Где: Россия) Репутация: нет Всего: нет |
Спасибо) попробую) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |