Re[3]: VB6.0 Отчеты. Можно ли DataReport без DataEnvironment
От: Peter Fleischer Германия www.informtoools.de
Дата: 07.04.04 01:09
Оценка: 16 (2)
Здравствуйте, Аноним, Вы писали:

А> Спасибо я понял уже все работает, возник только вопрос а как сделать CrossReport. Поясняю, к примеру есть родители и дети. Связь у одного родителя(пусть будет отец) много детей, чтобы отображало родитель и всех его детей. Как это сделать, ведь у 1 отчета 1 DataSource. В общем неясен этот момент.



Recordset двухуровневой:

rs1.Open " SHAPE APPEND New adInteger As PK," & _
" New adVarChar(20) As F12," & _
" New adVarChar(20) As F13," & _
" ((SHAPE APPEND New adInteger As FK," & _
" New adInteger as F22," & _
" New adInteger as F23," & _
" New adVarChar(20) As F24)" & _
" RELATE PK TO FK) as Cmd2", _
, adOpenStatic, adLockOptimistic

rs1 — Master

Set rs2 = rs1.Fields("Cmd2").Value — Child

репорт это понимает!

Peter
VB6.0 Отчеты. Можно ли DataReport без DataEnvironment
От: Аноним  
Дата: 06.04.04 12:08
Оценка:
Смысл такой, нужно постироить отчет, но данные берутся спец. образом в рекордсет, но коннекшена как такового (есть конечно но свой, то есть никакой Conncetion string нельзя сделать). Как засунуть данные в DataReport, как можно DataSource верный присвоить (т. е. не открывая никакие коннекшены).
Re: VB6.0 Отчеты. Можно ли DataReport без DataEnvironment
От: Аноним  
Дата: 06.04.04 13:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Смысл такой, нужно постироить отчет, но данные берутся спец. образом в рекордсет, но коннекшена как такового (есть конечно но свой, то есть никакой Conncetion string нельзя сделать). Как засунуть данные в DataReport, как можно DataSource верный присвоить (т. е. не открывая никакие коннекшены).


свяжи просто твой Recordset к DataSource

Set myReport.DataSource = myRecordset

пример:

Private Sub Command1_Click()
Dim s As Long
Set rs1 = New ADODB.Recordset
rs1.ActiveConnection = "provider=msdatashape;data provider=none;"
rs1.Open " SHAPE APPEND New adInteger As Spielnummer," & _
" New adVarChar(20) As Punktsumme," & _
" New adVarChar(20) As Spiel," & _
" ((SHAPE APPEND New adInteger As ZSpielnr," & _
" New adInteger as Platz," & _
" New adInteger as Punkte," & _
" New adVarChar(20) As PunkteText)" & _
" RELATE Spielnummer TO ZSpielnr) as Cmd2", _
, adOpenStatic, adLockOptimistic
' parent recordset
For i = 1 To 5
rs1.AddNew Array("Spielnummer", "Spiel"), Array(i, "Spiel " & i)
Next i
' child recordset
i = 5
Set rs2 = rs1("Cmd2").Value
For j = 1 To 20
rs2.AddNew Array("ZSpielnr", "Platz", "Punkte", "PunkteText"), _
Array(i * Rnd() + 0.5, j, 21 — j, Format((21 — j), "#0 ") & "Punkte ")
Next
Set rs2 = rs1.Fields("Cmd2").Value
rs2.Sort = "Punkte ASC"
' Kontroll
Set MSHFlexGrid1.DataSource = rs2
' Summe
With rs1
.MoveFirst
Do Until .EOF
s = 0
rs2.MoveFirst
Do Until rs2.EOF
s = s + rs2.Fields("Punkte").Value
rs2.MoveNext
Loop
s = s * 15000
.Fields("Punktsumme").Value = Format(Int(s / 3600), "#0 ") & _
Format(Int(s / 60) Mod 60, "00\:") & Format(s Mod 60, "00")
.MoveNext
Loop
End With
Dim sdf As New StdDataFormat
With sdf
.Format = "d hh:NN:ss"
End With
' Report
With DataRpt2
Set .DataSource = rs1
.Sections("Section1").Controls("Text1").DataMember = "Cmd2"
.Sections("Section1").Controls("Text1").DataField = "PunkteText"
.Sections("Section6").Controls("Text2").DataField = "Spiel"
.Sections("Section7").Controls("Text3").DataField = "Punktsumme"
.Show
End With
End Sub

Peter
Re[2]: VB6.0 Отчеты. Можно ли DataReport без DataEnvironment
От: Аноним  
Дата: 06.04.04 14:23
Оценка:
Спасибо я понял уже все работает, возник только вопрос а как сделать CrossReport. Поясняю, к примеру есть родители и дети. Связь у одного родителя(пусть будет отец) много детей, чтобы отображало родитель и всех его детей. Как это сделать, ведь у 1 отчета 1 DataSource. В общем неясен этот момент.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.