Вниз
Скачать: CL | DM;

проблема TADOQuery + MSAccess + Union   Найти похожие ветки 

← →
vidiv ©   (2006-12-30 10:05) [0]

Вобщем работаю с базой данных MSAccess через компоненты ADO. Проблема возникает при работе с компонентов TADOQuery.

При таком запросе:
SELECT image FROM brand WHERE id IN (2)
компонент передает правильное значение для поля image, а при таком запросе:
(SELECT image FROM brand WHERE id IN (2)) UNION
(SELECT image FROM item1 WHERE id IN (45))

обрезает значение поля image, таким образом, что бы оно уместилось в 255 символов.

Как с этим бороться?


← →
vidiv ©   (2006-12-30 10:09) [1]

Практика показала, что сам Access возвращает такое значение при таком запросе => ADO, Delphi и конструкция приложения тут не причем, нужно изменить какимто образом запрос. Ктонибудь сталкивался?


← →
vidiv ©   (2006-12-30 10:46) [2]

Нашел решение сам.

(SELECT image FROM brand WHERE id IN (2)) UNION ALL
(SELECT image FROM item1 WHERE id IN (45))


Недокументированная фича ALL :(


← →
Savek   (2006-12-30 13:00) [3]

Возможно это и помогло тебе, но предикат ALL предназначен для других целей


← →
sniknik ©   (2006-12-30 13:35) [4]

> Недокументированная фича ALL :(
ALL "говорит", что не нужно делать отбор уникальных значений из запросов в обьеденении... а т.к. если делать то это влечет за собой не явную сортировку(индекс)/группировку по выбранному полю, чего для мемо и обьектных полей делать нельзя... с ALL же обьеденяется as is без всякой обработки (если конечно нет других факторов, например разные типы у полей в обьеденяемых запросах... что повлечет за собой, если это возможно, неявное преобразование типов во вторичных запросах).

непонятно только почему он у тебя хоть чтото выдавал пусть и с ошибочным значением...
должно было просто давать ошибку.
одно из двух,
либо показанный запрос не соответствует действительности, в реальном есть еще чтото (преобразование типа например), и что подтверждается еще одним "глюком" запросов использованием зарезервированного слова без всяких предосторожностей (еще одну ошибку должно давать. т.е. показанные запросы полностью нерабочие),
либо я не знаю чего...


← →
vidiv ©   (2006-12-30 17:09) [5]

в реальном запросе обединены 4 запроса с одинаковыми типами полей, с использованием алиасов, и еще пару параметров извлекается... по идее ничего не особенного я не упростил...


> ALL "говорит", что не нужно делать отбор уникальных значений
> из запросов в обьеденении...

я это уже прочитал в хелпе =)


← →
Anatoly Podgoretsky ©   (2006-12-30 17:24) [6]

> vidiv  (30.12.2006 10:05:00)  [0]

in заменить на =


← →
sniknik ©   (2006-12-30 17:25) [7]

> по идее ничего не особенного я не упростил...
а ты попробуй, и именно так как приводишь, не меняя ни одной буквы
> (SELECT image FROM brand WHERE id IN (2)) UNION
> (SELECT image FROM item1 WHERE id IN (45))
2 ошибки последовательно должно выдать, одну после исправления другой.


← →
sniknik ©   (2006-12-30 17:27) [8]

а вот описанной ситуации с конвертацией блоба в стринг/бинари 255, быть не должно.


← →
vidiv ©   (2006-12-31 03:47) [9]


> Anatoly Podgoretsky ©   (30.12.06 17:24) [6]
> > vidiv  (30.12.2006 10:05:00)  [0]
>
> in заменить на =

это частный случай, в полном должнобыть: id IN (2,8,9) и так далее


← →
Anatoly Podgoretsky ©   (2006-12-31 11:59) [10]

> vidiv  (31.12.2006 3:47:09)  [9]

А нечего говорить потом.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.041 c
15-1172815231
ZeroDivide
2007-03-02 09:00
2007.03.25
Как называется язык в котором вы программируете на Delphi?


11-1151927465
oleg_l_k
2006-07-03 15:51
2007.03.25
handle моего приложения


11-1151921952
Maloric
2006-07-03 14:19
2007.03.25
Как правильно вызвать chm хелп


15-1172522655
Kerk
2007-02-26 23:44
2007.03.25
Работа


11-1151018833
DevilDevil
2006-06-23 03:27
2007.03.25
Smart-Linking




   Наверх