powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DataReport Отчет с Одной групировкой
2 сообщений из 2, страница 1 из 1
DataReport Отчет с Одной групировкой
    #32476518
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в DataReport Сделать отчет с одной группровкой
Например имееться
Запрос .
Серия товара | Товара| Дистребьюютерская цена| Розничная| Баллы

И дложно получиться..
что то подобное

Серия1
_____________________________________
Товара 1 | 1212| 212| 3
Товара 3 | 2131|312|4
и так далее
У меня что то не получаеться
...
Рейтинг: 0 / 0
DataReport Отчет с Одной групировкой
    #32476576
Фотография ulis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отчеты (ИМХО) самое трудное в VB+Databases :)
первый вариант - используй DED, то бишь Data Environment Designer, с помощью которого достаточно легко построить иерархический набор
второй вариант - без DED, но с использованием SHAPE провайдера.
Второй вариант применительно к учебной базе NWIND.mdb может выглядеть так (по крайней мере у меня, когда изучал все это):

Private Sub Form_Load()

Dim strSQL As String

cmdTest.Caption = "Отчет с групировкой без использования DED"
cmdTest.Width = 2500
cmdTest.Height = 750
cmdTest.Left = (Me.Width - cmdTest.Width) / 2
cmdTest.Top = (Me.Height - cmdTest.Height) / 2

' открываем соединение с базой
cn.Open "Provider=MSDATASHAPE; Data Provider=Microsoft.JET.OLEDB.4.0;" & _
"Data Source=" & VB.App.Path & "\Nwind.mdb;"

' формируем строку запроса к базе с использоваием DATA SHAPE провайдера
strSQL = "SHAPE {SELECT FirstName,Lastname,City FROM Employees} AS Command1 COMPUTE Command1 BY City"

' открываем собственно набор, который и будет источником данных для отчета
rs.Open strSQL, cn

Set rs1 = rs(0).Value

End Sub

Но это естесно не все, важно правильно "раскидать" такой набор:

Private Sub cmdTest_Click()

Dim q As Integer
Dim intCtrl As Integer
Dim x As Integer
Dim z As Integer

Dim i As Integer

' For i = 0 To rs.Fields.Count - 1
' Debug.Print "rs: " & rs.Fields(i).Name
' Next i
'
' For i = 0 To rs1.Fields.Count - 1
' Debug.Print "rs1: " & rs1.Fields(i).Name
' Next i

x = 0
q = 0
z = 0

With DataReport1
.Hide
Set .DataSource = rs
.DataMember = ""

With .Sections("section4").Controls
For intCtrl = 1 To .Count
If TypeOf .Item(intCtrl) Is RptLabel Then
.Item(intCtrl).Caption = "City" & " :"
q = q + 1
End If

If TypeOf .Item(intCtrl) Is RptTextBox Then
.Item(intCtrl).DataMember = ""
.Item(intCtrl).DataField = "City"
End If
Next intCtrl
End With

q = 0

With .Sections("Section1").Controls
For intCtrl = 1 To .Count
If TypeOf .Item(intCtrl) Is RptLabel Then
.Item(intCtrl).Caption = rs1.Fields(q).Name & " :"
q = q + 1
End If
If TypeOf .Item(intCtrl) Is RptTextBox Then
.Item(intCtrl).DataMember = "Command1"
.Item(intCtrl).DataField = rs1(z).Name
z = z + 1
End If
Next intCtrl
End With
.Refresh
.Show
End With

End Sub

В общем, мне так кажется, сразу не поймешь, посмотри в мсдн, там есть цикл из пяти уроков по созданию отчетов, от простого к сложному, потому что если кроме группировки будешь использовать еще и вычисляемые поля и итоги, то запрос получается мудрены, проще создать его сначала в DED? а потом перенести в свое приложение
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DataReport Отчет с Одной групировкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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