Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по формированию отчета / 25 сообщений из 43, страница 1 из 2
14.06.2011, 09:36
    #37307211
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Private Sub CommandButton1_Click()
Set dbs = DAO.OpenDatabase("c:\database.mdb")
'Выполняем запрос к базе данных
Set rs = dbs.OpenRecordset("SELECT назв_тов FROM тбл_тов")

'Если ничего не найдено - выдаем сообщение и выходим
If rs.RecordCount = 0 Then
MsgBox ("По вашему запросу ничего не найдено")
Exit Sub
End If
i = 1
Do While Not rs.EOF ' цикл выполняется пока не достигнута последняя строка в таблице ответа
'Присваиваем ячейкам таблицы значения из базы
Cells(i + 1, 2).Value = rs.Fields("назв_тов")
'Cells(i, 1).Value = rs.Fields("ID_тов")
i = i + 1
'переходим к следующей строке во временной таблице ответа
rs.MoveNext
Loop
'Закрываем временную таблицу
rs.Close
'Очищаем память. Если этого не сделать, то таблица так и останется висеть в оперативке.
Set rs = Nothing
'Закрываем базу
dbs.Close
'Очищаем память
Set dbs = Nothing
End Sub
...
Рейтинг: 0 / 0
14.06.2011, 09:41
    #37307217
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Отчет в excel на данный момент формирует список товара.
Вопрос как проще реализовать чтобы формировал список товара по группам, тоесть в таблице есть поле class.
Необходимо, чтобы формировалось вида:
процессоры
.
.
.
видеокарты
.
.
.
и так далее
...
Рейтинг: 0 / 0
14.06.2011, 09:52
    #37307227
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Kirill_Y,

Код: plaintext
SELECT назв_тов FROM тбл_тов ORDER BY class
...
Рейтинг: 0 / 0
14.06.2011, 10:59
    #37307310
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Имеется ввиду не группировка а конкретно писался класс а далеее перечень
...
Рейтинг: 0 / 0
14.06.2011, 11:04
    #37307317
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
А поле class у вас в таблице тбл_тов сразу текстовое?
...
Рейтинг: 0 / 0
14.06.2011, 11:04
    #37307318
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Kirill_YИмеется ввиду не группировка а конкретно писался класс а далеее переченьА никто и не предлагает группировку.
Проблема-то в чем заключается? Надо писать класс - пиши класс.
...
Рейтинг: 0 / 0
14.06.2011, 11:09
    #37307326
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
тоесть такого вида:

процессоры
amd
intel
видеокарты
nvidia
ati

Насколько я понимаю это надо как то занести в рекордсет все классы а далее как то по циклу весь перечень по классам. Или это как то проще делается?
...
Рейтинг: 0 / 0
14.06.2011, 11:14
    #37307331
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Kirill_YНасколько я понимаю это надо как то занести в рекордсет все классы Да, просто надо написать соответствующий запрос, но без твоей схемы БД мы тебе не поможем.
Kirill_Yа далее как то по циклу весь перечень по классам. Или это как то проще делается?Можно как-то без цикла за один прием все вставить, но я, честно говоря, подзабыл - ща кто-нить подскажет
...
Рейтинг: 0 / 0
14.06.2011, 11:18
    #37307340
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Схему бд можно конечно. Просто я использовал тривиальный пример в вопросе. Что бы понять как работает оно на простом примере и уже внедрить в свой конкретный случай.
...
Рейтинг: 0 / 0
14.06.2011, 11:22
    #37307348
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Kirill_YПросто я использовал тривиальный примерНу тогда нужна тривиальная схема, чтобы построить тривиальный запрос

дайте мне гнутый молоток, чтобы забивать ваши гнутые гвозди (с) Чебурашка
...
Рейтинг: 0 / 0
14.06.2011, 11:23
    #37307349
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Таблица ZfromUch
интересующие поля поля
Naimen
Таблица TMC
интересующие поля поля
Name
Class
Name объеденено c Name один ко многим
Поля которые участвуют для where пока не учел
...
Рейтинг: 0 / 0
14.06.2011, 11:24
    #37307353
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
тоесть Naimen c Name
...
Рейтинг: 0 / 0
14.06.2011, 11:27
    #37307357
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Kirill_Y,

а что нужно из ZfromUch, если поле Name есть и в TMC?
...
Рейтинг: 0 / 0
14.06.2011, 11:29
    #37307364
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Переделайте запрос. Тогда в столбец попадет и групповое имя class, и конкретный тип товара
Код: plaintext
1.
2.
3.
4.
select class from
(select class, class as c,  0  as subgroup FROM тбл_тов
union all
SELECT назв_тов, class,  1  FROM тбл_тов) q
order by c, subgroup
...
Рейтинг: 0 / 0
14.06.2011, 11:32
    #37307370
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Таблица ZfromUch это таблица содержащая данные о заявках
А таблица TMC это таблица содержащая номенклатуру(тоесть наименование класс(метизы,тюбинги...), среднерыночная цена )
...
Рейтинг: 0 / 0
14.06.2011, 11:36
    #37307376
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Типа как-то так (таблица без связей, но это поправимо, если поймёте суть...)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Private Sub CommandButton1_Click()
  
 Set dbs = DAO.OpenDatabase("c:\2\858737.mdb")
 Set rs = dbs.OpenRecordset("SELECT name, class FROM товары ORDER BY class")
 rCount = rs.RecordCount
 If rCount >  0  Then
    aData = rs.GetRows(rs.RecordCount)
    Set rs = dbs.OpenRecordset("SELECT DISTINCT class FROM товары ORDER BY class")
    aClass = rs.GetRows(rs.RecordCount)
 Else
     MsgBox ("По вашему запросу ничего не найдено")
 End If
 
 rs.Close
 Set rs = Nothing
 dbs.Close
 Set dbs = Nothing
 
 If rCount >  0  Then
    Cells.Clear
    k =  2 
    For i =  0  To UBound(aClass,  2 )
       Cells(k,  2 ) = aClass( 0 , i)
       Cells(k,  2 ).Font.Bold = True
       k = k +  1 
       For j =  0  To UBound(aData,  2 )
            If aData( 1 , j) = aClass( 0 , i) Then
                Cells(k,  2 ) = aData( 0 , j)
                k = k +  1 
            End If
       Next
    Next
 End If

