Форум: "Базы";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
ВнизВылет при изменении данных в гриде (Eh) Найти похожие ветки
← →
Дмитрий (2011-07-15 20:27) [0]Использую связку TIBXDataDriverEh -> TMemTableEh -> TDataSource -> TDBGridEh. БД - Firebird 2.5. Делфи - 2010, Ehlib 5.2
Выполняю SELECT запрос с нескольких таблиц (JOIN):
SELECT m.mash_name,sup.supp_name,det.det_name,r.det_code,
det.det_unit,st.cost,st.in_order,st.in_storage,st.notes,
r.date_add FROM Storage st
JOIN Relation r ON st.rel_id = r.rel_id
JOIN Detail det ON r.det_id = det.det_id
JOIN Supplier sup ON r.supp_id = sup.supp_id
JOIN Mashine m ON r.mas_id = m.mas_id
На Грид данные выводит нормально, но при изменении их вываливает EIBClientError "empty SQL statement" . Как исправить?
Нужно что-либо писать в UpdateSQL или ModifySQL? Можете пример написать пожалуйста?
← →
Loginov Dmitry © (2011-07-15 22:16) [1]
> Нужно что-либо писать в UpdateSQL или ModifySQL?
Какой эффект Вы планируете получить от редактирования данных в гриде?
← →
Дмитрий (2011-07-15 23:30) [2]изменение значения на вводимые и сохранение в базе вместо текущего значения
← →
SQLEXPRESS (2011-07-16 00:54) [3]ну и надо писать в UpdateSQL соответствующий запрос, для
> изменение значения на вводимые и сохранение в базе вместо
> текущего значения
← →
Loginov Dmitry © (2011-07-16 11:04) [4]UpdateSQL может не прокатить. У автора 5 таблиц. Нужна хранимая процедура или вьюха (насчет редактируемых вьюх - читайте релизноты), способная раскидать данные по таблицам. Либо делать несколько UPDATE / INSERT - запросов, но программировать придется ручками. Скорее всего, в TIBXDataDriverEh (по аналогии с TDataSetProvider) должно быть что-то наподобие OnBeforeUpdateRecord, в котором следует выполнять необходимые SQL-запросы.
← →
Виталий Панасенко (2011-07-18 14:10) [5]>
> Loginov Dmitry © (16.07.11 11:04) [4]
Если 2,5, то есть execute block 100%. и ни ХП, ни вьюха - нахрен не нужна
← →
Виталий Панасенко (2011-07-18 14:11) [6]а то, что пустое выражение... так это пусть автор рулит
← →
Loginov Dmitry © (2011-07-18 22:16) [7]
> Если 2,5, то есть execute block 100%. и ни ХП, ни вьюха
> - нахрен не нужна
В execute block параметры фиг передашь, поэтому не ясно, можно ли его каким-то образом приспособить для UpdateSQL/InsertSQL.
Я в свое время долго бился с этой проблемой, но в конечном итоге плюнул и решил составлять SQL-запрос динамически.
← →
Loginov Dmitry © (2011-07-18 23:18) [8]Вроде execute block должен работать в UpdateSQL, судя по
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=300731&msg=2738067
http://peaktopsoft.blogspot.com/2009/03/firebird-2-01.html
Однако у меня на IBX-компонентах упорно выдает "Unknown SQL Data type (0)". ParamCheck=False - не помогает.
Ну хоть у фибов проблем с execute block нет.
← →
PEAKTOP © (2011-07-19 15:22) [9]> http://peaktopsoft.blogspot.com/2009/03/firebird-2-01.html
> Однако у меня на IBX-компонентах упорно выдает "Unknown SQL Data type (0)". ParamCheck=False - не помогает.
> Ну хоть у фибов проблем с execute block нет.
Ты раз уж мою статью привел, прочитал бы ее внимательно. Даже там написано, что передача параметров в динамическую хранимую процедуру (EXECUTE BLOCK) - невозможна.
У меня самописная библиотека доступа к Firebird на основе IBX, и когда я столкнулся с аналогичной проблемой, то я просто "выпилил" из нее передачу параметров в запросы через двоеточие, оставив исключительно вопросительный знак (в оригинале IBX можно и так, и так, и даже одновременно обоими способами вперемежку).
Но править там много нужно, ибо криворукий дядя Джефф Оверкеш напихал запросов по всем unit-ам библиотеки в самых разнообразных местах и везде - передачи параметров через двоеточие.
Кстати там еще и пару грабелек заботливо разложено в IBSQL.PAS.
← →
Loginov Dmitry © (2011-07-19 22:06) [10]
> Ты раз уж мою статью привел, прочитал бы ее внимательно.
Мне ее гугл привел, я особо не вчитывался, так что не обижайся. Могу оправдаться тем, что мне оно не сильно принципиально, но хотелось все же приблизиться к истине :)
Надеюсь, что у фибов таких проблем с execute block нет (опять же проверять - лень).
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.057 c