![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Всех ПРИВЕТСТВУЮ!!!!!
У меня возникло две проблемы в разроботке приложения (АРМ)! Использую бд 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
|
|||
|
|||
|
Кто-нибуть помогите!!!!!!!!!!!!!
Я не могу сделать вставку записи в таблицу Propuski, чтобы эта запись относилась к Студенту из таблицы Stud! эти таблицы связаны по полю Code_s т.е. таблица Stud главная а таблица Propuski дочерняя звязь между ними 1:М (один ко многим) т.е. студент один а пропусков у него много! Вот я и не знаю как должен выглядить Sql запрос, чтобы запись в таблице Propuski относилась к нужному студенту из таблицы Stud! Есть предположения, что нужно отталкиваться от поля Code_s, но я не знаю как преобразовать значение поля Familia (выбор производится по фамилии) в его код Code_s, а потом уже просто указать его значение в запросе! С редактированием тоже самое! Помогите очень нужно!! Скоро сдавать нароботки а я никак не могу решить эти две проблемы ![]() |
|
#3
|
|||
|
|||
|
Цитата:
Т.е. сперва в ComиoBox2 выбирается группа, в ComboBox1 - студент этой группы, а потом заполнить соответствующие поля в таблице propuski и сохранить? |
|
#4
|
|||
|
|||
|
Выложи что наработал и саму базу, если небольшая.
|
|
#5
|
|||
|
|||
|
Цитата:
Да, почти так! А в идеале еще нужна дата, которая выберается в календаре, по ней идет отбор всех записей в таблицы propuski затем эти отобранные данные опять отбираются теперь по группе (в ComboBox2 список групп из отобранного списка по дате) и идет следующий отбор по фамилии студента (в ComboBox1 список фамилий из выбранной группы и из таблицы propiski т.е. если о студенте нет записи в отобранном списке по дате, следовательно он не пропускал в этот день и его фамилия не дедолжна быть в ComboBox1 ) Последний раз редактировалось Жулик, 22.05.2008 в 21:40. |
|
#6
|
|||
|
|||
|
Вот кое что сделал.
|
|
#7
|
|||
|
|||
|
Цитата:
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
|
|||
|
|||
|
Сегодня съездил к руковолителю, убедил его, в том что в редактировании количества часов нет смысла, так что первый вопрос с предыдущего поста снимается!!!
НО остался вопрос о внесении нового пропуска в БД, т.е. о вставке записи в таблицу 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
|
|||
|
|||
|
Цитата:
Код:
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');
.... |