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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.10.2011, 13:01
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
По умолчанию Заполнение компонентов на форме из разных таблиц

Доброго времени суток всем. Я совершенно не представляю что делать. У меня есть форма в ней я заполняю всю нужную мне информацию и добавляю её в разные таблицы. На главной форме есть dbGrid в которой отображаются некоторые данные а именно Ф.И.О и мне нужно при выборе записи в Grid и при нажатии на кнопку "Изменить" открывалась предыдущая таблица с заполненными компонентами из разных таблиц соответствующая выбранной записи.
P.S База Access все таблицы имею столбец id_info главная таблица "Ф.И.О" имеет связь один ко многим.

Буду благодарен.
Ответить с цитированием
  #2  
Старый 10.10.2011, 17:54
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Цитата:
Сообщение от Amilman
Доброго времени суток всем. Я совершенно не представляю что делать. У меня есть форма в ней я заполняю всю нужную мне информацию и добавляю её в разные таблицы. На главной форме есть dbGrid в которой отображаются некоторые данные а именно Ф.И.О и мне нужно при выборе записи в Grid и при нажатии на кнопку "Изменить" открывалась предыдущая таблица с заполненными компонентами из разных таблиц соответствующая выбранной записи.
P.S База Access все таблицы имею столбец id_info главная таблица "Ф.И.О" имеет связь один ко многим.

Буду благодарен.


Если я правельно понял. На событие дабл клик в гриде нужно вызвать вашу форму заполнения и там использовать команду редоктирования Edit.

Код:
begin
  With Datamodule2.People do
  begin
    Edit;
    if Form1.ShowModal = mrOk Then
      Post
    else
      Cancel;
  end;
Ответить с цитированием
  #3  
Старый 10.10.2011, 18:22
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ох и не люблю же я такие вопросы. Гадать приходится постоянно.
Может Zhigalov прав, а может и не так. Может у автора несколько таблиц и для каждой нужна своя форма ввода и нужен навигатор перехода между этими формами по аналогии кнопок перехода в IE.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 10.10.2011, 19:19
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ох и не люблю же я такие вопросы. Гадать приходится постоянно.
Может Zhigalov прав, а может и не так. Может у автора несколько таблиц и для каждой нужна своя форма ввода и нужен навигатор перехода между этими формами по аналогии кнопок перехода в IE.
Извините. У меня несколько таблиц,есть одна форма с разным способом ввода. С одной формы заполняется сразу несколько таблиц. и мне нужно:
1)На главной форме выделить нужную запись в grid.
2)Нажать кнопку на форме.
3)Должна открыться форма заполнения только уже с заполненными компонентами из разных таблиц.
4)Потом я вношу изменения жму кнопку и все изменения вносятся в разные таблицы. (не добавление а изменение текущих записей)

Добавление производится через эту-же форму таким способом:
Код:
procedure TForm4.Button5Click(Sender: TObject);
begin
  if DataModule1.ADOQuery2.Active = True then
    DataModule1.ADOQuery2.Close;
  DataModule1.ADOQuery2.sql.Text :=
    'insert into Работники (Фамилия, Имя, Отчество, Подразделение, Статус_работника, Пол, id_info) values ("'
    + Edit_fio.Text + '", "' + Edit_name.Text + '", "' + Edit_otch.Text + '", "'
    + ComboBox1.Text + '", "' + DBLookUpCombobox.Text + '", "' + ComboBox2.Text
    + '", "' + Inttostr(seInfo.Value) + '")';
  DataModule1.ADOQuery2.ExecSQL;
Ответить с цитированием
  #5  
Старый 10.10.2011, 19:32
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Так, уже проясняется. Итак, вот что вам видимо нужно:
1. Поместить на вторую форму для каждой из используемых таблиц свою пару компонентов TAdoTable и TDataSource. Связать TAdoTable с TDataSource через свойство TDataSource.Dataset
2. Далее надо установить правильно связь между самими таблицами, так-что бы данные правильно разносились автоматом. Делается это через свойство таблицы MasterSource и связку по ключевым полям MasterFields
Как я понял таблица Работники у вас главная (MasterSource) а на нее завязаны уже остальные таблицы. Не имея схемы вашей БД я пока дальше немогу объяснить что и как вам связать.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 10.10.2011, 20:38
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
По умолчанию

Вот схема данных

Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter