Announcement

Collapse
No announcement yet.

temporäre Tabelle im DataSet-Objekt speichern

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

  • temporäre Tabelle im DataSet-Objekt speichern

    hallo,

    hab eine funktion in c# geschrieben, die auf eine temporäre tabelle zugreift und diese in einem dataset-objekt speichert.
    diese funktion ruf ich nun in einer gespeicherten prozedur in t/sql auf, das programm gibt auch einen wert zurück.
    will ich aber nun innerhalb der t/sql-prozedur mit der temporären tabelle weiterarbeiten, ist diese leer?
    hat jemand ne idee, wieso das so ist. ich greif nur auf die tabelle und holle mir die zeilen..?

    lg kenden

  • #2
    Weiß nicht, ob ich die Frage richtig verstanden habe. Aber so wie du das beschreibst, würde ich die temporäre Tabelle schon vom Aufrufer, also der stored proc, anlegen lassen. Und die Funktion füllt diese Tabelle nur. Abgesehen davon kann eine Funktion nicht nur Strings und Zahlen sondern auch eine Tabelle als Resultat zurückgeben (siehe Manual). Wenn du aber eine einfache temporäre Tabelle in der Function anlegst, dann wird die beim Verlassen der Function automatisch wieder gelöscht.

    bye,
    Helmut

    Comment


    • #3
      die tabelle wird von einer stored procedure erzeugt und gefüllt, innerhalb dieser procedure wird die funktion nur aufgerufen. die funktion selbst führt nur eine berechnung mit den werten aus der tabelle durch und gibt ein ergebnis zurück.
      nach dem aufruf der funktion ist die tabelle zwar noch vorhanden, die zeilen sind aber plötzlich leer.
      dürfte doch eigentlich nicht sein, oder?

      Comment


      • #4
        Hi kenden,

        poste mal die Function bitte, damit man das auch mal prüfen kann

        Gruß
        Thomas

        Comment


        • #5
          der zugriff auf die tabelle erfolgt folgendermaßen:

          ....

          SqlConnection conn = new SqlConnection("context connection=true");
          conn.Open();
          SqlDataAdapter daTest = new SqlDataAdapter("Select Interval, Cash_Flow FROM #Cash_Flows", conn);
          DataSet dsTestData = new DataSet("TestData");
          daTest.FillSchema(dsTestData, SchemaType.Source, "#Cash_Flows");
          daTest.Fill(dsTestData, "#Cash_Flows");

          DataTable tblTest;
          tblTest = dsTestData.Tables["#Cash_Flows"];
          DataRowCollection dr;
          dr = tblTest.Rows;

          ...
          die daten werden dann in einem array gespeichert und dann bearbeitet..
          muß ich was besonderes beachten, damit die daten in der temp table nach aufruf dieser funktion erhalten bleiben?

          Comment


          • #6
            Hi kenden,

            also an Deiner Stelle würde ich eine richtige Tabelle anlegen und dann entsprechend "vorher" leeren und dann verwenden. Es gibt ja temporäre Tabellen, damit diese "temporär" sind und eben nicht auf Dauer. Ich nutze die Temp-Tabellen auch nur als eine Art Zwischenspeicher! Alles was man noch irgendwie verwenden will, sollte man richtig anlegen... Dann hast Du auch nicht solche Probleme ...

            Gruß
            Thomas

            Comment


            • #7
              hi thomas,

              hatte auch grad damit angefangen, normale tabellen anzulegen..
              danke trotzdem.

              lg
              kenden

              Comment


              • #8
                also, ich hab jetzt eine richtige tabelle angelegt, und die tabelle ist nach zugriff der funktion wieder leer.....
                was meinst du eigentlich mit vorher leeren? ich brauch doch die tabelle die ganze prozedur über.

                Comment


                • #9
                  hallo thomas,
                  hat sich erledigt, hab die zeile:
                  daTest.FillSchema(dsTestData, SchemaType.Source, "#Cash_Flows");
                  rausgenommen, jetzt klappt alles, auch mit temporärer tabelle.
                  danke noch mal für die vorschläge.
                  lg
                  kenden

                  Comment

                  Working...
                  X