Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1457219940
Eraser
2016-03-06 02:19
2017.01.15
Требуется ядерщик


3-1310747259
Дмитрий
2011-07-15 20:27
2017.01.15
Вылет при изменении данных в гриде (Eh)


2-1421904151
i2e
2015-01-22 08:22
2017.01.15
В MDI-приложении надо программно сделать окно активным


15-1452147343
pavelnk
2016-01-07 09:15
2017.01.15
Вирусная программа в браузере


4-1279284463
POP
2010-07-16 16:47
2017.01.15
Есть ли смысл (сейчас) в Win_Inet_API?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский