Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

проблема 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 вся ветка

Форум: "Базы";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
2-1172647396
Нуб
2007-02-28 10:23
2007.03.25
Button


15-1172132265
Ega23
2007-02-22 11:17
2007.03.25
Компонентик не потестируете?


15-1172930690
Servelat
2007-03-03 17:04
2007.03.25
Ключевое слово "object"


2-1172776344
sat
2007-03-01 22:12
2007.03.25
командная строка


1-1170086620
RedBanner
2007-01-29 19:03
2007.03.25
Скрыть окно программы с панели задач





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский