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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2008, 11:11   #1
Geddar
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 88
Вопрос dephi/sql автозаполнение таблицы???

помогите написать sql запрос. есть таблица
"журнал" в ней поля "код зачетки" и "посещение"
и есть еще две таблицы
"студенты" в ней поля "код звчетки" и "подгруппа"

Нужно чтобы при исполнении sql запроса в таблицу "журнал" в поле "код зачетки" попали все записи столбца "код зачетки" из таблицы "студенты" у которых подгруппа рана 2,
Geddar вне форума Ответить с цитированием
Старый 22.05.2008, 13:09   #2
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию

Код:
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.sql.Add('Select [код зачетки] from студенты where подгруппа =2');
ADOQuery1.Active:=true;
 while not ADOQuery1.Eof do begin
 ADOTable1.Append;
ADOTable1.FieldByName('код зачетки').AsInteger:=ADOQuery1.Fields.Fields[0].AsInteger;
 ADOQuery1.Next;
 end;
ADOTable1.Post;
это событие можешь привязать к кнопке

и еще ADOTable1->tablename->журнал
указываешь conection (путь к базе)

Последний раз редактировалось Stilet; 22.05.2008 в 13:28.
Tanuska___:) вне форума Ответить с цитированием
Старый 22.05.2008, 13:31   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Мне кажется это можно выполнить без циклов в Делфи, только я не очень помню как там должно быть, но помоему нужно делать INSERT из SELECT'a.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2008, 14:14   #4
Geddar
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 88
По умолчанию

спс, сейчас поробую. А на счет инсертов, я бы тоже хотел сделать с их помощью, написал для пробы без филтра по подгруппе так
Код:
insert into zhurnal (kod_zach) values ((select cod_zachetki from studenti));
но естественно он не заработал так как инсерт заполняет одну запись а селект выбирает сразу весь столбец, но моих знаний sql не хватает чтобы написать правильно, может вы и поможите.
Geddar вне форума Ответить с цитированием
Старый 22.05.2008, 14:16   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Инсерт запроса заполнит записями из запроса.
Почитай ка про это в мануалах по SQL, я его не так хорошо знаю, но точно помню что есть такое.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2008, 14:42   #6
Geddar
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 88
По умолчанию

ок, попробую разобраться с запросами, но с предложенным вами кодом тоже проблемы, я его немного модифицыровал

Код:
Query1.Active:=false;
Query1.SQL.Clear;   
Query1.sql.Add('Select cod_zachetki from studenti where podgrupa=2');
Query1.Active:=true;
Table1.Append;
 while not Query1.Eof do begin   
Table1.FieldByName('Kod_zach').AsInteger:=Query1.Fields.Fields[0].AsInteger;
Table1.fieldByName('kod_poseshenis').AsInteger:=1;
Table1.fieldByName('kod_zanyatia').AsInteger:=1;
 Query1.Next;
table1.next;
 end;   
Table1.Post;
но вбивает только первого человека из списка а потом вылетает с ошибкой, что база открытна не в инсерт режиме
Geddar вне форума Ответить с цитированием
Старый 22.05.2008, 14:53   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Потому лучше это делать запросами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2008, 14:56   #8
AlexandrSid
Форумчанин
 
Регистрация: 31.10.2007
Сообщений: 103
По умолчанию

Если я правильно понял, то должно быть вот так
Код:
Insert Into zhurnal (kod_zach) SELECT studenti.cod_zachetki FROM studenti WHERE studenti.cod_zachetki = 2

Последний раз редактировалось AlexandrSid; 22.05.2008 в 14:59.
AlexandrSid вне форума Ответить с цитированием
Старый 22.05.2008, 16:58   #9
Geddar
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 88
По умолчанию

Да, почти, только почему то тоже не работает, выдает ошибку о нарушении целосности связей, в журнале еще два поля так же связанные с другими таблицами, но они могут оставаться пустыми, откуда ошибка непонятно, как написать инсерт чтобы он сразу все три поля зполнил любыми даными из тех таблиц, можно даже одинаковыми
Geddar вне форума Ответить с цитированием
Старый 22.05.2008, 17:35   #10
AlexandrSid
Форумчанин
 
Регистрация: 31.10.2007
Сообщений: 103
По умолчанию

Можно сделать так, тогда можно будет задать значения вручную.
Если поле2 числовое то просто ставиш любое число (в примере 1) и если поле3 строковое значение указываешь в ковычках (в примере "Значение").
Код:
Insert Into zhurnal (kod_zach,имя_поля2,имя_поля3) SELECT studenti.cod_zachetki,1,"Значение" FROM studenti WHERE studenti.cod_zachetki = 2
Или указать имена полей таблицы studenti

Код:
Insert Into zhurnal (kod_zach,имя_поля2,имя_поля3) SELECT studenti.cod_zachetki,studenti.имя_поля,studenti.имя_поля FROM studenti WHERE studenti.cod_zachetki = 2
Но советую разобраться с проблемой нарушения целостности.
Сама база данных в каком формате?
AlexandrSid вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задержка добавления записи в базу Access из Dephi Zver БД в Delphi 11 16.05.2011 17:57
автозаполнение таблицы. Warlock Microsoft Office Excel 6 25.12.2008 11:13
Не работает автозаполнение Yuran Работа с сетью в Delphi 7 24.05.2008 13:16
com порт и Dephi kwn Общие вопросы Delphi 0 22.04.2008 22:33
Автозаполнение в TEdit neodream Компоненты Delphi 9 15.08.2007 15:03