none
Formular erstellen mit Daten aus .csv-Datei RRS feed

  • Frage

  • Hallo zusammen,

    ich muss ein Projekt bearbeiten, bei dem ich Daten aus einer SPS über einen OPC-Server auslese und diese Daten dann in ein Formular eintragen muss. Wie kann ich mit VB ein Formular erstellen in das z.B. ein Firmenlogo, und unterschiedlich formatierte Texte enthalten sind? Wie kann ich entsprechend Daten in das Formular einfügen und wie kann ich aus Prozessdaten Kurven erstellen, graphisch anzeigen und dem Formular hinzufügen? Und zu guter letzt: Wie kann ich dieses Formular dann als PDF ausdrucken?
    Ihr habt doch alle schon mal so etwas gemacht nicht war ;-) ?
    Ich bin für jeden Hinweis dankbar.

    mfg

    MFreiberger

    Freitag, 12. März 2010 16:04

Antworten

Alle Antworten

  • Hallo MFreiberger,

    na, da hast Du Dir einiges fürs Wochenende vorgenommen ;-)

    Zunächst vergiß CSV (aus dem Betreff) und übertrage die OPC Daten in ein DataSet.
    Damit fällt der Einstieg schon mal einfacher und schau Dir z. B. an:
    http://msdn.microsoft.com/en-us/vbasic/bb466226.aspx#formsoverdata

    Für die graphische Darstellung solltest Du Dir angucken:
    Microsoft Chart Controls für Microsoft .NET Framework 3.5
    Die gibt es immerhin kostenfrei. Brauchst Du es spezieller,
    wirst Du allerdings in die Tasche greifen müssen.

    Für die Ausgabe in PDF gibt es diverse freie und kostenpflichtige Bibliotheken:
    http://www.aspnetworld.com/articles/2004011801.aspx
    http://csharp-source.net/open-source/pdf-libraries

    oder Du verwendest die Microsoft Reporting Services,
    die können PDF und anderes mehr (Excel usw.)

    Da damit das Wochenende mit Sicherheit rum ist,
    konkretisiere im Einzelfall Deine Frage,
    denn so pauschal gefragt, läßt sich alles nur ebenso beantworten.

    Gruß Elmar

    Freitag, 12. März 2010 17:03
    Beantworter
  • Hallo MFreiberger,

    Hat Dir die Antwort geholfen?

    Grüße,
    Robert

    Mittwoch, 17. März 2010 08:03
    Moderator
  • Moin Robert,

    ja, Elmars Antwort hat mich auf jeden Fall schon einmal in eine bessere Richtung gestossen. Da ich noch blutiger Anfänger bin hab ich etwas gebraucht um deine Denkanstösse zu verarbeiten.
    Aber danke auf jeden Fall für die schnelle Antwort.

    Jetzt habe ich schon einmal Daten in einer Datenbank. Diese möchte ich auch als Kurve Anzeigen. Dazu habe ich 2 tabellen. Beide tabellen enthalten eine ID. In der "Haupttabelle" hat jede Zeile eine neue ID und in der "Datentabelle" Haben alle daten die zu der Zeile der Haupttabelle gehören die gleiche ID. Jetzt lese ich die ID der Haupttabelle aus, um Sie als Filter für die Datentabelle zu nutzen. Mit einem Button öffne ich dann eine Instanz einer Form, die einen Reportviewer und einen DataGridView enthält.
    Mein Problem ist jetzt dass der DataGridView die daten korrekt gefiltert anzeigt, aber der Reportviewer immer alle Daten graphisch darstellt.
    Hast du dazu eine Idee? Mein Code Dazu Sieht so aus:


    Public Class Form1
        Private Sub Diag1BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Me.Validate()
            Me.Diag1BindingSource.EndEdit()
            Me.Diag1TableAdapter.Update(Me.Test100317_1DataSet.Diag1)
        End Sub
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.HauptTableAdapter.Fill(Me.Test100317_1DataSet.Haupt)
        End Sub
        Private Sub bGraph1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bGraph1.Click
            myIndex = Me.HauptDataGridView.Item(0, Me.HauptDataGridView.CurrentRow.Index).Value()
    
            Dim myDiag1 As New Diag1 'Diag1 == Formklasse
    
            myDiag1.Diag1BindingSource.Filter = "ID=" & myIndex.ToString()
    
            myDiag1.Text = "Diagramm " & myIndex.ToString()
    
            myDiag1.ShowDialog() 'Dialog == Modal
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            myIndex = Me.HauptDataGridView.Item(0, Me.HauptDataGridView.CurrentRow.Index).Value()
        End Sub
    End Class



    Gruß

    Mario
    Donnerstag, 18. März 2010 06:28
  • Hallo Mario,

    der ReportViewer kann mit der Filterung einerBindingSource nichts anfangen.
    Und da nunmal alle Daten im DataSet sind zeigt er auch alle an.

    Da ein Filter über die Datenquelle in lokalen Berichten nicht möglich ist:
    Definieren von Berichtsparametern in einem Bericht (Visual Studio-Berichts-Designer)
    mußt Du dies entweder über die Formatierung lösen,  in dem Du nur die ausgewählten Zeilen einblendest.
    Oder ein weiteres DataSet erstellen, dass nur die anzeigenden Daten enthält.

    Gruß Elmar
    Donnerstag, 18. März 2010 08:17
    Beantworter
  • Zumindest mit cer CSV-Datei kann ich dir weiterhelfen: http://codekicker.de/fragen/CSV-Parser-CSharp-fuer-CSV-Dateien-und-auch-CSV-Ausgabe/581 Dort gibt es lauter CSV-Parser und Writer.
    Sonntag, 11. September 2011 21:34