|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2015, 17:39 | #1 |
Пользователь
Регистрация: 18.04.2012
Сообщений: 10
|
Добавление записи в подчиненную таблицу
Добрый день
Прошу вашей помощи. Как и все только учусь... (образования программиста не имею, просто для общего развития хочется уметь - любопытный я очень)))) Имею две связанные таблицы в MSAccess 2000 1) FurgonModelCatalog Id_FurgonModel - счетчик FurgonModel - string 2) FurgonGradeCatalog Id_FurgonGrade - счетчик Id_FurgonModel - integer FurgonGradePrice - integer Id_ChassisMarka - integer Id_ChassisModel - integer SQL запрос на заполнение второй таблицы: SELECT * FROM FurgonGradeCatalog WHERE Id_FurgonModel=:Id_FurgonModel в DBGrid настроена видимость только нужных колонок Если заполнять все вручную в DBGrid - все работает - но это и неудобно и не правильно. Поэтому для добавления новой записи в FurgonGradeCatalog создал отдельную модальну форму, на которой есть 2 DBLookUpComboBox и Edit в Id_ChassisMarka пытаюсь вставить DBLookUpComboBox1.KeyValue в Id_ChassisModel пытаюсь вставить DBLookUpComboBox2.KeyValue в FurgonGradePrice - Edit1.Text нужен код на кнопку BTN1 на добавление новой записи во вторую таблицу и закрытие формы. у меня ничего не получается((((( что делаю я: Код:
соответственно нужно где-то его добавить но где, если он автоматом добавляется из первой таблицы... почему не делаю через ADOTable? (кстати через ADOTable все работает) - гораздо проще сортировка фильтрация и многое другое что смог пока усвоить А еще бы совет - хороший самоучитель для совсем незнаек по SQL+Delphi (Фленов эту тему обошел стороной лишь немного зацепив...) Последний раз редактировалось Stilet; 02.04.2015 в 16:13. |
01.04.2015, 17:47 | #2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
02.04.2015, 15:23 | #3 |
Пользователь
Регистрация: 18.04.2012
Сообщений: 10
|
Решил таким образом, если есть варианты другого решения - прошу гуру подсказать
procedure TFormFurgonGradeNewChassis.BitBtn1C lick(Sender: TObject); begin DataModuleCalculator.QueryFurgonGra deCatalog.Close; DataModuleCalculator.QueryFurgonGra deCatalog.SQL.Clear; DataModuleCalculator.QueryFurgonGra deCatalog.SQL.Text:='insert into FurgonGradeCatalog(Id_FurgonModel, Id_ChassisMarka, Id_ChassisModel,FurgonGradePrice,Na cencaDilera)'+' values ('+DataModuleCalculator.QueryFurgon ModelCatalog.FieldByName('Id_Furgon Model').AsString+',:a, :b, :c, ) '; DataModuleCalculator.QueryFurgonGra deCatalog.Parameters.ParamByName('a ').Value:=DBLookupComboBox1.KeyValu e; DataModuleCalculator.QueryFurgonGra deCatalog.Parameters.ParamByName('b ').Value:=DBLookupComboBox2.KeyValu e; DataModuleCalculator.QueryFurgonGra deCatalog.Parameters.ParamByName('c ').Value:=Edit1.Text; DataModuleCalculator.QueryFurgonGra deCatalog.Parameters.ParamByName('d ').Value:=Edit2.Text; DataModuleCalculator.QueryFurgonGra deCatalog.ExecSQL; DataModuleCalculator.QueryFurgonGra deCatalog.SQL.Clear; DataModuleCalculator.QueryFurgonGra deCatalog.SQL.Text:='SELECT * FROM FurgonGradeCatalog WHERE Id_FurgonModel=:Id_FurgonModel'; DataModuleCalculator.QueryFurgonGra deCatalog.Open; FormFurgonGradeNewChassis.Close; end; |
02.04.2015, 16:06 | #4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
если уж мы работаем с параметризованным запросом, то лучше было бы все данные оформить параметрами Код:
программа — запись алгоритма на языке понятном транслятору
|
|
03.04.2015, 09:37 | #5 |
Пользователь
Регистрация: 18.04.2012
Сообщений: 10
|
Появилась другая проблема:
и поискал по форумам она же встречается не только у меня в DBGrid пользователю не понятны числовые Id_ для этого добавил 2 lookup поля ChassisMarka и ChassisModel, которые заполняются из связанных таблиц ChassisMarkaCatalog и ChassisModelCatalog. поле ChassisMarka отображается нормально, а вот ChassisModel часть полей заполнены, а часть пустые. Заполняются только модели от одной марки. есть ли возможность как-то это исправить? или придется переписывать SQL запрос иначе и отказаться от lookup полей? |
03.04.2015, 11:23 | #6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
ОНА (ChassisModelCatalog) ведь используется еще и для других целей кроме как быть источником LookUp полей ?
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 03.04.2015 в 11:25. |
|
03.04.2015, 11:56 | #7 | |
Пользователь
Регистрация: 18.04.2012
Сообщений: 10
|
Цитата:
вот теперь ищу решение как без Inner Join вывести в lookup полях значения моделей для разных марок. вернее готов использовать и Inner Join только не получается сделать запрос на добавление новых записей в таблицу FurgonGradeCatalog. Inner Join использую только для выведения данных из нескольких таблиц, которые не редактируются, а только выводят информацию на экран. |
|
03.04.2015, 16:04 | #8 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
1. иметь ДВА и более "копий" одной таблицы
это не две таблицы БД, а именно два разных набора данных (DataSet) связанных с одной таблицей БД, но имеющих разные(!!) наборы строк A. для фильтра Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
03.04.2015, 17:48 | #9 |
Пользователь
Регистрация: 18.04.2012
Сообщений: 10
|
решил проблему немного другим методом.
поскольку lookup поля в точности повторяли текст из DBCombobox то просто удалил их и добавил да поля в которые этот самый текст и запихнул - может это не правильно но зато нет никаких лишних таблиц))) и фильтры теперь работают хорошо ))) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Добавление записи в таблицу через таблицу | Anton911 | БД в Delphi | 0 | 14.05.2012 11:51 |
Добавление записи в таблицу | chinock | Microsoft Office Access | 2 | 24.09.2010 14:39 |
Добавление записи в таблицу | Galiska | БД в Delphi | 3 | 25.05.2010 08:07 |
Добавление записи в таблицу | folga | БД в Delphi | 4 | 21.04.2010 08:15 |
Добавление записи в таблицу (ADO) | Yura_S | БД в Delphi | 12 | 25.11.2009 19:11 |