Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2011, 12:43   #11
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Во-первых это не очевидно, во-вторых это опасно в контексте уникальности/целостности данных, в-третьих смотрите второй абзац пред. постинга.

Не понимаю зачем городить этот кривой и опасный огород, когда есть уже в СУБД метод RETURNING - при помощи которого точно будет назван ID главной создаваемой записи в ТД - нужно просто правильного его получить / использовать / вернуть в exe.
delphicoding вне форума Ответить с цитированием
Старый 06.09.2011, 13:14   #12
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

Цитата:
Не понимаю зачем городить этот кривой и опасный огород, когда есть уже в СУБД метод RETURNING - при помощи которого точно будет назван ID главной создаваемой записи в ТД - нужно просто правильного его получить / использовать / вернуть в exe.
Ну так используйте.

Код:
Хранимая процедура 
begin
insert (...)
select returnihg
end;
C FireBird не работал.
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 06.09.2011, 16:09   #13
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Это понятно. Но тогда вопрос - как передать в ХП в FB данные из программы, которых аж две порции - новая запись ТД с кучей полей + целая таблица связей для таблицы ТС... передавать всё это в одну процедуру это получается уже изврат, усложнение...

Оптимально было бы так : сохраняем запись ТД напрямую в таблицу путём Insert, и через RETURNING __как-то__ получаем обратно в программу новый ТД_ID, сразу после чего зная ТД_ID и ранее зная ТЮ_ID __как-то__ постим таблицу связей ТС.*

* Напоминаю, что храниться должны только те записи, которые реально связаны, то есть если связь более не нужна - запись из таблицы связей ТС должна удаляться.

Прошу помочь профи с подстановкой правильного кода в места "_как-то_"
delphicoding вне форума Ответить с цитированием
Старый 07.09.2011, 11:22   #14
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Профи, подскажите, пожалуйста, код:
а) Создание новой записи ТД, масса полей, все ассоциированы с Dataset_ТД - всё прекрасно пашет при редактировании записи ТД и отлично Update. Но использовать Dataset_ТД для создания новой записи ТД с Insert нельзя, тк почему-то не приходит в него RETURNING, который необходим для записи связей ТС. Попробуем использовать FIBQuery, который должен получить RETURNING. Вопрос - как написать код, чтобы в FIBQuery не прописывать все поля новой записи ТД а использовать настройки Dataset? то есть нужен код вроде: FIBQuery.Query(Dataset.Insert) или типа того, то есть использовать в запросе FIBQuery данные и поля из Dataset. (чтобы не нагромождать лишний код и использовать универсальную унаследованную форму с FIBQuery).
б) Если а) невозможно, то тогда прошу подсказать код как наиболее правильно и легко взять поля из Dataset и отправить с FIBQuery?
в) Пост связей в таблицу ТС - можно как-то запостить их в одну строку скопом? без цикла перебора каждой записи? Нужен код вида: Post All where Checked.
delphicoding вне форума Ответить с цитированием
Старый 07.09.2011, 17:11   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

Цитата:
как наиболее правильно и легко взять поля из Dataset
DatфSet.Fields.count
DataSet.fields.Field[j].Fieldname
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 08.09.2011, 12:36   #16
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Получилось обойтись без FIBQuery.
delphicoding вне форума Ответить с цитированием
Старый 08.09.2011, 15:41   #17
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

а,б-решено.

в - пока не очень - можно как-то в одну строку запостить все строки Dataet2 отмеченные галочкой? При этом нужно им всем ещё назначить новый ТД_ID...
delphicoding вне форума Ответить с цитированием
Старый 09.09.2011, 14:32   #18
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

FIBDataset при команде Post постит по каждой команде по одной строке на которой курсор? Или сразу сам постит всю свою таблицу?
delphicoding вне форума Ответить с цитированием
Старый 11.09.2011, 13:59   #19
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Решено, тему можно закрывать/удалять.
delphicoding вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Атрибуты выпадающего списка, как ускорить выбор в выпадающем списке sevalery PHP 1 01.08.2011 13:51
Как задать выбор значения с помошью списка в VBA? k.soldatova Помощь студентам 4 20.07.2011 16:58
как реализовать сложный выбор из выпадающего списка? yulkas Помощь студентам 9 22.03.2010 09:54
Как ограничить выбор списка или сделать зависимость? Стасон Microsoft Office Excel 4 29.03.2009 09:18
сортировка динамического списка new_sergei Помощь студентам 1 19.12.2008 00:36