PDA

View Full Version : دادن اطلاعات از فرم به اکتیو ریپورت



maryamb
چهارشنبه 22 خرداد 1387, 13:22 عصر
من یه فرم دارم که دو قسمت داره و هر قسمت به یه جدول وصله ، فرض کنید کادر بالای فرم مشخصات فلان کاربر رو نشون می ده و کادر پایین فرم جنسهایی که خریده رو نشون می ده ، حالا می خوام این اطلاعات رو به وسیله ی اکتیو ریپورت چاپ کنم ، آیا راهی داره که این اطلاعات به همین شکل انتقال پیدا کنه یا اینکه برای اکتیو ریپورت هم مجدد باید کد اس کیو ال بنویسم و اطلاعات رو از جدول در بیارم ؟ یا روشی هست که این اطلاعات که روی فرم هست بطور موقت تو یه جدول موقت یا همچین چیزی ریخته بشه و تو اکتیوریپورت از همون استفاده کنم؟

ASKaffash
چهارشنبه 22 خرداد 1387, 16:52 عصر
با سلام
من یک تابع نوشتم که یک VSFlexGrid را میگیرد و یک گزارش ActiveReport را به صورت Dynamic میسازد
اینهم کدتابع که میتوانید از ایده آن استفاده کنید :


Public Sub XVs2Ar(YourVSFlexGrid As VSFlexGrid, YourAdodc As Adodc, ByVal YourCompanyName As String, ByVal YourTitle As String, ByVal YourRunMode As Byte, Optional OkZoomFont As Boolean = True, Optional ZoomW As Variant = 1, Optional ZoomH As Variant = 1)
Dim VS2AR As VSFlexGrid2AR, MyNewLabel As Object, MyNewField As Object
Set VS2AR = New VSFlexGrid2AR
LastLeft = 0
IndexOfDetail = IIf(YourVSFlexGrid.Rows = 1, 0, 1)
With YourVSFlexGrid
VS2AR.Caption = YourTitle
Set VS2AR.Watermark = .WallPaper
ZoomFactor = IIf(OkZoomFont, ZoomW, 1)
'''''''''''''''''''''''
VS2AR.PH_Company.Caption = YourCompanyName
VS2AR.PH_Company.Left = 0
VS2AR.PH_Company.Top = 0
VS2AR.PH_Company.Height = .RowHeight(0) * ZoomH
Set VS2AR.PH_Company.Font = .Font
VS2AR.PH_Company.Font.Size = VS2AR.PH_Company.Font.Size * ZoomFactor
'''''''''''''''''''''''
VS2AR.PH_Title.Caption = YourTitle
VS2AR.PH_Title.Left = 0
VS2AR.PH_Title.Top = VS2AR.PH_Company.Height
VS2AR.PH_Title.Height = .RowHeight(0) * ZoomH
Set VS2AR.PH_Title.Font = .Font
VS2AR.PH_Title.Font.Size = VS2AR.PH_Title.Font.Size * ZoomFactor
'''''''''''''''''''''''
For j = IIf(.RightToLeft, .Cols - 1, 0) To IIf(.RightToLeft, 0, .Cols - 1) Step IIf(.RightToLeft, -1, 1)
Set MyNewLabel = VS2AR.PH.Controls.Add("DDActiveReports2.Label")
MyNewLabel.name = "L" & j
MyNewLabel.Caption = .TextMatrix(0, j)
MyNewLabel.Top = VS2AR.PH_Title.Top + VS2AR.PH_Title.Height
MyNewLabel.Left = LastLeft
MyNewLabel.Width = .ColWidth(j) * ZoomW
MyNewLabel.Height = .RowHeight(0) * ZoomH
MyNewLabel.MultiLine = False
MyNewLabel.Alignment = IIf(.FixedAlignment(j) = 9, 2, .FixedAlignment(j) \ 3)
MyNewLabel.Alignment = IIf(MyNewLabel.Alignment = 0, 0, IIf(MyNewLabel.Alignment = 1, 2, 1))
MyNewLabel.VerticalAlignment = ddTXMiddle
MyNewLabel.BackStyle = ddBKNormal
MyNewLabel.BackColor = .BackColorFixed
MyNewLabel.ForeColor = .ForeColorFixed
MyNewLabel.Border.TopStyle = ddBLSolid
MyNewLabel.Border.BottomStyle = ddBLSolid
MyNewLabel.Border.LeftStyle = ddBLSolid
MyNewLabel.Border.RightStyle = ddBLSolid
Set MyNewLabel.Font = .Font
MyNewLabel.Font.Size = MyNewLabel.Font.Size * ZoomFactor
''''''''''''''''''''''''''''''
Select Case True
Case Trim(.ColKey(j)) = ""
Set MyNewField = VS2AR.PD.Controls.Add("DDActiveReports2.Label")
MyNewField.Caption = ""
Case Trim(.ColKey(j)) = "."
Set MyNewField = VS2AR.PD.Controls.Add("DDActiveReports2.Label")
MyNewField.Caption = ""
MyNewField.Tag = "R"
Case Mid(Trim(.ColKey(j)), 1, 1) = "["
Set MyNewField = VS2AR.PD.Controls.Add("DDActiveReports2.CheckBox")
MyNewField.DataField = Mid(.ColKey(j), 2, Len(.ColKey(j)) - 2)
MyNewField.Caption = ""
MyNewField.Tag = "C"
Case Else
Set MyNewField = VS2AR.PD.Controls.Add("DDActiveReports2.Field")
MyNewField.DataField = Trim(.ColKey(j))
MyNewField.CanGrow = False
End Select
MyNewField.name = "F" & j
MyNewField.Top = 0
MyNewField.Left = LastLeft
MyNewField.Width = .ColWidth(j) * ZoomW
MyNewField.Height = .RowHeight(IndexOfDetail) * ZoomH
MyNewField.Alignment = IIf(.ColAlignment(j) = 9, 2, .ColAlignment(j) \ 3)
MyNewField.Alignment = IIf(MyNewField.Alignment = 0, 0, IIf(MyNewField.Alignment = 1, 2, 1))
MyNewField.BackStyle = ddBKNormal
MyNewField.BackColor = IIf(j < .FixedCols, .BackColorFixed, .BackColor)
MyNewField.ForeColor = IIf(j < .FixedCols, .ForeColorFixed, .ForeColor)
MyNewField.Border.TopStyle = ddBLSolid
MyNewField.Border.BottomStyle = ddBLSolid
MyNewField.Border.LeftStyle = ddBLSolid
MyNewField.Border.RightStyle = ddBLSolid
Set MyNewField.Font = .Font
MyNewField.Font.Size = MyNewField.Font.Size * ZoomFactor
If Mid(.ColKey(j), 1, 1) = "[" Then

Else
MyNewField.MultiLine = False
MyNewField.VerticalAlignment = ddTXMiddle
End If
''''''''''''''''''''''''''''''
LastLeft = MyNewLabel.Left + MyNewLabel.Width
Next
VS2AR.PH.Height = 3 * .RowHeight(0) * ZoomH
VS2AR.PD.Height = .RowHeight(IndexOfDetail) * ZoomH
End With
VS2AR.PH_Company.Width = LastLeft
VS2AR.PH_Title.Width = LastLeft
VS2AR.DataControl1.ConnectionString = YourAdodc.ConnectionString
VS2AR.DataControl1.Source = YourAdodc.RecordSource
VS2AR.Show YourRunMode
End Sub

فاطمه وطن دوست
پنج شنبه 23 خرداد 1387, 00:09 صبح
سلام

این خط چی کار میکنه ؟


VS2AR.PH_Title.Caption = YourTitle



در کل جالب بود.



PH_Title. من تو خصوصیات فلوکس گرید چیزی با این عنوان نمی بینم.

maryamb
پنج شنبه 23 خرداد 1387, 10:24 صبح
مشکل من یه جور دیگه حل شد مرسی