Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Добавление новой записи с помощью навигатора  [new]
Hadroran
Member

Откуда:
Сообщений: 70
Привет всем.
Есть 2 зависимые таблицы. (Т1 - категория товара и Т2 - товар)
Т1 состоит из полей ID (не пустое) и CATNAME - компонент IBTable
Т2 состоит из полей ID(не пустое), IDCAT(не пустое) и ITEMNAME - компонент IBDataSet
В СУБД созданы первичные ключи Т1.ID и Т2.ID а также вторичный ключ на связь Т1.ID и Т2.IDCAT
На гриде с Т2 установлен навигатор.
Вопрос в следующем.
Например в таблице Т1 мы встали на запись с ID = 3
При нажатии кнопки "добавить запись" на навигаторе на гриде таблицы Т2 вводим значения. После попытки поста появляется сообщение "Полю ID требуется значение". Вроде есть триггер на инкремент перед вставкой.
Ну ладно. Убираем галочку "не пустое" с поля T2.ID.
Следующее сообщение после попытки поста - "Полю IDCAT требуется значение".
В свойстве T2.InsertSQL имеем запрос
INSERT INTO T2 (IDCAT, ITEMNAME) VALUES (:IDCAT, :ITEMNAME)

Полагаю, что значение :IDCAT - пустое.
Как в :IDCAT задать значение T1.ID и правильно ли я "победил" сообщение "Полю ID требуется значение"?
8 янв 18, 16:46    [21087784]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2596
Hadroran
Как в :IDCAT задать значение T1.ID и правильно ли я "победил" сообщение "Полю ID требуется значение"?


1. задать ручками
2. что именно ты победил?
8 янв 18, 17:08    [21087814]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Любезный
Member

Откуда:
Сообщений: 566
автор
На гриде с Т2 установлен навигатор.

Здесь Delphi никто не знает. (С)
8 янв 18, 19:37    [21088046]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27654
Hadroran
Как в :IDCAT задать значение T1.ID

видимо, для датасета с T2 не указана зависимость от датасета T1.
связь эта делается через datasource. Читаем
http://www.ibase.ru/ibx/
раздел Master-Detail.
8 янв 18, 19:46    [21088069]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27654
Hadroran,

гм, про мастер-деталь не совсем в кассу, тогда дополню, что в данном случае датасет Т1 является "справочным" для столбца idcat T2. В общем, почитайте про датасеты и datasource, и т.д.
8 янв 18, 19:48    [21088074]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Hadroran
Member

Откуда:
Сообщений: 70
Как всегда не удивлен....
8 янв 18, 20:14    [21088106]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Hadroran
Member

Откуда:
Сообщений: 70
Любезный
автор
На гриде с Т2 установлен навигатор.

Здесь Delphi никто не знает. (С)


Ах да... навигатор то тока в дельфях... Простите что не по адресу.
8 янв 18, 20:18    [21088113]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Hadroran
Member

Откуда:
Сообщений: 70
Тогда может кто подсказать. В коде для свойства InsertSQL
INSERT INTO T2 (IDCAT, ITEMNAME) VALUES (:IDCAT, :ITEMNAME)

:IDCAT как можно написать, чтобы значение бралось с Т1.ID.
Ну например, так (но так не работает)
INSERT INTO T2 (IDCAT, ITEMNAME) VALUES (:"T1"."ID", :ITEMNAME)
8 янв 18, 20:21    [21088123]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59459
Hadroran> Как всегда не удивлен....

Чему именно?

1. Топик создал не там (модераторы перенесут).
2. Это классическая связка мастер-деталь.
Соответственно её техническая реализация
зависит от используемой библиотеки доступа
(которую ты не назвал).

Posted via ActualForum NNTP Server 1.5

8 янв 18, 20:26    [21088133]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59459
kdv
Читаем http://ibase.ru/ibx раздел Master-Detail.
Глянул по диагонали.

