VB.NET SELECT auf DataTable ausführen ?

RedWraith

Mitglied
Hallo !

Ich habe folgendes Problem: Ich bekomme Lagerdaten (Artikelnummer, Materialnummer, Größe, Menge) aus drei verschiedenen Datenquellen (einer Dateidatenbank, einem komischen DBMS und aus ner XML-Schnittstelle). Und genau diese Daten muss ich irgendwie gruppieren und summieren.

Im Moment schreibe ich die Daten aus allen drei Datenquellen in eine temporäre MySQL-Tabelle und ziehe mir die Daten dann erneut mit einem SELECT heraus.

Code:
Tabelle TmpLager
----------------------------
int Artikelnr
int Materialnr
int Hoehe
int Breite
int Menge

Und nachher hol ich mir die Sachen einfach folgendermaßen:

Code:
SELECT Artikelnr, Materialnr, Hoehe, Breite, SUM(Menge) FROM TmpLager GROUP BY Artikelnr, Materialnr, Hoehe, Breite

Das Ganze funktioniert auch wunderbar, das einzigste, was mich daran stört ist, dass ich dafür extra eine Datenbankverbindung zu einem DBMS brauche und ich wollte nun fragen, ob es eine Möglichkeit gibt, diesen Tabellenkram vielleicht direkt in VB.NET, vielleicht in einem DataTable oder ähnlichem, auszuführen, ohne dabei den Umweg über einen externen Server zu gehen.


Mit freundlichen Grüßen
Red
 
Nicht viel. Die Quelldatenbanken sind zwar riesig, aber mein Programm sieht dabei nur jeweils was an einem Stichtag getätigt worden ist. Ich würd sagen maximal 50-100 Datensätze, vor der Gruppierung/Summierung. Danach dürften es nurnoch etwa 1/3 davon sein.

EDIT:
Irre ich mich oder ist LINQ nur für Visual Studio 2008 erhältlich ?
Weil ich im Moment nur in VS 2005 entwickeln kann.
 
Zuletzt bearbeitet:
Lies einfach die Daten aus den unterschiedlichen Quellen ein, halte diese in einer Struktur (DataSet, eigene Struktur) und mach darauf dann eine Gruppierung. Bei den wenigen Daten ist es nicht sinnvoll, hier noch über eine eigene Datenbank zu gehen.
 
Genau das will ich ja !

Die Frage ist nur, wie ich das am besten umsetze.
Ich hab das ganze ja im Moment über eine Datenbank laufen und mir ist die Unsinnigkeit davon durchaus bewusst.
Ich wollte nur wissen, ob VB.NET 2005 von Haus aus ihrgendeinen Mechanismus liefert, der mir hier Arbeit
abnimmt.


mfg Red
 
Zuletzt bearbeitet:
Wie Nobert schreibt, verwende ein DataSet um die Daten zu speichern, anstelle der mySQL Datenbank. DIES ist der Mechanismus den .NET hier liefert.
 
Du kannst dir natürlich auch eine eigene Geschichte aufbauen. Beispiel:

Datenobjekt:
Code:
public class MyDataObject
{
  public Int64 Id { get; set; }
  public String DataField1 { get; set; }
  public String DataField2 { get; set; }
}

Dann musst du die Datenobjekte noch in eine Liste stecken, damit du darüber iterieren kannst:
Code:
public class MyDataObjectCollection : Collection<MyDataObject>
{
}
Und nun musst du deine Daten eben auslesen. Beispielsweise mit einem SqlDataReader wenn du auf eine Datenbank zugreifst:
Code:
MyDataObjectCollection objCol = new MyDataObjectCollection();
SqlDataReader reader = myCommand.ExecuteReader();
while (reader.Read())
{
  MyDataObject obj = new MyDataObject();
  obj.Id = reader.GetInt(0);
  obj.DataField1 = reader[1].ToString();
  obj.DataField2 = reader[2].ToString();
  objCol.Add(obj);
}
Und so verfährst du für alle deine Datenquellen. Danach hast du eine Collection mit allen Daten und darauf kannst du dann eben noch weitere Aktionen durchführen.

WICHTIG: Der Sourcecode ist lediglich schnell zusammengeschrieben, ohne IntelliSense ;-), ohne Syntax-Check und hat Symbolcharakter. D.h. er wird vermutlich nicht kompilieren und dient nur zur Veranschaulichung um dir zu zeigen, was genau ich meine.
 
Zurück