Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Как из таблици данных сделать массив  [new]
Serggey
Member

Откуда:
Сообщений: 3
Добрый день. Есть таблица TAB1 ее необходимо преобразовать в TAB2 см. снимок. Подскажите, пжл, такое возможно в Access? Если да то как?
Спасибо.

К сообщению приложен файл. Размер - 6Kb
25 окт 18, 11:22    [21714611]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Serggey, вот если бы наоборот от TAB2 к TAB1 - то Transform+Pivot. А так - без VBA не обойтись.
25 окт 18, 11:23    [21714613]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
Serggey
Member

Откуда:
Сообщений: 3
Озверин, в эклесле такое упражнение можно сделать тоже при помощи VBA или при помощи нескольких преобразований сводными таблицами, я задался вопросом о возможности преобразования в ACCESS данной трансформации минуя VBA (так как не силен в VBA) но если это возможно только через VBA тогда буду расширять свои знания. Возможно подскажите код?
Спасибо.
25 окт 18, 11:31    [21714620]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 68039
Serggey
Озверин, в эклесле такое упражнение можно сделать тоже при помощи VBA или при помощи нескольких преобразований сводными таблицами, я задался вопросом о возможности преобразования в ACCESS данной трансформации минуя VBA (так как не силен в VBA) но если это возможно только через VBA тогда буду расширять свои знания. Возможно подскажите код?
Спасибо.

что-то типо такого.
    DoEvents

    For i = 0 To CurrentDb.TableDefs("tab1").Fields.Count - 1
        fn = CurrentDb.TableDefs("tab1").Fields(i).Name
       
        Currentdb.execute " INSERT INTO tab2(ID, account, amount) " & "
                            SELECT ID, '" & fn & "', tr.[" & fn & "] AS val FROM tab1 AS tr"
            
            On Error Resume Next

            On Error GoTo 0
            DoEvents
    Next i
    DoCmd.SetWarnings True
25 окт 18, 11:50    [21714648]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 68039
Прогер_самоучка
Serggey
Озверин, в эклесле такое упражнение можно сделать тоже при помощи VBA или при помощи нескольких преобразований сводными таблицами, я задался вопросом о возможности преобразования в ACCESS данной трансформации минуя VBA (так как не силен в VBA) но если это возможно только через VBA тогда буду расширять свои знания. Возможно подскажите код?
Спасибо.

что-то типо такого.
пардон,
    DoEvents

    For i = 0 To CurrentDb.TableDefs("tab1").Fields.Count - 1
        fn = CurrentDb.TableDefs("tab1").Fields(i).Name
       
        Currentdb.execute " INSERT INTO tab2(ID, account, amount) " & _
                          " SELECT ID, '" & fn & "', tr.[" & fn & "] AS val FROM tab1 AS tr"
            
            On Error Resume Next

            On Error GoTo 0
            DoEvents
    Next i
    DoCmd.SetWarnings True
25 окт 18, 11:51    [21714651]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
__Michelle
Member

Откуда:
Сообщений: 3110
Serggey,

SELECT * INTO TAB2
FROM [SELECT ID, "RENT_01_18" AS Account, RENT_01_18 AS Amount FROM TAB1
UNION ALL
SELECT ID, "RENT_02_18", RENT_02_18 FROM TAB1
UNION ALL
SELECT ID, "RENT_03_18", RENT_03_18 FROM TAB1
UNION ALL
SELECT ID, "RENT_04_18", RENT_04_18 FROM TAB1]. AS T
25 окт 18, 12:20    [21714682]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
__Michelle
Member

Откуда:
Сообщений: 3110
Исправляю замеченное искажение:
SELECT * INTO TAB2
FROM (SELECT ID, "RENT_01_18" AS Account, RENT_01_18 AS Amount FROM TAB1
UNION ALL
SELECT ID, "RENT_02_18", RENT_02_18 FROM TAB1
UNION ALL
SELECT ID, "RENT_03_18", RENT_03_18 FROM TAB1
UNION ALL
SELECT ID, "RENT_04_18", RENT_04_18 FROM TAB1) AS T
25 окт 18, 12:40    [21714710]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6259


К сообщению приложен файл (tmp.rar - 12Kb) cкачать
25 окт 18, 14:55    [21714938]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
Serggey
Member

Откуда:
Сообщений: 3
Всем Большое Спасибо!
29 окт 18, 15:56    [21718152]     Ответить | Цитировать Сообщить модератору
 Re: Как из таблици данных сделать массив  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6259
делал второпях-не морща лоб-просмотрел еще раз. Должно быть так:
For i = 1 To intColumnCount - 1
        rs1.AddNew
            rs1(0) = rs(0)
                rs1(1) = rs(i).Name
            rs1(2) = rs(i)
        rs1.Update
    Next
29 окт 18, 16:27    [21718187]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить