Ankündigung

Einklappen
Keine Ankündigung bisher.

Textbox-Inhalt in Table-Adapter Abfrage

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Textbox-Inhalt in Table-Adapter Abfrage

    Hallo zusammen,
    kann mir jemand helfen die Variablen sHDD_01 und sHDD_02 in die Table-Adapter Abfrage zu bekommen.
    So Habe ich es (erfolglos) probiert.

    C#:

    private void button1_Click(object sender, EventArgs e)
    {
    string wert_tb = textBox1.Text;
    string sHDD_01 = textBox2.Text;
    string sHDD_02 = textBox3.Text;


    Abfrage:


    (Diese Anweisung wird nicht unterstützt.Gibt es hier vielleicht eine Alternative?) DROP TABLE IF EXISTS dbo.temp


    SELECT * INTO dbo.temp
    FROM [dbo].[gesamt_11_09]
    WHERE (name LIKE @sHDD_01) OR (name LIKE @sHDD_02)




    SELECT[name],[bytes]
    FROM [dbo].[temp]
    WHERE [bytes]
    IN (SELECT [bytes]FROM [dbo].[temp]GROUP BY [bytes] HAVING count([bytes]) >1)
    ORDER BY [bytes] DESC

    Ich hoffe,ich habe mich einigermaßen verständlich ausgedrückt und bedanke mich schon mal.

  • #2
    Hallo,

    Quick and dirty :
    var query = string.Format("SELECT * INTO dbo.temp
    FROM [dbo].[gesamt_11_09]
    WHERE (name LIKE {0}) OR (name LIKE {1}), sHDD_01, sHDD_02)

    Zudem müsste es vermutlich auch ' Select * from' heißen und nicht into.


    In etwa so :

    var query = string.Format("SELECT * FROM [dbo]. [gesamt_11_09]
    WHERE (name LIKE {0}) OR (name LIKE {1}), sHDD_01, sHDD_02);
    Zuletzt geändert von Basi; 04.01.2019, 22:24.

    Kommentar


    • #3
      Zitat von Basi Beitrag anzeigen
      Hallo,

      Quick and dirty :
      var query = string.Format("SELECT * INTO dbo.temp
      FROM [dbo].[gesamt_11_09]
      WHERE (name LIKE {0}) OR (name LIKE {1}), sHDD_01, sHDD_02)

      Zudem müsste es vermutlich auch ' Select * from' heißen und nicht into.


      In etwa so :

      var query = string.Format("SELECT * FROM [dbo]. [gesamt_11_09]
      WHERE (name LIKE {0}) OR (name LIKE {1}), sHDD_01, sHDD_02);


      Hallo,
      erstmal danke für die Antwort.
      Das "INTO" müsste stimmen.
      Schreibt das Ergebnis der Abfrage in die temporäre Tabelle dbo.temp
      Das klappt auch.

      Folgende Fehlermeldung vom Assistent:


      Der Assistent hatbeim Konfigurieren der TableAdapter-Abfrage "fillBy" folgende Probleme ermittelt:
      Details:

      Ungültiger/s Text oder Symbol.
      Fehler bei Bezeichner "var"."OUTPUT" wurde erwartet.

      Hier die angepasste Abfrage:


      DELETE FROM dbo.temp
      var query = string.Format("SELECT * INTO dbo.temp
      FROM [dbo].[gesamt_11_09]
      WHERE (name LIKE {0}) OR (name LIKE {1}), sHDD_01, sHDD_02)

      Kommentar


      • #4
        Was willst du damit erreichen, erklär das vllt mal dann kann man dir helfen, die SQL query macht keinen Sinn.

        Was mein Vorschlag macht ist lediglich die Platzhalter mit den richtigen Werten in die Variable query zu schreiben.
        Zuletzt geändert von Basi; 05.01.2019, 12:54.

        Kommentar


        • #5
          Zitat von Basi Beitrag anzeigen
          Was willst du damit erreichen, erklär das vllt mal dann kann man dir helfen, die SQL query macht keinen Sinn.

          Was mein Vorschlag macht ist lediglich die Platzhalter mit den richtigen Werten in die Variable query zu schreiben.

          So sieht die gesamte Abfrage im SQL Server Managementstudio aus.
          Sie macht Sinn und funktioniert einwandfrei.
          Der erste Teil filtert nach den besagten Teilstrings und schreibt das Ergebnis in eine seperate Tabelle.
          Diese wird im zweiten Teil nach doppelten Werten in der "bytes"-Spalte gefiltert.
          Ausgabe entspricht exakt meinen Vorstellungen.
          Das Ganze würde ich noch gerne in eine Visual C# Anwendung verpacken und die Teilstrings über Textboxen einlesen bevor das SQL-Statement ausgeführt wird.



          DROP TABLE IF EXISTS dbo.temp
          SELECT * INTO dbo.temp
          FROM [dbo].[gesamt_11_09]
          WHERE (name LIKE 'HDD_03%') OR (name LIKE 'HDD_004%')
          SELECT[name],[bytes]
          FROM [dbo].[temp]
          WHERE [bytes]
          IN (SELECT [bytes]FROM [dbo].[temp]GROUP BY [bytes] HAVING count([bytes]) >1)
          ORDER BY [bytes] DESC

          Kommentar


          • #6
            Hmm da sind ja eher 3 Querys aber nun gut.

            var query = string.Format(
            "DELETE FROM dbo.temp
            SELECT * INTO dbo.temp
            FROM [dbo].[gesamt_11_09]
            WHERE (name LIKE {0}) OR (name LIKE {1})" , sHDD_01, sHDD_02);

            Die Query könntest du dann z.B mit ADO.NET ausführen ist ein DB Framework. Habe aber ehrlich gesagt das Gefühl das du noch nicht sehr erfahren bist deshalb lies dich ein und stell hier dann weiter Fragen.

            Kommentar


            • #7
              Zitat von Basi Beitrag anzeigen
              Hmm da sind ja eher 3 Querys aber nun gut.



              Die Query könntest du dann z.B mit ADO.NET ausführen ist ein DB Framework. Habe aber ehrlich gesagt das Gefühl das du noch nicht sehr erfahren bist deshalb lies dich ein und stell hier dann weiter Fragen.
              DELETE FROM dbo.temp
              var query = string.Format("SELECT * INTO dbo.temp
              FROM [dbo].[gesamt_11_09]
              WHERE (name LIKE {0}) OR (name LIKE {1}), sHDD_01, sHDD_02)

              Ergebnis:
              Die Anwendung befindet sich im Haltemodus
              Ihre App wurde angehalten, aber es gibt keinen anzuzeigenden Code, da alle Threads externen Code ausgeführt haben (normalerweise System- oder Frameworkcode).

              Daß ich das wieder zu hören bekomme(also in der Evolutionsstufe auf Neandertaler-Niveau)war mir klar.
              Ich denke halt einfach ,daß ich um Auto zu fahren,nicht unbedingt verstehen muß ,wie ein Automatik-Getriebe funktioniert.
              Wenn ich dann demnächst in Rente gehe,kann ich mich intensiver mit der Materie befassen.

              Kommentar


              • #8
                Hallo,
                bin inzwischen etwas weitergekommen.
                Habe im SQL Server Management Studio eine gespeicherte Prozedur erstellt der man zwei Parameter mitgeben kann.
                Mit " EXEC prozedurname Teilstring1,Teilstring2" klappt das einwandfrei.
                Diese zwei Teilstrings würde ich gerne in einer Visual C#-Anwendung aus zwei Textboxen auslesen,der Prozedur übergeben und das Ergebnis
                in einem DataGridView anzeigen.
                Bis dann,
                Havefun


                USE [TEST_01]
                GO
                /****** Object: StoredProcedure [dbo].[SelectStringsTemp] Script Date: 09.01.2019 07:09:05 ******/
                SET ANSI_NULLS ON
                GO
                SET QUOTED_IDENTIFIER ON
                GO
                ALTER PROCEDURE [dbo].[SelectStringsTemp]
                @HDD_01 nvarchar(10),
                @HDD_02 nvarchar(10)
                AS
                SELECT * FROM dbo.temp WHERE name LIKE (@HDD_01 + '%') OR name LIKE (@HDD_02 + '%')

                Kommentar


                • #9
                  Zitat von havefun Beitrag anzeigen
                  Hallo zusammen,
                  kann mir jemand helfen die Variablen sHDD_01 und sHDD_02 in die Table-Adapter Abfrage zu bekommen.
                  So Habe ich es (erfolglos) probiert.

                  C#:

                  private void button1_Click(object sender, EventArgs e)
                  {
                  string wert_tb = textBox1.Text;
                  string sHDD_01 = textBox2.Text;
                  string sHDD_02 = textBox3.Text;


                  Abfrage:


                  (Diese Anweisung wird nicht unterstützt.Gibt es hier vielleicht eine Alternative?) DROP TABLE IF EXISTS dbo.temp


                  SELECT * INTO dbo.temp
                  FROM [dbo].[gesamt_11_09]
                  WHERE (name LIKE @sHDD_01) OR (name LIKE @sHDD_02)




                  SELECT[name],[bytes]
                  FROM [dbo].[temp]
                  WHERE [bytes]
                  IN (SELECT [bytes]FROM [dbo].[temp]GROUP BY [bytes] HAVING count([bytes]) >1)
                  ORDER BY [bytes] DESC

                  Ich hoffe,ich habe mich einigermaßen verständlich ausgedrückt und bedanke mich schon mal.
                  Auch das habe ich selbst hingebracht.
                  Für die Abfrage kann man im Datenquellen-Designer beliebig viele Parameter definieren.
                  In diesem Forum war ich als Laie wohl falsch.
                  Die Sache ist erledigt und furtelt.
                  Trotzdem danke.

                  Kommentar

                  Lädt...
                  X