Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2008, 16:53
Жулик Жулик вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 21
Репутация: 5
Вопрос Вставка и изменение записей в бд Access через ADO

Всех ПРИВЕТСТВУЮ!!!!!

У меня возникло две проблемы в разроботке приложения (АРМ)!
Использую бд Access через ADO т.е. заросы SQL в ADOQuery.
И так о проблемах:
1. Я не могу организовать вставку записи в таблицу БД...
Имеются две таблицы : stud (Code_s, Familia, Ima, Ochestvo, Gruppa...)
и вторая таблица propuski (Code_s, Data, Vid_propuska, Kol_vo_chas) Они связаны по полю Code_s.
Как сделать так, чтобы новая запись в таблице propuski при вставке относилась к выбранному студенту из таблице stud, студента т.е фамилию выбираю из ComboBox1 и, чтобы в ComboBox1 отображались студенты группы, выбранной в ComboBox2 т.е. фамилии студентов определённой (выбранной) группы.???

2. А вторая проблема заключается в редактированнии записи таблицы propuski.
Необходимо, в выкидном списке (ComboBox1) выбрать дату пропуска, затем в другом ComboBox выбрать группу, а в третьем ComboBox выбрать фамилию студента(относящегося к выбранной группе), а потом уже в редактируемые поля Kol_vo_chas (Edit1) и Vid_propuska (ComboBox) ввести новые значения...

Для меня сложность в том, что работа происходит с двумя таблицами, а не с одной!

Можно примеры приложений, как это сделать?
Сам пытался, не получиется уже второй день мучаюсь!

Кто может? прошу ПОМОЩИ!!!! И буду рад любой помощи!!!

Последний раз редактировалось Жулик, 22.05.2008 в 19:25.
Ответить с цитированием
  #2  
Старый 22.05.2008, 20:13
Жулик Жулик вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 21
Репутация: 5
Сообщение

Кто-нибуть помогите!!!!!!!!!!!!!

Я не могу сделать вставку записи в таблицу Propuski, чтобы эта запись относилась к Студенту из таблицы Stud! эти таблицы связаны по полю Code_s т.е. таблица Stud главная а таблица Propuski дочерняя звязь между ними 1:М (один ко многим) т.е. студент один а пропусков у него много!

Вот я и не знаю как должен выглядить Sql запрос, чтобы запись в таблице Propuski относилась к нужному студенту из таблицы Stud!

Есть предположения, что нужно отталкиваться от поля Code_s, но я не знаю как преобразовать значение поля Familia (выбор производится по фамилии) в его код Code_s, а потом уже просто указать его значение в запросе!

С редактированием тоже самое!

Помогите очень нужно!! Скоро сдавать нароботки а я никак не могу решить эти две проблемы
Ответить с цитированием
  #3  
Старый 22.05.2008, 20:58
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от Жулик
Всех ПРИВЕТСТВУЮ!!!!!

У меня возникло две проблемы в разроботке приложения (АРМ)!
Использую бд Access через ADO т.е. заросы SQL в ADOQuery.
И так о проблемах:
1. Я не могу организовать вставку записи в таблицу БД...
Имеются две таблицы : stud (Code_s, Familia, Ima, Ochestvo, Gruppa...)
и вторая таблица propuski (Code_s, Data, Vid_propuska, Kol_vo_chas) Они связаны по полю Code_s.
Как сделать так, чтобы новая запись в таблице propuski при вставке относилась к выбранному студенту из таблице stud, студента т.е фамилию выбираю из ComboBox1 и, чтобы в ComboBox1 отображались студенты группы, выбранной в ComboBox2 т.е. фамилии студентов определённой (выбранной) группы.???


Т.е. сперва в ComиoBox2 выбирается группа, в ComboBox1 - студент этой группы, а потом заполнить соответствующие поля в таблице propuski и сохранить?
Ответить с цитированием
  #4  
Старый 22.05.2008, 21:00
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Выложи что наработал и саму базу, если небольшая.
Ответить с цитированием
  #5  
Старый 22.05.2008, 21:38
Жулик Жулик вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 21
Репутация: 5
По умолчанию

Цитата:
Сообщение от MegaPiha
Т.е. сперва в ComиoBox2 выбирается группа, в ComboBox1 - студент этой группы, а потом заполнить соответствующие поля в таблице propuski и сохранить?

Да, почти так!
А в идеале еще нужна дата, которая выберается в календаре, по ней идет отбор всех записей в таблицы propuski затем эти отобранные данные опять отбираются теперь по группе (в ComboBox2 список групп из отобранного списка по дате) и идет следующий отбор по фамилии студента (в ComboBox1 список фамилий из выбранной группы и из таблицы propiski т.е. если о студенте нет записи в отобранном списке по дате, следовательно он не пропускал в этот день и его фамилия не дедолжна быть в ComboBox1 )
Вложения
Тип файла: zip База.zip (40.2 Кбайт, 26 просмотров)

Последний раз редактировалось Жулик, 22.05.2008 в 21:40.
Ответить с цитированием
  #6  
Старый 22.05.2008, 23:10
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Вот кое что сделал.
Вложения
Тип файла: zip 4.ZIP (44.0 Кбайт, 86 просмотров)
Ответить с цитированием
  #7  
Старый 23.05.2008, 08:27
Жулик Жулик вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 21
Репутация: 5
По умолчанию

