2013-10-14 1 views
1

Я создал приложение доступа для завода-изготовителя и предоставил им отчет, в котором перечислены различные точки данных по процессу. У меня есть способ создать отчет, который выглядит следующим образом.Поворот на нескольких полях и экспорт из Access

Batch  Zone Value1  Value 2 etc. 
25  1  5   15 
25  2  12   31 
26  1  6   14 
26  2  10   32 

Однако существует потребность в просмотре данных в другом формате. Они хотели бы иметь одну строку в каждой партии со всеми горизонтальными данными. Как это ...

   Zone 1    Zone 2 
Batch  Value1  Value2  Value1  Value2 
25  5   15   12   31 
26  6   14   10   32 

Всего будет 157 столбцов, если они отображаются, как и во втором примере. Существует 7 уникальных имен полей, но остальные - 14 различных типов данных, которые повторяются. Я не могу получить запрос для отображения данных в том формате, который они хотят, сделать так, чтобы имена полей были одинаковыми, но нетрудно сделать это первым способом. Я могу использовать VBA для вставки данных в таблицу, но я не могу использовать имена повторяющихся полей, поэтому, когда я иду экспортировать это в Excel, имена полей ничего не означают, и не может быть секций (например, zone1 , zone2 и т. д.). Я могу связать отчет с этим, но ширина отчета может быть только 22 ", поэтому мне придется экспортировать, а затем выполнить некоторую обработку vba на листе excel на другом конце, чтобы он отображался четким образом .

я могу получить данные в формате # 1, есть какой-то способ, которым я могу получить данные для отображения в одной длинной строки на основе номера партии? кто-нибудь еще есть отличная идея, как это выполнимо?

Открыт для любых предложений. Спасибо!

ответ

4

В своем вопросе вы говорите, что t шляпа

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

, а затем перечислить данные, как

Batch Zone Value1 Value2 
----- ---- ------ ------ 
    25  1  5  15 
    25  2  12  31 
    26  1  6  14 
    26  2  10  32 

Теперь, возможно, данные могут быть уже в «не- (с разными Value s в отдельных строках), но если нет, то для достижения этого вы должны использовать что-то вроде следующего запроса:

SELECT 
    [Batch], 
    "Zone" & [Zone] & "_" & "Value1" AS [ValueID], 
    [Value1] AS [ValueValue] 
FROM BatchDataByZone 
UNION ALL 
SELECT 
    [Batch], 
    "Zone" & [Zone] & "_" & "Value2" AS [ValueID], 
    [Value2] AS [ValueValue] 
FROM BatchDataByZone 

... возвращение:

Batch ValueID  ValueValue 
----- ------------ ---------- 
    25 Zone1_Value1   5 
    25 Zone2_Value1   12 
    26 Zone1_Value1   6 
    26 Zone2_Value1   10 
    25 Zone1_Value2   15 
    25 Zone2_Value2   31 
    26 Zone1_Value2   14 
    26 Zone2_Value2   32 

Однако вы добраться до этой точки, если вы сохраните этот запрос в качестве [BatchDataUnpivoted], то вы можете использовать простой запрос перекрестного к «строке из» значений для каждой партии ...

TRANSFORM Sum(BatchDataUnpivoted.[ValueValue]) AS SumOfValueValue 
SELECT BatchDataUnpivoted.[Batch] 
FROM BatchDataUnpivoted 
GROUP BY BatchDataUnpivoted.[Batch] 
PIVOT BatchDataUnpivoted.[ValueID]; 

... возвращение ...

Batch Zone1_Value1 Zone1_Value2 Zone2_Value1 Zone2_Value2 
----- ------------ ------------ ------------ ------------ 
    25    5   15   12   31 
    26    6   14   10   32 
Смежные вопросы