Announcement

Collapse
No announcement yet.

Dynamischer Aufbau Report + SQL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dynamischer Aufbau Report + SQL

    Hallo alle beieinander,

    ---Ein gesundes Neues Jahr erstmal --

    Also ich habe da mal wieder eine kleine Frage.
    Ich habe in einer Tabelle Reportkonfigurationen hinterlegt.
    Ich möchte diese Tabelle zeilenweise auslesen. So z.B. die Datenquelle des zu erstellenden Berichtes. Dafür habe ich ein SQLStatement mit Parametern hinterlegt. In einer gesonderten Spalte habe ich dann für den Parameter den gewünschten Umgebungswerte bzw. die Variable hinterlegt. In dem Beispiel ist in der Spalte p1 der Eintrag 'Logonuser' hinterlegt. Diese Variable habe ich global in meinem Programm definiert. Sie wird mit Anmeldung des Users belegt.
    Wenn ich nun wie unten im Beispiel geschrieben bei der Parameterübergebe den Eintrag aus meiner Tabelle einfach übernehme, wird der Logonuser als String und nicht als Variable interpretiert. So kann ich also nicht den Inhalt der Variablen an den Parameter übergeben.
    Code:
    cmd.CommandText ="select * from [tblInitReportsConfig] where kontext='MyQuestion' and Region='" & region & "'"
    
                da.SelectCommand = cmd
                dt_reps.Clear()
                da.Fill(dt_reps)
                If dt_reps.Rows.Count > 0 Then
                    For Each rw As DataRow In dt_reps.Rows
                        sel_data = rw.Item("Datasource")
                        If IsDBNull(rw.Item("whereclause")) = False Then sel_data &= rw.Item("whereclause")
                        If IsDBNull(rw.Item("orderclause")) = False Then sel_data &= rw.Item("orderclause")
                        pdf_file = rw.Item("Pdf_Name")
                        repname = rw.Item("Report_Name")
                    
    			
    			If sel_data <> "" Then
                                'Datenquelle
                                Dim dt As New DataTable
                                'SQLParameter 
                                cmd.CommandText = sel_data
                                If IsDBNull(rw.Item("p1")) = False Then
                                    'z.B. globfunction.logonuser kann hier nicht als Parameter aus Tabelle übergeben werden
                                    ' deshalb ermitteln über function
                                    cmd.Parameters.Add("@p1", rw.item("p1")) 
                                End If
                                da.SelectCommand = cmd
                                da.Fill(dt)
                                'dt füllen
                                report.SetDataSource(dt)
                            End If
    
    	          Next
    
                End If
    Hat jemand eine Idee, wie ich das hinkriegen kann??
    Zuletzt editiert von dbfreak; 04.01.2011, 17:12.

  • #2
    Hallo,

    nun offensichtlich hat noch keiner eine Idee. Vielleicht zur Veranschaulichung meine Tabelle bzw. der Plan

    Code:
    Report_Name		 I	Datasource						I	p1
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------	
    InhaltPruefhandbuch 	I	select * from [tblInhaltPruefbuch] where [user] =@p1	I	globfunction.logonuser
    In meinem Code erwarte ich nun unter rw.item("p1")) den Inhalt von globfunction.logonuser welcher in meiner Umgebung schon belegt wurde.

    Ich habe zunächst in meinem Code die Zeile durch folgende Version ersetzt. Aber schick ist das nicht.

    Code:
    ' cmd.Parameters.Add("@p1", rw.item("p1"))
     cmd.Parameters.Add("@p1", globfunction.get_parameters(rw.Item("p1")))
    
    ...
    
       Private Function get_parameters(ByVal parameter As String) As String
            ' Ermittlung Parameterwert, weil Umgebungsvariablen nicht über die Sql in Tabellen ermittelbar
          
            get_parameters = ""
            Select Case parameter
                Case "globfunction.logonuser"
                    get_parameters = globfunction.logonuser
            End Select
    
        End Function
    Vielleicht jetzt jemand mit Idee.

    Comment

    Working...
    X