Цитата:
Сообщение от MegaPiha
Вот кое что сделал.

MegaPiha Спасибо тебе огромное!!!!

У меня опять вопросы!

1. Он приметивен но всё же, я доисываю код, надо что бы в таблицу заносилось количество пропусков из Edit1, делаю через Параметр...но он ругается "Ошибка синтаксиса(пропушен оператр) в выражении запроса SET p.Kol_vo_chas = :?"

Код:
with ADOQuery4 do begin
       Close;
       SQL.Clear;
       SQL.Add('UPDATE propuski p, stud s');
       SQL.Add('SET p.Vid_propuska = :v');
       SQL.Add('SET p.Kol_vo_chas = :k');
       SQL.Add('WHERE s.code_s = p.code_s');
       SQL.Add('AND s.Gruppa  = :g');
       SQL.Add('AND p.Data    = :d');
       SQL.Add('AND s.Familia = :f');
       Parameters.ParseSQL(SQL.Text,true);
       Parameters.ParamByName('v').Value:= ComboBox3.Text;       //вид пропуска
       Parameters.ParamByName('f').Value:= ComboBox1.Text;       //фамилия
       Parameters.ParamByName('g').Value:= ComboBox2.Text;       //группа
       Parameters.ParamByName('d').Value:= DateTimePicker1.Date; //дата
       Parameters.ParamByName('k').Value:= Edit1.Text; //количеставо часов


И тотже вопрос, на первом посте:

Объясните или покажите, как при вставке новой записи в таблицу сделать так чтобы эта запись относилась к записе в другой таблице...
Выбор по фамилии а не по Cod_s вот это у меня вызывает затруднение...

Хелпп!
Ответить с цитированием
  #8  
Старый 23.05.2008, 19:51
Жулик Жулик вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 21
Репутация: 5
Восклицание Поправка

Сегодня съездил к руковолителю, убедил его, в том что в редактировании количества часов нет смысла, так что первый вопрос с предыдущего поста снимается!!!

НО остался вопрос о внесении нового пропуска в БД, т.е. о вставке записи в таблицу Propuski, что бы этот пропуск относился к студенту из таблицы stud.
Для наглядности опишу, то как это должно выглядить, (форму создал и пытался сам написать запрос,но увы безуспешно)
Значит выбираем дату из DateTimePicker1,
потом выбираем группу в ComboBox2 из таблицы grupp,
далее из ComboBox1 выбираем студента (в списке ComboBox1 только студенты из выбранной в ComboBox2 группы "таблицы grupp и stud связаны связью 1:м по полю Gruppa"),
затем в ComboBox3 выбираем вид пропуска (ComboBox3 уже заполнен тремя строками из инспектора объектов по свойству items),
и в Edit1 указывается количество часов пропущенных студентом.

Повторюсь, я не могу сделать так, что бы в поле code_s из тыблицы propuski присваивалось значение из таблицы stud одноимённого поля code_s, выбор то в ComboBox1 производится по полю Familia а не по полю cod_s. Таблицы Stud и Propuski связаны по полю code_s (1:М)

Третий день уже мучаюсь над этой проблемой , пытался отвлечься-решал другие поставленные передомной задачи этого проекта, но мне эта проблема покоя не дает!

Прошу кто знает как это сделать, ПАЖАЛУЙСТА ПОМОГИТЕ!!!! Уже сил нет и головную боль зароботал а время то идет...
Ответить с цитированием
  #9  
Старый 24.05.2008, 09:47
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от Жулик
MegaPiha Спасибо тебе огромное!!!!

У меня опять вопросы!

1. Он приметивен но всё же, я доисываю код, надо что бы в таблицу заносилось количество пропусков из Edit1, делаю через Параметр...но он ругается "Ошибка синтаксиса(пропушен оператр) в выражении запроса SET p.Kol_vo_chas = :?"

Код:
with ADOQuery4 do begin
       Close;
       SQL.Clear;
       SQL.Add('UPDATE propuski p, stud s');
       SQL.Add('SET p.Vid_propuska = :v');
       SQL.Add('SET p.Kol_vo_chas = :k');
       SQL.Add('WHERE s.code_s = p.code_s');
       SQL.Add('AND s.Gruppa  = :g');
       SQL.Add('AND p.Data    = :d');
       SQL.Add('AND s.Familia = :f');
       Parameters.ParseSQL(SQL.Text,true);
       Parameters.ParamByName('v').Value:= ComboBox3.Text;       //вид пропуска
       Parameters.ParamByName('f').Value:= ComboBox1.Text;       //фамилия
       Parameters.ParamByName('g').Value:= ComboBox2.Text;       //группа
       Parameters.ParamByName('d').Value:= DateTimePicker1.Date; //дата
       Parameters.ParamByName('k').Value:= Edit1.Text; //количеставо часов


И тотже вопрос, на первом посте:

Объясните или покажите, как при вставке новой записи в таблицу сделать так чтобы эта запись относилась к записе в другой таблице...
Выбор по фамилии а не по Cod_s вот это у меня вызывает затруднение...

Хелпп!
Там SET не надо использовать два раза.
Код:
       SQL.Add('UPDATE propuski p, stud s');
       SQL.Add('SET p.Vid_propuska = :v ,');
       SQL.Add('p.Kol_vo_chas = :k');
       SQL.Add('WHERE s.code_s = p.code_s');
....
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025