Модераторы: Akina
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Сгруппирированный отчет в Эксель 
:(
    Опции темы
Leska
Дата 24.2.2005, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.10.2004

Репутация: нет
Всего: нет



Привет!
Задача: необходимо вывести отчет в Эксель из mdb. Выбрано изделие, что содержит какие-то материалы, что сгруппированы.
Т.е.
Изделие
__________
Группа материалов
____________________
Материалы
____________________
Следующая группа материалов
____________________
Материалы
и т д.
Сейчас есть и работает просто вывод без разбивки на группы.

Жду советов.
PM MAIL   Вверх
Akina
Дата 24.2.2005, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Leska @ 24.2.2005, 12:08)
Сейчас есть и работает просто вывод без разбивки на группы.

Как сделано? Экспорт?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Leska
Дата 24.2.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.10.2004

Репутация: нет
Всего: нет



Вот так
Код


Public Sub ExportExcel()
   Dim newIzdel As izdel
   Dim objExcel As Object
       With newIzdel
       ....
       End With
   Set objExcel = CreateObject("Excel.Application")
       With objExcel
       .workbooks.Add
       .activesheet.Name = ("...")
       .Visible = True
       With .Worksheets("...")
           ...
           With .Range("C2").Columns
           .ColumnWidth = .ColumnWidth * 4
           End With
             Dim i As Integer
                     Do Until rs.EOF
               objExcel.Cells(i, 1) = rs.Fields("...").Value
                rs.MoveNext
               i = i + 1
           Loop
           
           rs.Close
           End With
           End With
           
          End Sub


Это сообщение отредактировал(а) Akina - 24.2.2005, 12:47
PM MAIL   Вверх
Akina
Дата 24.2.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



ах, программненько... а чего тогда на отчет киваешь?
поправь источник данных RS, добавь туда поле группировки как видимое, если его там нет. И далее:

Код

rs.movefirst
group=""
while not rs.eof
  if group<>rs.Fields("ГруппаМатериалов").Value then
     objExcel.Cells(i, 1) = rs.Fields("ГруппаМатериалов").Value
     group=rs.Fields("ГруппаМатериалов").Value
     objExcel.Cells(i, 1).Font=Жирный_и_подчеркнутый_2_раза
     i=i+1
  end if
  objExcel.Cells(i, 1) = rs.Fields("Материалы").Value
wend



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Leska
Дата 24.2.2005, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.10.2004

Репутация: нет
Всего: нет



Сорри, отчет это я имела ввиду не отчет Аксесовский, а отчет для моих пользователей smile . Сорри выразилась неправильно.

Или я неправильно поняла, или я ошиблась в запросе, или так вообще нельзя делать?

sql = "SELECT t_base_mat.kod, t_base_mat.name, t_tipov.name_tipa FROM t_tipov, t_base_mat where t_tipov.kod_tipa = t_base_mat.Kod_tipa group by name_tipa"

Это сообщение отредактировал(а) Leska - 24.2.2005, 14:55
PM MAIL   Вверх
Akina
Дата 24.2.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Leska
1) Просьба обрамлять код соотв. тегами.
2) Почему используется умножение таблиц с отбором, а не связывание?
3) Что мешает использовать мой код после соотв. правки?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Leska
Дата 24.2.2005, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.10.2004

Репутация: нет
Всего: нет



Мешает ошибка:
Попытка выполнить запрос, который не включает указанное выражение t_base_mat.kod как часть статической функции или группы.
Наверное, что-то я таки не поняла.
PM MAIL   Вверх
Akina
Дата 24.2.2005, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Это ты руками написАла запрос? Построй его визардом, не забудь указать связи и тип объединения, а потом погляди как он в SQL выглядит...
Или хотя бы структуру таблиц дай и что тебе надо получить...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Leska
Дата 24.2.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.10.2004

Репутация: нет
Всего: нет



Код

sql = SELECT t_base_mat.kod, t_base_mat.name, t_base_mat.Edizm, t_base_mat.Cena, kods.kod,
Cena AS summ, t_tipov.name_tipa FROM t_tipov INNER JOIN (t_in_izdel RIGHT JOIN
(t_base_mat RIGHT JOIN kods ON t_base_mat.kod = kods.kod)
ON t_in_izdel.kod_izdel = kods.Kod_izdel1) ON t_tipov.kod_tipa = kods.Kod_tipa
 group by name_tipa

Добавлено @ 16:04
Мне надо получить:
в таком виде
Группа материалов (например: черные металлы)
__________________________________________________________________
(материалы)
Kod Name Edizm Cena Summ
Группа материалов (цветные металлы)
__________________________________________________________________
(материалы)
Kod Name Edizm Cena Summ

Это сообщение отредактировал(а) Leska - 24.2.2005, 16:01
PM MAIL   Вверх
Akina
Дата 24.2.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Ну чего, вроде вполне корректный запрос... вот только зачем тебе группировка, если у тебя нет ни одной статистической функции? ни Sum, ни Count, ни Max... убери ее, она ни на что не влияет.
Добавлено @ 16:13
а-а-а... пока я писАл, дополнение появилось... ну так в чем проблемы?
Убираем group by за ненадобностью, зато добавляем order by по группе материалов. после чего пользуй приведенный выше код.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Leska
Дата 25.2.2005, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.10.2004

Репутация: нет
Всего: нет



Усе сделала, как и было сказано. До точности.
Выгружает в Эксель только последний материал привязанный к первой группе материалов.
а точнее
Вспомогательные материалы
9152230000 Картон гофрированный тип-Т марка-Т-4 тип гофров-А Г7376-89 м2 0,112 1,87 грн. 0,20944

PM MAIL   Вверх
Akina
Дата 25.2.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Код

rs.movefirst
group=""
while not rs.eof
 if group<>rs.Fields("ГруппаМатериалов").Value then
    objExcel.Cells(i, 1) = rs.Fields("ГруппаМатериалов").Value
    group=rs.Fields("ГруппаМатериалов").Value
    objExcel.Cells(i, 1).Font=Жирный_и_подчеркнутый_2_раза
    i=i+1
 end if
 objExcel.Cells(i, 1) = rs.Fields("Материалы").Value
 i=i+1
 .movenext
wend

ну-ка, вот так ежели?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Leska
Дата 25.2.2005, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.10.2004

Репутация: нет
Всего: нет



Сорри, я забыла!
PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.