Announcement

Collapse
No announcement yet.

Mit Datenbankwerten in C# rechnen

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

  • Mit Datenbankwerten in C# rechnen

    Hallo,

    ich habe zur Zeit eine .aspx Seite, welche bestimmte Datensätze aus einer Datenbank bzw. einer Tabelle aus einer Datenbank darstellt. Siehe Anhang.

    Nun soll eine zusätzliche Spalte kommen, welche aber einen berechneten Wert beinhaltet. Für diese Berechnung wurde mir eine fertige Methode in C# gegeben und so soll ich es auch umsetzen, also in C# berechnen und dort in der Tabelle ausgeben.

    Zusätzlich wird auf der Website durch Eingabe und Klick auf einen Button noch eine Tabelle angezeigt, wo auch diese Spalte hinzukommen soll, aber ich glaube das ist das gleiche wie bei der oberen Tabelle.

    Für die Berechnung, brauche ich allerdings die Werte Luftdruck, Temperatur und Luftfeuchte. Und nun weiß ich halt nicht genau, wie ich mit diesen Werten in C# rechnen kann. Also sie quasi aus der Datenbank heraus in integer Werte konvertieren kann und dann wieder in die Tabelle zurückstecken kann, nachm Rechnen. Ich kann auch nicht in die Tabelle schreiben, da ich nur SELECT Rechte habe. Falls das allerdings unmöglich ist, sowas zu machen mit solchen Rechten, kann ich natürlich auch den Admin hier fragen, ob ich dafür extra Rechte bekomme...

    Aber wie gesagt, geht es mir halt erstmal darum rauszukriegen, wie man nun rechnet.

    Edit: Achja die Daten auf dem DataGrid auf dem screen sind die jeweils aktuellsten Wetterdaten aller 4 Stationen, also keine 4 Datensätze, wie man sie auch so direkt inner Datenbank findet, nur zur Info.

    Und der SQL Code dieser Abfrage lautet:

    [highlight=sql]SELECT dbo.WetterStation.Bezeichnung AS Station, WD.DatumUhrzeit, WD.Luftdruck, WD.Temperatur, WD.Luftfeuchte
    FROM dbo.WetterDaten WD INNER JOIN
    (SELECT Station_ID, MAX(DatumUhrzeit) AS DatumUhrzeit
    FROM WetterDaten
    GROUP BY Station_ID) SUB ON WD.Station_ID = SUB.Station_ID AND WD.DatumUhrzeit = SUB.DatumUhrzeit INNER JOIN
    dbo.DRUCK_DEF D ON D.DRUCK_DEF_ID = WD.DRUCK_DEF_ID INNER JOIN
    dbo.TEMP_DEF T ON T.TEMP_DEF_ID = WD.TEMP_DEF_ID INNER JOIN
    dbo.FEUCHTE_DEF F ON F.FEUCHT_DEF_ID = WD.FEUCHT_DEF_ID INNER JOIN
    dbo.WetterStation ON WD.Station_ID = dbo.WetterStation.Station_ID[/highlight]
    Attached Files
    Zuletzt editiert von Someguy; 17.06.2008, 10:17.

  • #2
    Auch hallo,

    vielleicht muss man gar nicht in die Datenbank schreiben sondern es genügt die interne Erzeugung der Spalte und optische Präsentation mittels ASP.NET. Die grundsätzlichen SQL-Befehle (SUM, COUNT, SELECT,...) in C# sind im Openbook auffindbar.
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Jo kann sein. Nur fällt mir keine Methode ein, das jetzt irgendwie zu realisieren, aber als erstes muss ja erstmal das Ding berechnet werden.

      Mirs eine Möglichkeit eingefallen. Und zwar halt für jeden Wert, den ich brauch eine Abfrage in einem DataAdapter zu machen und diesen mittels ExecuteScalar in ein double Objekt zu konvertieren.

      Allerdings müsste ich dafür 12 DataAdapter machen inkl. DataSets etc. und das muss ja wohl auch viel kürzer gehen.

      Habe rausgefunden, dass man ein DataSet in ein Array stecken kann, nur versteh ich nicht, wie ich das in meinem Fall mit mehreren Tabellen in C# mache.

      Edit: Ok habs nu so gemacht:
      Code:
      ArrayList arlJAB = new ArrayList();
      ...
      arlJAB.Add(dsStationAll.Tables[0].Rows[0].ItemArray.GetValue(2));
      ...
      double dblJAB_Luftdruck = double.Parse(arlJAB[0].ToString());
      Die "..." weil ich das ja für jeden Wert gemacht habe und sich das da einfach wiederholt mit anderen Zahlen. Auf jeden Fall klappt das so
      Zuletzt editiert von Someguy; 18.06.2008, 12:26.

      Comment

      Working...
      X