none
fields with attachment in access 2007 RRS feed

  • Вопрос

  •  

    возникла такая проблема.при написании запроса UNION возникает ошибка

    текст запроса :

     

    SELECT data.city, competitors.competitor, data.date_on, data.date_off, data.artikul, data.price_before, data.price_promo, brand.b_eng, data.[nr tygodnia], data.Pole10, data.gramatura, data.[rodzaj promocji], data.[rodzaj pakowania], data.[zał foto art]
    FROM brand INNER JOIN (competitors INNER JOIN data ON competitors.ID=data.id_compet) ON brand.id=data.brand_name
    WHERE (((data.artikul)=[Forms]![General]![Combo16]))
    UNION ALL SELECT data1.city, competitors.competitor, data1.date_on, data1.date_off, data1.artikul, data1.price_before, data1.price_promo, brand.b_eng, data1.[nr tygodnia], data1.Pole10, data1.gramatura, data1.[rodzaj promocji], data1.[rodzaj pakowania], data.[zał foto art]
    FROM brand INNER JOIN (competitors INNER JOIN data1 ON competitors.ID=data1.id_compet) ON brand.id=data1.brand_name
    WHERE (((data1.artikul)=[Forms]![General]![Combo16]));

     

    ошибка такая: The multi-valued fields 'data.[zał foto art]'  cannot be used in UNION query

    'data.[zał foto art]'-это новая фишка аксеса 2007: поле с вложением, в этом поле хранятся картинки,каждой записи соответсвует своя картинка.

     

    как можно решить эту проблему?

    заранее спасибо

    14 августа 2008 г. 13:23

Ответы

  • SQL запрос UNION работает по "стандартным" правилам и, как верно было замечено в ошибке, не понимает многозначных полей. Не только полей "с вложениями", но и таких новых полей как "Списков с множественным выбором".

     

    При применении UNION объединяемые таблицы/запросы должны иметь одинаковое количество идентичных по типу и однозначных полей.

     

    Если вам необходимо получить выборку вложений можно попробовать следующее:

     

    1. Построить запрос к требуемым таблицам, который будет включать в том числе обращение к уникальному идентификатору записи recID и многозначному полю вложений. При этом в запрос из многозначного поля XXX вложений можно вывести "XXX.FileData", "XXX.FileName" и "XXX.FileType". Выводим в запросе XXX.FileName. Строим другие аналогичные запросы ...

     

    2. Объединяем данные запросы при помощи UNION (Проверено работает. При попытке вытащить в запрос XXX.FileData выдает ошибку).

     

    3. Присоединяем результаты полученного объединенног запроса к исходным таблицам/запросам через связь "recID+XXX.FileName" (Предполагается, что у каждой уникальной записи в таблице присутствует единственное вложение с ТАКИМ именем Smile ) и получаем требуемый результат.

     

    Единственная проблема может возникнуть если в объединяемых таблицах будет повторяться сочетание recID+XXX.FileName. В этом случае для устранения конфликта в вышеприведенные изначальные запросы можно добавить поле tabID однозначно характеризующее выборку из данной таблицы. Связь тогда будет выглядеть как "tabID+recID+XXX.FileName".

     

    P.S. Вообще все очень хорошо описано в разделе справки "Использование в запросах полей, одновременно допускающих несколько значений".
    15 августа 2008 г. 5:21

Все ответы

  • SQL запрос UNION работает по "стандартным" правилам и, как верно было замечено в ошибке, не понимает многозначных полей. Не только полей "с вложениями", но и таких новых полей как "Списков с множественным выбором".

     

    При применении UNION объединяемые таблицы/запросы должны иметь одинаковое количество идентичных по типу и однозначных полей.

     

    Если вам необходимо получить выборку вложений можно попробовать следующее:

     

    1. Построить запрос к требуемым таблицам, который будет включать в том числе обращение к уникальному идентификатору записи recID и многозначному полю вложений. При этом в запрос из многозначного поля XXX вложений можно вывести "XXX.FileData", "XXX.FileName" и "XXX.FileType". Выводим в запросе XXX.FileName. Строим другие аналогичные запросы ...

     

    2. Объединяем данные запросы при помощи UNION (Проверено работает. При попытке вытащить в запрос XXX.FileData выдает ошибку).

     

    3. Присоединяем результаты полученного объединенног запроса к исходным таблицам/запросам через связь "recID+XXX.FileName" (Предполагается, что у каждой уникальной записи в таблице присутствует единственное вложение с ТАКИМ именем Smile ) и получаем требуемый результат.

     

    Единственная проблема может возникнуть если в объединяемых таблицах будет повторяться сочетание recID+XXX.FileName. В этом случае для устранения конфликта в вышеприведенные изначальные запросы можно добавить поле tabID однозначно характеризующее выборку из данной таблицы. Связь тогда будет выглядеть как "tabID+recID+XXX.FileName".

     

    P.S. Вообще все очень хорошо описано в разделе справки "Использование в запросах полей, одновременно допускающих несколько значений".
    15 августа 2008 г. 5:21
  •  

    спасибо за помощь!

    только вот неясно каким образом реализовать пункт 3?

    можно это объяснить поподробней пожалуйста?

    15 августа 2008 г. 10:42