End Sub
...
Рейтинг: 0 / 0
14.06.2011, 11:37
    #37307377
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
select class from
(select class, class as c, 0 as subgroup FROM тбл_тов
union all
SELECT назв_тов, class, 1 FROM тбл_тов) q
order by c, subgroup

То что надо только вот DISTINCT Бы как то там уместить а то выдает орбер бай конфликтует с дистинк
...
Рейтинг: 0 / 0
14.06.2011, 11:39
    #37307380
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Только вот я не понимаю, зачем напрягать Excel, если в Access есть собственные отчеты?
...
Рейтинг: 0 / 0
14.06.2011, 11:41
    #37307383
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Спасибо помогло
...
Рейтинг: 0 / 0
14.06.2011, 11:42
    #37307384
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
...
Рейтинг: 0 / 0
14.06.2011, 11:44
    #37307390
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
В ацессе у меня получалось только "горизонтальное представление" данных
А необходимо для наглядности "вертикальное"...Если вы меня поняли
...
Рейтинг: 0 / 0
14.06.2011, 11:51
    #37307415
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Kirill_YА необходимо для наглядности "вертикальное"...Если вы меня поняли
...
Рейтинг: 0 / 0
14.06.2011, 13:29
    #37307641
Kirill_Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Private Sub Кнопка75_Click()
Dim xlApp As Excel.Application
Dim wkbNewBook As Excel.Workbook
Dim wksSheet As Excel.Worksheet
Dim strBookName As String

'Создается скрытая инстанция к Excell
Set xlApp = New Excel.Application
' Добавляется новый workbook в Workbooks collection.
Set wkbNewBook = xlApp.Workbooks.Add
' Путь и имя книги для сохранения
strBookName = "C:\ex1.xls"

With wkbNewBook
For Each wksSheet In .Worksheets
wksSheet.Name = wksSheet.Name
Next wksSheet
.Close SaveChanges:=True, FileName:=strBookName
End With

Set dbs = DAO.OpenDatabase("c:\Шаблон доступа 2003.mdb")
'Выполняем запрос к базе данных
Set rs = dbs.OpenRecordset("SELECT ZfromUch.Naimen, TMC.Class FROM TMC INNER JOIN ZfromUch ON TMC.Name = ZfromUch.Naimen GROUP BY ZfromUch.Naimen, TMC.Class;")
rCount = rs.RecordCount
If rCount > 0 Then
aData = rs.GetRows(rs.RecordCount)
Set rs = dbs.OpenRecordset("SELECT DISTINCT class FROM TMC ORDER BY class")
aClass = rs.GetRows(rs.RecordCount)
Else
MsgBox ("По вашему запросу ничего не найдено")
End If

rs.Close
Set rs = Nothing
dbs.Close
Set dbs = Nothing

If rCount > 0 Then
'Cells.Clear
k = 2
For i = 0 To UBound(aClass, 2)
Cells(k, 2) = aClass(0, i)
wksSheet.Cells(k, 2).Font.Bold = True
k = k + 1
For j = 0 To UBound(aData, 2)
If aData(1, j) = aClass(0, i) Then
Cells(k, 2) = aData(0, j)
k = k + 1
End If
Next
Next
End If






Set wkbNewBook = Nothing
'Выход из Excell
xlApp.Quit

Set xlApp = Nothing
Exit Sub
End Sub


Не определяет Cells(k, 2) я так понимаю надо где то что то объявить или правильно путь к ячейке указать...Если вообще конструкция правильная
...
Рейтинг: 0 / 0
14.06.2011, 13:37
    #37307654
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Kirill_YНе определяет Cells(k, 2) я так понимаю надо где то что то объявить или правильно путь к ячейке указать...Если вообще конструкция правильная
Надо указать, конечно, и книгу и лист.
Столько открытой книги у тебя нет - ты ее раньше зачем-то закрыл.

А это что за веселый цикл?
Код: plaintext
1.
2.
For Each wksSheet In .Worksheets
wksSheet.Name = wksSheet.Name
Next wksSheet

ЗЫ: Посмотри, как оформляется код в сообщениях и делай так же
...
Рейтинг: 0 / 0
14.06.2011, 13:37
    #37307656
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Столько - только
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по формированию отчета / 25 сообщений из 43, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]