DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
ADO .NET:Offline Daten sind doch gut!

Nachdem die Daten von der Datenquelle geholt worden sind, liegen die da so im Dataview rum. Wenn sie schon mal da sind, kann man auch einige interessante Dinge machen wie sortieren oder filtern. Sogar Relationen lassen sich so noch nachträglich formen.
Beim experimentieren fallen aber vielleicht auch Exoten ins Auge wie Compute. Damit lässt sich im Dataview ein Ausdruck per Aggregat Funktion berechnen.

  • Sum (Sum)
  • Avg (Average)
  • Min (Minimum)
  • Max (Maximum)
  • Count (Count)
  • StDev (Statistical standard deviation)
  • Var (Statistical variance).

Eine praktische Anwendung ist ein Einkaufskorb aus einem Online Shop in dem auch gleich die Gesamtsumme berechnet und angezeigt wird. Dazu wird Compute mit der Funktion Sum verwendet.  Mit einem zweiten Parameter lässt sich sogar die Rechengrundlage einschränken.
Zum Anzeigen wird ein Label verwendet und so könnte man mit einer Zeile diesen Job erledigen.
lblSumme.Text = ds.Table.Compute("Sum(preis*anzahl)","Artnr>1000")

Isd doch toller Code? Wie so oft mit den schönen Dingen sieht die Wahrheit anders aus. Dieses Sample funktioniert nicht! Sum aktzeptiert nur direkt eine Spalte. Man muss erst eine Spalte schaffen, die das Ergebnis Preis* Anzahl liefert. Dies führt uns aber gleich zur zweiten wunderbaren Eigenschaft. Man kann jederzeit an seine Daten Spalten anhängen.
Also bauen wir eine Spalte ein, die die Multiplikation durchführt. Ums ein bischen zu erschweren, gehen wir davon aus, das Anzahl und Preisspalte als String vorliegen. Dann muss noch mit dem Befehl Convert gearbeitet werden um einen Datentyp zu erhalten, der sich auch multiplizieren lässt.
dv.Table.Columns.Add("total", System.Type.GetType("System.Double"), "Convert(preis, 'System.Double')*Convert(anzahl, 'System.Double')")
lblSumme.Text = CStr(dv.Table.Compute("Sum(total)", ""))   

Als Bedingung können verschiedene Ausdrpcke verwendet werden. Die Syntax ist SQL ähnlich.

"ItemName LIKE 'product*'"

Bei Datumswerten siehts ein bischen anders aus. Man fühlt sich an Access erinnert.
"Geburtstag < #1/31/68#"

Der Vorteil dieser Vorgehensweise ist, das man nicht extra zur Datenbank muss um dort Ergebnisse zu berechnen. Auf der anderen Seite muss man nur minimalen Code tippen. In Summe ein tolles Feature  das man nicht mehr in ADO .NET missen möchte.


 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine Links vorhanden

  Erfasst am: 25.04.2002
  Gültig bis: 25.05.2002
6 Ratings
Bewertung: 73,3%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG