Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.01.15;
Скачать: CL | DM;

Вниз

Вылет при изменении данных в гриде (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
6-1256640553
Encore
2009-10-27 13:49
2017.01.15
Post/get неверная кодировка


2-1422788793
A1ekceu
2015-02-01 14:06
2017.01.15
Проверка кода


6-1281776559
Симулятор
2010-08-14 13:02
2017.01.15
Как сделать симуляцию в индиевских серверах?


2-1420137726
Боб
2015-01-01 21:42
2017.01.15
Загрузка аудиозаписей в VK


2-1421889993
duponamk
2015-01-22 04:26
2017.01.15
Сортировка данных по нажатию на заголовок DBGrid