Announcement

Collapse
No announcement yet.

VB-Werte in SQL-Abfrage integrieren

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

  • VB-Werte in SQL-Abfrage integrieren

    Hallo Zusammen,

    ich zerbrech mir jetzt schon die ein oder andere freie Minuten den Kopf über folgendes Problemchen:

    Ich möchte eine Abfrage auf den SQL-Server starten, wobei in dieser Abfrage allerdings ein Wert eingetragen werden sollte, welcher unter VB - je nach Auswahl - in ein Feld geschrieben wird.
    Bsp:

    SELECT * FROM table WHERE NummerID=<Wert aus VB-Feld>

    Eine Abfrage aus VB heraus starten klappt wunderbar. Da kann ich ja die Feld-Werte gut einbauen.

    Der erweiterte Hintergrund ist folgender:
    Ich berechne mit einer SQL-Abfrage aus VB eine Listbox. Diese Listbox-Auswahl sollte nun in einen MS-Report verfrachtet werden. Klappt alles, bis auf die Tatsache, dass der Report alle Datensätze aus SQL-Tabelle anzeigt.
    Der Grund dafür ist, dass der Report mit der Formel

    SELECT * FORM table

    arbeitet.
    Deshalb die Frage, ob VB-Werte in SQL-Abfragen her genommen werden können.

    Danke und Gruß
    Syn

  • #2
    Hallo Synymy,

    bei Deiner Beschreibung kann man nur Raten, worum es überhaupt geht.

    In nehme jetzt mal an, Du meinst mit "VB" eigentlich "MS Visual Studio" (VB.NET) und das Du dort das "Report Viewer Control" (MS-Report) nutzt.

    Man kann in den Reports sogenannte Berichtsparameter verwenden, siehe hier:
    http://msdn.microsoft.com/de-de/library/ms155917.aspx
    und diese dann auch per URL/übers Control übergeben.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Erst einmal sorry für meine unverständliche Erklärung und vielen Dank für die Antwort.
      Leider konnte ich in den tiefen der MSDN noch nichts für diesen Zweck herauslesen.

      Ja, bei VB handelt es sich um MS Visual Studio (VB.net).
      Und ja, es handelt sich um den MS-Report.

      Ich versuch mein Problem jetzt nochmal etwas klarer darzustellen:

      In meinem Programm 'Hausverwaltung' treffe ich eine Auswahl welches Haus ich mir genauer anschauen will, z.B. Haus 5. Es öffnet sich die nächste Form mit Daten von Haus 5 - es läuft also eine Abfrage auf meine SQL-DB mit einem SELECT * auf Haus 5 und die Felder werden dementsprechend gefüllt.
      Nun habe ich einen Report, mit dem ich diese Daten zu Papier bringen möchte.
      ...einen Report erstellt, Felder rumgeschoben und nen Button zum Aufrufen in die Form gebaut.
      Wenn der Report per Button nun aufgerufen wird, zeigt er aber alle Häuser an, die in der SQL-DB hinterlegt sind.
      M.e. ist das so, weil beim Report-Aufruf schon im BindingSource eine SQL-Abfrage auf alle Datensätze läuft, also: SELECT * FROM table
      Ich möchte aber nur die Daten auf Papier haben, die das ausgewählte Haus betreffen, muss also nach meinem Verständnis ein
      SELECT * From table WHERE HausID=5
      her.
      Wie bekomme ich nun diese '5', die ich zwei Forms vorne dran ausgewählt habe in die SQL-Abfrage?!

      So, hoffentlich ist es nun etwas klarer... :-)

      Danke und Gruß
      Syn

      Comment


      • #4
        Der Link zur MSDN war schon zum richtigen Thema; nur Dein Thread wäre im .NET Forum besser aufgehoben, da es nichts mit DB/SQL zu tun hat.

        Im Report kannst Du "Berichtsparameter" definieren, die Du dann zum Filter im "DataSet" verwenden kannst, das sieht dann so aus:

        SELECT * From table
        WHERE HausID = @HausParameter

        In VB.NET muss Du dann den gewünschten Parameter setzen, sieht als Ansatz so aus:

        Dim rpt As Microsoft.Reporting.WinForms.LocalReport
        rpt = Me.ctlReportViewer.LocalReport
        rpt.SetParameters( ... usw ...)
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment

        Working...
        X