|
|
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Помогите пожалуйста решить мне одну проблемку. В моей базе данных 4 таблицы: Дисциплины, Группы, Студенты и Оценки. Дисциплины связаны с Группы через поле "Семестр" а с "Оценки" через "Код дисциплины". Группы связаны со Студенты через "Код группы". Студенты связаны с Оценки через "Код студента". Таким образом получается кольцевая схема данных, где в таблице "Оценки" данные через поля подстановки поступают из 2 таблиц: Дисциплины и Студенты. Не могли бы Вы мне подсказать, как сделать так, чтобы при вводе данных о студентах (форма Группа и подчиненная форма Студенты) и данные о дисциплинах (форма Дисциплины, пока без подчиненных) автоматически попадали в таблицу Оценки. То есть, чтобы в этой таблице для каждого студента были дисциплины которые изучает он (а точнее его группа) в данном семестре. Чтобы в таблицу нужно было ввести только оценки. Заранее очень благодарен за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 11:44 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Структуру данных сам придумал или так делать сказали? Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 12:11 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Структру посоветовали. А что, есть предложения по ее изменению в лучшую сторону? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 19:31 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Думаю, что со структурой все в порядке. Только не надо ее рассматривать как кольцевую. Тот факт, что код семестра находится в двух таблицах, не значит, что они связаны через него. На исходный вопрос предлагаю такой ответ: при добавлении студента и при добавлении дисциплины запускать такой код: currentdb.execute "INSERT INTO оценки ( кодстудента, коддисциплины ) SELECT студенты.кодстудента, дисциплины.коддисциплины FROM студенты, дисциплины;" При этом те сочетания студента и дисциплины, которые уже есть, просто не добавятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 19:54 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Не могли бы Вы уточнить, куда именно вставлять данный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 22:21 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
В событие AfterInsert двух форм, в которых показываются соответственно студенты и дисциплины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 22:24 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Можно этот код оптимизировать и сделать так: в студентах: currentdb.execute "INSERT INTO оценки ( кодстудента, коддисциплины ) SELECT " & cstr(me!кодстудента) & ", коддисциплины FROM дисциплины;" в дисциплинах: currentdb.execute "INSERT INTO оценки ( кодстудента, коддисциплины ) SELECT кодстудента, " & cstr(me!коддисциплины) & " FROM студенты;" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 22:27 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Большое спасибо, я попробую :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 23:03 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
При использовании первого варианта в таблицу "Оценки" добавляются каждый раз все записи из форм. Т.е. если есть студент Иванов, то при добавлении студента Петрова, добавляется опять сочетание Иванов + все его дисциплины. Как уйти от такого эффекта? При использовании второго варианта, в форме Студенты ACCESS ругается, что где-то или ! или . или () неправильно стоят. Что мне подправить? Помогите пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 10:18 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
А можно увидеть точный код??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 12:59 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
По поводу первой проблемы могу предположить, что в таблице оценок неверно задан (или совсем не задан) первичный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 13:35 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Ну полное решение не подскажу, но вот автозаполнение по группе или факультету если у них одинаковы дисциплины можно сделать. Создаешь Запрос1 где вытягивается группа(факультет) и дисциплины(фильтруется с формы по выбранному полю Группа(Факультет)). и Запрос2 где вытягиваются группа(Факультет) и студенты (фильтруется все с тойже формы по выбранному полю Группа(Факультет)). И Запрос3 (добавление данных) где в источники добавляешь Запрос1 и Запрос2 но без связи между ними, тогда запрос для каждой дисциплины создаст записи с студентами(или наоброт) и другие поля какие захочешь, который укажешь в Запросе3.(Семестр; оценка) Вот твоя база как бы готова, единственное нужно проверить, не заполнялась ли она уже а то задвоение будет. И не добавлялись ли новые студ и т.д. У меня в Запросе3 Была еще проверка с Таблицей добавления на их уже существование. Для полного заполнения нужно будет просто заставить на форме Фильтрации подставлять в это поле значения групп(факультета) и выполнить запрос3 и так пока не будет получена последняя группа(факультет) Вот это сам не смог реализовать, но великие гуру могут я так думаю. Кстати есть у кого примерчик: автопробежки в форме в поле со списком, по всем значениям и запуском запроса или чего либо. (Хитро думаешь хреново пишешь, так обо мне сказал препод физики, читая контрольную.):):):) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 19:34 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
А чем это отличается от моего неоптимизированного варианта от 21 фев 04, 19:54? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 19:37 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч В принципе только оптимизацией и отличается, и маленьким практическим изучением этой проблемы. Ну и не знанием, языка SQL так как Вы :( :):):). Будем жить - будем учиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 20:50 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Тогда чем это отличается от моего оптимизированного варианта от 21 фев 04, 22:27? P.S. Мне было бы проще на "ты", если можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 20:59 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч А где, по Вашему, должен стоять "первичный ключ"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 22:57 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
На сочетании полей кодстудента + коддисциплины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 23:25 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
А как же ключ поставить на сочетание полей. Или что ты имеешь ввиду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 19:56 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Ооо... Совсем плохо. Будем учиться создавать ключи. :^)\r \r /topic/68597 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 21:46 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Всё почти ОК. С ключами я разрулил. Только осталась одна штука. В этой таблице "Оценки" теперь для каждого студента формируется список всех-всех предметов, которые есть для всех семестров. А неплохо бы, чтоб было только по данному семестру ибо база увеличиться неоправданно. Подскажите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 20:57 |
|
||
|
Автоматическая отправка данных в таблицу
|
|||
|---|---|---|---|
|
#18+
Тогда так (даю поправки для обоих предложенных мной выше вариантов): currentdb.execute "INSERT INTO оценки ( кодстудента, коддисциплины ) SELECT студенты.кодстудента, дисциплины.коддисциплины FROM студенты, дисциплины WHERE семестр=" & cstr(me!семестр) & ";" currentdb.execute "INSERT INTO оценки ( кодстудента, коддисциплины ) SELECT " & cstr(me!кодстудента) & ", коддисциплины FROM дисциплины WHERE семестр=" & cstr(me!семестр) & ";" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 22:05 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1677&tid=1676486]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 296ms |

| 0 / 0 |
