cooLopke
Legacy Member
Beste 9livers
Ik ben een programma aan het maken die meerdere Windows Forms bevat. Echter wil ik de beste gebruiksmethode toepassen om variabelen tussen de Windows Forms makkelijk op te halen. Ik gebruik Crystal Reports om rapporten te maken.
Situatieschets:
toestel_Form
Dit is een form die alle toestellen ophaalt via een datagridview. Hier bevindt zich een print knop die een nieuw form toont (print_select_Form).
print_select_Form
Hier zie je een datagridview en wordt opgevuld met de rapportbeschrijving via een db. Indien men een rapport kiest toont er zich een nieuw form (print_Form)
print_Form
Hier is de "Crystalreportsviewer" toegevoegd die het juiste Crystal Reports rapport ophaalt. Echter om deze te tonen heb ik de juiste bestandsnaam nodig. (zie Report_Class)
dbo.rapporten
Dit is een tabel die de velden id, naam ,omschrijving en bestandsnaam bevat. Het veld bestandsnaam is het belangrijkste want hier staat de naam van mijn rapport in.
Report_Class
Dit is een klasse met Property values naam, omschrijving en bestandsnaam
code toestel_Form - btnPrint_Click (print knop)
code print_select_Form
Zoals je ziet maak ik gebruik van een functie om de waarde van "bestandsnaam" te achterhalen in toestel_Form, want dit heb ik nodig om het correcte bijhorende rapport te tonen. Ook heb ik de bestandsnaam nodig, vermits er extra dingen moeten gebeuren als de bestandsnaam "calls_list.rpt" is.
Volgens mij bestaat er een makkelijkere manier om de waarde van "Bestandsnaam" te achterhalen. Ik weet dat ik de variabele in de klasse Report_Class public kan maken, maar men heeft mij steeds geleerd op school om dit private te maken. Of moet dit toch public worden?
Iemand die dit even kan bekijken en mij kan helpen? Alvast bedankt!
Grtz
cooLopke
Ik ben een programma aan het maken die meerdere Windows Forms bevat. Echter wil ik de beste gebruiksmethode toepassen om variabelen tussen de Windows Forms makkelijk op te halen. Ik gebruik Crystal Reports om rapporten te maken.
Situatieschets:
toestel_Form
Dit is een form die alle toestellen ophaalt via een datagridview. Hier bevindt zich een print knop die een nieuw form toont (print_select_Form).
print_select_Form
Hier zie je een datagridview en wordt opgevuld met de rapportbeschrijving via een db. Indien men een rapport kiest toont er zich een nieuw form (print_Form)
print_Form
Hier is de "Crystalreportsviewer" toegevoegd die het juiste Crystal Reports rapport ophaalt. Echter om deze te tonen heb ik de juiste bestandsnaam nodig. (zie Report_Class)
dbo.rapporten
Dit is een tabel die de velden id, naam ,omschrijving en bestandsnaam bevat. Het veld bestandsnaam is het belangrijkste want hier staat de naam van mijn rapport in.
Report_Class
Dit is een klasse met Property values naam, omschrijving en bestandsnaam
code toestel_Form - btnPrint_Click (print knop)
Code:
Dim pr As New print_select_Form
Dim p As New print_Form
Dim rp As New Report_Class("toestel")
Call pr.fill_printdata(rp.Naam)
pr.ShowDialog()
rp = pr.GetReport(rp)
If rp.Bestandsnaam = "calls_list.rpt" Then
Call PrepareReport_CallsList()
End If
Call p.load_report(rp.Bestandsnaam)
p.ShowDialog()
Code:
Dim rp As New Report_Class()
Sub fill_printdata(rp_naam As String)
Dim ssql As String
Dim ds As DataSet
Dim dc As New datacontrol_class
ssql = "SELECT id, rp_naam, rp_omschrijving as Document, rp_bestandsnaam FROM rapport"
ssql += " where rp_naam='" & rp_naam & "'"
ds = dc.GetDataSet(ssql)
dgvPrint.DataSource = ds.Tables(0)
dgvPrint.AutoResizeColumns()
dgvPrint.Columns.Item(0).Visible = False
dgvPrint.Columns.Item(1).Visible = False
dgvPrint.Columns.Item(3).Visible = False
End Sub
Private Sub dgvPrint_CellDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrint.CellDoubleClick
If dgvPrint.SelectedRows.Count = 1 Then
rp.Bestandsnaam = dgvPrint.SelectedRows(0).Cells.Item(3).Value
rp.Naam = dgvPrint.SelectedRows(0).Cells.Item(1).Value
rp.Omschrijving = dgvPrint.SelectedRows(0).Cells.Item(2).Value
End If
Me.Dispose()
End Sub
Function GetReport(rpPrint As Report_Class) As Report_Class
rpPrint = rp
Return rpPrint
End Function
Zoals je ziet maak ik gebruik van een functie om de waarde van "bestandsnaam" te achterhalen in toestel_Form, want dit heb ik nodig om het correcte bijhorende rapport te tonen. Ook heb ik de bestandsnaam nodig, vermits er extra dingen moeten gebeuren als de bestandsnaam "calls_list.rpt" is.
Volgens mij bestaat er een makkelijkere manier om de waarde van "Bestandsnaam" te achterhalen. Ik weet dat ik de variabele in de klasse Report_Class public kan maken, maar men heeft mij steeds geleerd op school om dit private te maken. Of moet dit toch public worden?
Iemand die dit even kan bekijken en mij kan helpen? Alvast bedankt!
Grtz
cooLopke