![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FireBird - dbExpress: ошибка при вызове RefreshRecord, FetchBlobs
Прогер © (2004-06-22 14:22:00)При вызове этих методов датасет генерирует внутри запрос, где она получает эту запись.
Примерно так:
Если у меня есть таблица с записями картинок (картинки - блобы).
select * from MyTable
То когда я вызываю FetchBlobs (также при RefreshRecord, UpdateRecord), то она генерирует след. запрос:
select id, name, pic from MyTable where id=? and name=?
Тут все понятно, имя таблицы она видимо вытаскивает из тескта запроса и задает параметры.
Но есть у меня процедура, которая по параметру выдает только часть данных из таблицы - MyProc(:prm)
select * from MyProc(:prm)
Когда тут я вызываю те методы, то она почему-то теряет параметр процедуры и получается:
select id, name, pic from MyProc(NULL) where id=? and name=?
Конечно так она ту запись не найдет и выходит ошибка.
Нельзя как-то указать ему (TSQLClientDataSet) что данные берутся из процедуры и она должна брать еще его параметр?
Прогер (2004-06-23 06:26:00) [1]я бы ручками сам прописал, но это же стандартный юнит
provider.pas, там процедура
TSQLResolver.GenSelectSQL
ее менять мне кажется нецлесобразно.
просто выборка данных идет из процедуры и проблема из-за этого,
я думал может кто сталкивался.
остальные я думаю тоже используют такую же технологию при повторном обращении к записи.
Соловьев (2004-06-22 14:33:00) [2]Пиши ручками CommandText
А вообще лучше использовать нормальные компоненты под ФБ - IBX, FIBPlus
Johnmen (2004-06-22 14:32:00) [3]>датасет генерирует внутри запрос
Так пропиши сам, руками...:)