DataGridView ... | > Übergabe von Parameter an ReportViewer

ulrich kollmeier

Grünschnabel

Environment: C# mit lokaler Access-DB (Thema: Bestellung/Rechnung)


Gruezzi dem Forum...,

von einem Bestellformular (DatagridView + DetailDataGridView) kann ich bereits die Rechnungen mit einem ReportViewer anzeigen - leider noch Alle - aber das wird sich vielleicht "gleich" ändern :)

Meine Frage: Welche Methode kann ich hier einsetzen um bei dem Berichtsaufruf (s.u.) den Parameter (BestellNr) zu setzen ..

+++++ codeschnipsel +++++++

private void button1_Click(object sender, EventArgs e)
{
rechnungen newMdiChild = new rechnungen();
newMdiChild.MdiParent = saltoWORKS.main.ActiveForm;
newMdiChild.Show();
}
+++++ ende ++++++++++++++


 
Hi und herzlich willkommen im Forum

Die Klasse ReportDocument (oder Report falls du die ReportRuntime von BusinessObjects nutzt) hat das Property ParameterFields. mit diesem kannst du den entsprechenden Parameter im Report anhand des Parameternames füllen.
 
Zuletzt bearbeitet von einem Moderator:

hai nico...,

ja, diesen Gedankengang hatte ich auch - bin aber noch etwas zögerlich in der Script-Umsetzung (siehe Forumgrad =Grünschnabel :confused:) ..
Ich verstehje deine Anmerkung so, dass im myReport.rdlc-Dokument der Parameter im ReportDesigner gesetzt wird (Menü: Bericht>Berichtparameter..)

Im DataGridView kann ich den Parameter (BestellNr) mit:
C#:
DataGridViewCell bestellNR = bestellungenDataGridView.Rows[e.RowIndex].Cells["BestellNr"];
als String auslesen.
Aber wie gebe ich diesen String als Parameter im bereits erwähnten button-Click-Ereignis weiter ...
C#:
private void button1_Click(object sender, EventArgs e)
{
rechnungen newMdiChild = new rechnungen();
newMdiChild.MdiParent = saltoWORKS.main.ActiveForm;newMdiChild.Show();
}

P.S. ( ich mache in C# erst 2 Monate .. ;-) ... )
 
Zuletzt bearbeitet von einem Moderator:
Hi

Dein Problem ist also die Info in die Klasse Rechnung zu bringen?!
Dann mach doch eine Konstruktor mit Parameter, in dem du die entsprechende Info übergibst.

PS:
Nur einen der entsprechende Code-Tags verwenden, sonst wirds mit der Lesbarkeit nicht grad besser ;)
 
'nabend...

das Problem(chen) sitzt noch etwas tiefer ... das Auslesen des Parameters <BestellNr>
ist nur in einer Ereignis-Routine des DataGridViews zu realisieren ...
C#:
private void bestellungenDataGridView_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewCell c_bestellNr = bestellungenDataGridView.Rows[e.RowIndex].Cells["BestellNr"];
            string bestellNr = c_bestellNr.Value.ToString();
            //MessageBox.Show(bestellNr)
        }
Ich weiss im Moment nicht so recht weiter ... :
1. Wie bekomme ich diesen Wert in das Button-Klick Ereignis (s.o.) ?
2. Und muss nicht die Klasse Form (rechnungen) den Parameter übernehmen ?
3. Oder doch der myReport.rdlc ?

Manchmal :) aber zur Zeit gerade ... :suspekt:
 
Zuletzt bearbeitet von einem Moderator:
1. Wie bekomme ich diesen Wert in das Button-Klick Ereignis (s.o.) ?
Schau dir mal die Properties SelectedRows bzw. SelectedCells an
2. Und muss nicht die Klasse Form (rechnungen) den Parameter übernehmen ?
Richtig. Wie bereits erwähnt, den Parameter dem Konstruktor der Klasse Rechnung übergeben oder ihn über eine Init-Methode oder ähnliches oder Property setzen
3. Oder doch der myReport.rdlc ?
Gegenfrage: Was ist die myReport.rdlc? Report-Datei von BusinessObjects haben eigentlich die Dateiendung rpt! :confused:
 
hai niggo,

ich bin als 2monatiges c#-Greenhorn noch nicht in der Lage, deine Anregungen adäquat aufzunehmen und umzusetzen...Ist es möglich, dass du mir ein "Beispiel-Schnipsel-Code" anfügst ...

apropos: die Endung .rdlc verwendet VS 2005 für die intern generierten Berichte (LocalReport)




Gegenfrage: Was ist die myReport.rdlc? Report-Datei von BusinessObjects haben eigentlich die Dateiendung rpt! :confused:
 
Hi

Sorry, war davon ausgegangen, dass deine Erfahrung bzgl. Programmierung etwas mehr als 2 Monate umfassen. MDI ist nicht grad ein Einstiegsthema.

Natürlich kann ich dir ein Code-Snippet geben. (ist auf deine Problem bezogen)
C#:
public class Rechnung : Form
{
    // default ctor
    public Rechnung()
    {
        // do something
    }

   public Rechnung(string orderNo)
   {
       // do something
       this.orderNo = orderNo;
   }

   private string orderNo;

   // something else
}
Der Aufruf der Form im Button.Click - Event
C#:
...
private void button_Click(object sender, EventArgs e)
{
    string orderNo = dataGridView.SelectedRows[0].Cells["columnWithOrderNo"].Value.ToString();
    Rechnung r = new Rechnung(orderNo);
    r.MdiParent = saltoWORKS.main.ActiveForm;
    r.Show();
}
...
Im Form.Load - Event musst du dann de Bestellnummer dem Bericht übergeben. (siehe Property ParameterFields). Beispiele dazu findest du auf der Homepage von BusinessObjects
 
... es hat doch länger dedauert mein System wieder in Betrieb zu nehmen...

Moin Moin Niggo,

ich habe gerade deinen letzten Hinweis mal in die Tat umgesetzt - der zweite Konstruktor liefert eine neue leere Form (rechnung r)... ich werde aber mal weiter probieren.

ps. die business-objekt-site ist aber ziemlich umfangreich..., ich habe da nur das 600-seitige pdf-Manual gefunden
 
Zurück