|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
F1 у меня не работает ==
|
#17
|
||||
|
||||
Цитата:
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! |
#18
|
||||
|
||||
Цитата:
Что касается типа связи 1:1 или 1:N, это не влияет на предложенное решение нисколько. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#19
|
|||
|
|||
Да вам вообще одна таблица пока что нужна:
1. У каждого работника обязательно есть паспорт и при том только один => паспорта выносить в отдельную таблицу незачем. 2. У каждого работника обязательно есть (и при том только одно): должность, табельный номер, ИНН, домашний, сотовый 1,... Если чего то из перечисленного нет - это сути не меняет - есть NULL. Что нужно выносить - так это подразделения, но с учетом специфики вашей задачи, их можно оставить как есть - программа нисколько не потеряет, станет только проще. ИМХО: Сливайте все поля в одну таблицу, использование трех таблиц ничем не оправдано. P.S. Что-то сложное нужно делать, если от этого есть (или планируется в будущем) хоть какая-то польза. В данном случае от усложнения один вред. Последний раз редактировалось Lucky192, 11.10.2011 в 19:02. |
#20
|
||||
|
||||
Цитата:
Цитата:
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! Последний раз редактировалось Viajero, 11.10.2011 в 19:08. |
#21
|
||||
|
||||
Цитата:
Думаю это не получится так как метод добавления у меня такой Код:
if DataModule1.ADOQuery4.Active = True then DataModule1.ADOQuery4.Close; DataModule1.ADOQuery4.sql.Text := 'insert into Основное (Должность, Дата_приёма_на_работу, ИНН, Табельный№, РегПФР, Домашний, Сотовый1, Сотовый2, Д_р_п_ж, id_info) values ("' + DBLookupComboBox1.Text + '", "' + String(MaskEdit4.Text) + '", "' + Edit7.Text + '", "' + Edit1.Text + '", "' + Edit6.Text + '", "' + String(MaskEdit8.Text) + '", "' + String(MaskEdit5.Text) + '", "' + String(MaskEdit6.Text) + '", "' + String(MaskEdit3.Text) + '", "' + Inttostr(seInfo.Value) + '")'; DataModule1.ADOQuery4.ExecSQL; Или хотя... Можно ли использовать этот код с этим ADOQuery только другими столбцами? |
#22
|
||||
|
||||
Цитата:
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! Последний раз редактировалось Viajero, 11.10.2011 в 19:29. |
#23
|
|||
|
|||
Нужно:
1. В базе создать новую таблицу, куда войдут все поля из трех существующих. 2. Скопировать в нее существующие данные (если есть). 3. Удалить старые таблицы. Если п.2 не нужен - легче вообще начать с пустой базы, выполнив на ней скорректированный скрипт создания таблицы. Если есть какие-то запросы, нужно оставить один, добавив в него недостающие поля (или вообще заново создать). В приведенном примере у вас выполняется скрипт INSERT, формируемый динамически. Это не совсем запрос, и добавление в него новых полей не представляет никакой сложности (просто дописываете и все). Кстати для правки записей нужен еще UPDATE. |
#24
|
||||
|
||||
Цитата:
Что за скрипт создания таблицы? |
#25
|
|||
|
|||
Все базы данных используют язык запросов SQL.
Язык SQL используется для создания таблиц (CREATE TABLE), запроса данных из таблиц (SELECT), вставки строк в таблицу (INSERT), правки отдельных полей (UPDATE) и пр. Примерно так выглядит скрипт для создания таблицы: Код:
CREATE TABLE schools ( id smallint(5) unsigned NOT NULL, name char(100) default NULL, director char(100) default NULL, address char(255) default NULL, description char(255) default NULL ) Имея такие скрипты для каждой из трех таблиц, можно получить скрипт для создания общей таблицы простым копипастом. Последний раз редактировалось Lucky192, 11.10.2011 в 21:24. |
#26
|
||||
|
||||
Ну а как сделать при выборе записи в Grid и при нажатии на кнопку изменить компоненты на форме автоматически заполнялись информацией о выбранной записи?
|
#27
|
|||
|
|||
Вкладка DataControls в палитре компонентов. Там находятся визуальные компоненты для работы с базой данных. Все эти компоненты работают через TDataSource (каждый компонент содержит обязательно свойство DataSource).
Датасорс - это такой интерфейс для работы с набором записей. Сам набор записей это TDataSet (у TDataSource есть обязательное поле DataSet, где можно выбрать доступные источники данных - например SQL запрос). Одна из записей является текущей - на нее установлен т.н. "курсор". Текущая запись подсвечивается в компонентах типа DBGrid или просто выводится в компонентах, работающих с одним полем (DBText, DBEdit и т.д.). Датасет можно перевести в режим редактирования, тогда поля текущей записи (на которую установлен курсор) можно будет редактировать с помощью компонентов со вкладки DataControls. Передача измененных значений в базу осуществляется методом Post. Метод Post автоматически вызывается при переходе на другую запись (естественно только в том случае, если текущая запись находилась в режиме редактирования). У компонентов, работающих с конкретным полем обязательно нужно указывать имя поля (свойство DataField). У DBGrid можно ничего не указывать, а можно настроить список полей как удобно (убрать лишние, дать осмысленные названия, настроить параметры отображения и т.д.). Также список полей можно настраивать у компонентов, относящихся к TDataSet (убирать поля, добавлять вычисляемые, настраивать их отображение и пр.) |