1. Во-первых, в статье нет оглавления со ссылками
(не помню, было ли раньше - кажется, было) - для
статьи таких размеров в 2018 это даже не смешно.

2. Статья (особенно указанный раздел) устарела
очень сильно, нужно дописывать, ИМХО.
8 янв 18, 20:36    [21088155]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59459
Hadroran> :IDCAT как можно написать, чтобы значение бралось с Т1.ID.

Зависит от библиотеки доступа. В FIBPlus можно использовать префикс MAS_.
Ну и, конечно, во всех библиотеках можно вручную заполнять, наверное.

Posted via ActualForum NNTP Server 1.5

8 янв 18, 20:38    [21088156]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27654
Гаджимурадов Рустам
Во-первых, в статье нет оглавления со ссылками
(не помню, было ли раньше - кажется, было) - для
статьи таких размеров в 2018 это даже не смешно.

не было там оглавления. ибо нефиг. читать надо все. Статья для начинающих, а не справочник с заходами на нужные темы.
В конце-концов есть кнопка Ctrl-F.

Гаджимурадов Рустам
Статья (особенно указанный раздел) устарела
очень сильно, нужно дописывать

устарела в каком именно смысле? В IBX все по прежнему, ничего существенно нового (кроме юникода) с момента написания статьи не появилось.
А про то что спрашивает автор топика, там и так не было. Типа, это слишком просто, чтобы спрашивать, да и не спрашивал никто.
8 янв 18, 23:28    [21088476]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27654
Гаджимурадов Рустам,

собственно, вопрос сугубо интерфейсный, и достаточно дурной. Допустим, мы видим таблицу Т2 в гриде.
А как мы видим таблицу Т1? Тоже в гриде, отдельном? И что, надо встать в гриде Т1, а потом жмакать кнопку вставки в гриде Т2?
Ересь какая-то. Почему-бы не сделать в поле idcat вываливающийся список значений из Т1. Как это делать - написано во всех учебниках.
8 янв 18, 23:32    [21088490]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
чччД
Guest
kdv
... И что, надо встать в гриде Т1, а потом жмакать кнопку вставки в гриде Т2?
Ересь какая-то. Почему-бы не сделать в поле idcat вываливающийся список значений из Т1...

Одно другому не мешает. Если ты работаешь с элементами (Т2) конкретной категории (ссылающимися на конкретную записью таблицы T1), то вполне логично, что добавление нового элемента в T2 автоматически заполняет ключевое поле, ссылающееся на соответствующий элемент T1. Если не устраивает- меняешь (вываливается список и т.п.).

Модератор: Тема перенесена из форума "Firebird, InterBase".
9 янв 18, 00:03    [21088530]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи с помощью навигатора  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59459
kdv> не было там оглавления. ибо нефиг. читать надо все

Узнаю брата Колю, узнаю... (с) Если на суахили на каком-нибудь
сельскохозяйственном форуме Танзании кто-то напишет что-то
в таком же стиле - я подумаю, что это ты там отпуск проводишь.

> устарела в каком именно смысле?

Раз для начинающих - надо как HowTo - связали - молодцы, а
инсертим так-то и так-то (примеры для известных 2-3 способов).

kdv> собственно, вопрос сугубо интерфейсный

Не, GUI тут как раз второстепенен. ТС хочет вставлять
через присвоение DetailDataSet.Fields + Post и спрашивает как.

kdv> Ересь какая-то. Почему-бы не сделать в поле idcat
kdv> вываливающийся список значений из Т1.

Это а) подразумевает использование лукапов, которых многие
(если не большинство) чураются (кто - из брезгливости, кто из
религиозных соображений, кого производительность/удобство
не устраивают, кто тупо приготовить не смог); б) редактирование
в гриде, что ещё хуже, чем "а". Так что сам ты ересь.

Posted via ActualForum NNTP Server 1.5

9 янв 18, 00:20    [21088544]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить