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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2009, 12:27   #31
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
как мне сделать присвоение ID предметов каждому ученику?
Каждому ученику не надо присваивать ид предмета
Эти две таблицы у тебя связаны через таблицу оценки
Цитата:
Нужно, чтобы когда пользователь ввел название предмета, то когда данные заносятся в базы данных, этому предмету присваивался СВОЙ ID
Это автоинкрементное поле
Цитата:
а этот ID связывался с IDишками всех(!) учеников
А вот этого не надо.
Цитата:
Тогда при запросе указывался бы только ID предмета, а в результате выводилась бы таблица, состоящая из списка учеников, которые изучали этот предмет со своим ID.
Ну так делай простое условие WHERE Predmet.ID='+Nomer_ID+'
Цитата:
А если этот предмет, с таким названием и со своим ID,, например, если он уже ранее изучался и вводился, уже есть в БД, то происходила бы проверка на наличие этого предмета
Делай проверку в цикле на наличие в базе
Если нету то, добавляй, если есть то "Хорошо"

Затем тебе нужно только будет вносить В таблице оценки ИД ученика и ИД Предмета (Можно сделать выбор из таблиц) и сами оценки
S@fer вне форума Ответить с цитированием
Старый 22.04.2009, 17:27   #32
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Это автоинкрементное поле
То есть надо сделать, чтобы когда новый предмет вносился в БД, то ему просто присваивался бы ID как в случае с учениками?)
Цитата:
А вот этого не надо
Почему?
Цитата:
Ну так делай простое условие WHERE Predmet.ID='+Nomer_ID+'
А что значит выражение после "="?
Цитата:
Делай проверку в цикле на наличие в базе
Если нету то, добавляй, если есть то "Хорошо"
Например так (взял код в одной из тем)?
Код:
DM.ADOTable1.First;
while not DM.ADOTable1.Eof do
begin
  if (k1<>DM.ADOTable1.Fields[0].Value) then
  a:=0 else
  begin
    a:=1;
    exit;
  end;
  DM.AdoTable1.Next
end;
Цитата:
Затем тебе нужно только будет вносить В таблице оценки ИД ученика и ИД Предмета (Можно сделать выбор из таблиц) и сами оценки
Вообще то у меня вводятся пользователем только оценки, а ID должен сам присваиваться)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.04.2009, 08:04   #33
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
То есть надо сделать, чтобы когда новый предмет вносился в БД, то ему просто присваивался бы ID как в случае с учениками?)
Да
Цитата:
Вообще то у меня вводятся пользователем только оценки, а ID должен сам присваиваться)
А если у одного ученика будет по нескольким предметам оценки? То пользователь будет еще раз вводить ФИО Этого ученика и у него уже будет другой ID? - Это не есть правильно .
Когда заносятся оценки необходимо указывать кому они ставятся и по какому предмету. (чтобы не запоминать номера можно сделать выбор из выпадающего списка).
Код:
А что значит выражение после "="?
Допустим в комбобоксе ты выбираешь предмет, и у тебя происходит выборка всех учеников с этим предметом.
Цитата:
Например так (взял код в одной из тем)?
Подойдет.
S@fer вне форума Ответить с цитированием
Старый 23.04.2009, 12:31   #34
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
А если у одного ученика будет по нескольким предметам оценки?
Каждый раз идет обсчет по одному предмету.
Цитата:
То пользователь будет еще раз вводить ФИО Этого ученика и у него уже будет другой ID? - Это не есть правильно .
Нет, ученики будут те же (либо кого-то может не быть). Планирую сделать сохранение списка учеников. Это нужно для чтобы не надо было каждый раз вводить заново всех учеников.
Цитата:
Когда заносятся оценки необходимо указывать кому они ставятся и по какому предмету.
ФИО вводятся в одну таблицу, а Оценки в другую. В третьей результат по каждому ученику.
А я вот щас решил создать еще одну БД. В ней две колонки: ID_Predmeta и Название. Сейчас я вручную заполнил эту БД теми предметами, которые есть в ComboBox-e. Получилось 18 предметов со своими восемнадцатью IDишками. Хотелось бы сделать, чтобы выбирая предмет (его название) из ComboBox-a, то название бы выбиралось, а ID этого предмета заносился в таблицу "Оценки" и "Критерии", в которых есть колонка "ID_Predmeta". Как это в виде кода сделать?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.04.2009, 12:46   #35
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
Как это в виде кода сделать?
Код:
var id_predm:integer;


Query_zapros.Active:=False;
Query_zapros.SQL.Clear;
Query_zapros.SQL.ADD('SELECT [ID_predmeta] FROM [tabl_predmetov] WHERE [Nazvanie_predmeta]="'+ComboBox.Text+'"');
id_predm:=Query_zapros.FieldsByName('ID_predmeta').AsInteger;
id_predm - Ид предмета выбранного в комбобоксе.
Затем уже этот id_predm записываешь в базу.

Советую тоже самое сделать и с учениками. Будет меньше заморочек.
S@fer вне форума Ответить с цитированием
Старый 23.04.2009, 12:51   #36
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Затем уже этот id_predm записываешь в базу.
Это происходит после выполнения этого запроса?
Код:
var id_predm:integer;

Query_zapros.Active:=False;
Query_zapros.SQL.Clear;
Query_zapros.SQL.ADD('SELECT [ID_predmeta] FROM [tabl_predmetov] WHERE [Nazvanie_predmeta]="'+ComboBox.Text+'"');
id_predm:=Query_zapros.FieldsByName('ID_predmeta').AsInteger;
Может этот запрос будет лучше вставить в событие OnChange для ComboBox-a?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.04.2009, 13:01   #37
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
Это происходит после выполнения этого запроса?
Да
Цитата:
Может этот запрос будет лучше вставить в событие OnChange для ComboBox-a?
Лучше в OnSelect
S@fer вне форума Ответить с цитированием
Старый 23.04.2009, 13:04   #38
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ща попробую)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.04.2009, 13:30   #39
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Код:
Query_zapros.SQL.ADD('SELECT [ID_predmeta] FROM [tabl_predmetov] WHERE [Nazvanie_predmeta]="'+ComboBox.Text+'"');
1. А вместо [ID_predmeta] я должен ввести номер(ID) предмета? Т.е. ID='2'.
2. A вместо [tabl_predmetov] мое название таблицы? Т.е. table_predmety.
3. A вместо [Nazvanie_predmeta] название предмета? Т.е. математика например.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.04.2009, 13:36   #40
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
SELECT [ID_predmeta] FROM [tabl_predmetov] WHERE [Nazvanie_predmeta]="'+ComboBox.Text+'"
ID_predmeta - Название столбца
tabl_predmetov - название таблицы
Nazvanie_predmeta - Название столбца
S@fer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И снова про подсчет строк Bezdar Microsoft Office Excel 4 23.03.2009 16:49
И снова ссылки Yaga HTML и CSS 2 20.03.2009 12:14
Снова про адрес переменной Pedro Общие вопросы Delphi 2 17.12.2008 21:53
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
У меня вопрос про базы данных,а точнее про таблицы!!! Alexij Общие вопросы Delphi 1 13.04.2008 23:24