Laden...

DataView als neues DataSet

Erstellt von diana vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.055 Views
D
diana Themenstarter:in
586 Beiträge seit 2004
vor 17 Jahren
DataView als neues DataSet

Hallo,

ich habe mir ein DataView erstellt, welches Daten enthält, die ich als DataSet benötige. Leider, habe ich aber noch keine richtige Vorstellung wie ich meine gefilterten Daten in ein DataSet bekomme. Ich habe hier auch schon mal gesucht, aber nichts richtiges gefunden. Vielleicht habt ihr einen konstruktiven Vorschlag. Ich hätte nicht gedacht, dass diese Umwandlung so viel Schwierigkeiten birgt:-(

:::

476 Beiträge seit 2004
vor 17 Jahren

hallo diana,

das DataView stellt eine datenbindungsfähige, angepasste Ansicht einer DataTable zum Sortieren, Filtern, Durchsuchen, Bearbeiten und Navigieren dar. Du kannst daher die zugrunde liegende DataTable dem DataSet zuweisen.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

N
4.644 Beiträge seit 2004
vor 17 Jahren

Naja ein DataSet und eine DataView sind ja doch etwas verschiedene Objekte.

Aber wenn Du eine neue Table aus einer View erstellen und diese einem DataSet zuweisen möchtest, kannst Du so vorgehen.

dataSet.Tables.Add(dataView.ToTable());

Ich geh hier von .NET 2.0 aus!

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 17 Jahren

Original von Yellow
hallo diana,

das DataView stellt eine datenbindungsfähige, angepasste Ansicht einer DataTable zum Sortieren, Filtern, Durchsuchen, Bearbeiten und Navigieren dar. Du kannst daher die zugrunde liegende DataTable dem DataSet zuweisen.

-yellow

Ich kann nur auf die Quelltabelle zugreifen, aber die gibt mir nicht die Daten des Views zurück, sondern die Quelldaten.

:::

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 17 Jahren

Original von Noodles

Ich geh hier von .NET 2.0 aus!

Ich arbeite leider mit 1.1!

:::

476 Beiträge seit 2004
vor 17 Jahren

Original von diana
Ich kann nur auf die Quelltabelle zugreifen, aber die gibt mir nicht die Daten des Views zurück, sondern die Quelldaten.

Wenn du die Quelltabelle nicht verwenden kannst, und auf 1.1 angewiesen bist, und dennoch eine DataTable mit den Daten aus der View erzeugen möchtest, bleibt dir meiner Meinung nach nichts anderes als diese Tabelle manuell zu erstellen, und für jede DataViewRow eine DataRow (for each) in der manuell erzeugten Tabelle einzufügen.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

F
10.010 Beiträge seit 2004
vor 17 Jahren

@diana:

Wozu brauchst Du das?
Meist ist bei solchen schwierigkeiten eher die herangehensweise das Problem.

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 17 Jahren

Original von FZelle
@diana:

Wozu brauchst Du das?
Meist ist bei solchen schwierigkeiten eher die herangehensweise das Problem.

Ich erzeuge ein Dataset und danach werden dynamische Controls in meiner Form angelegt und mit Werten gefüllt. Nun soll es aber noch eine Auswahl nach einer bestimmten Nummer geben, sodass, wenn im Menü eine bestimmte Nummer ausgewählt wurde, die Controls und deren Werte neu erzeugt werden müssen, sodass nur die Datensätze mit der gewünschten Nummer angezeigt werden. Das wollte ich wie schon gesagt mit einem View realisieren und diesesn View wollte ich in mein schon bestehendes DataSet füllen. Das ist der ganze Hintergrund.

Ich habe mir jetzt ein Dataset mit den Daten gebaut und möchte nun dieses ds meinem ursprünglichen DataSet übergeben, aber wie? Mit Merge werden ja nur die Daten ansich geleert, aber ich möchte einfach, dass ds = mein ursprüngliches ds! Ich hofffe das war einigermaßen verständlich?!

:::

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 17 Jahren

Ich habe jetzt das gewünschte Dataset erzeugt und in mein ursprüngliches Ds gefüllt, dabei habe ich nur noch ein kleines Programmierproblem. Beim Erstellen des Ds wird immer nur noch der letzte Datensatz in das Ds geschrieben.


for (int i = 0; i < dv.Count; i++)
{
    ds = new DataSet("ds");
    dt = new DataTable("dt");

    DataColumn col1 = new DataColumn("col1");
    DataColumn col2 = new DataColumn("col2");
    DataColumn col3 = new DataColumn("col3");
					
    ds.Locale = new System.Globalization.CultureInfo("de-DE");
    ds.Tables.AddRange(new System.Data.DataTable[] {dt});

    dt.Columns.AddRange(new System.Data.DataColumn[]{col1,col2,col3});

    dt.Rows.Add(new object[]{dv[i][i],dv[i][i+1],dv[i][i+2]});
}

ursprünglichesDS.Tables.Clear();
ursprünglichesDS.Clear();
ursprünglichesDS.Merge(ds);

Vielleicht sieht jemand den Fehler! 🙂

:::

476 Beiträge seit 2004
vor 17 Jahren

hallo diana,

du deklarierst in deiner for-schleife für jede Row in deiner View ein neues DataSet, eine neue DataTable... usw... daher wird da nie mehr als der letzte Datensatz drinnen stehen können. Du müsstest diese Deklarationen außerhalb der for-Schleife machen.

Wie FZelle bereits vermutete glaube ich auch, dass es bereits an der herangehensweise an das Problem liegt. Wenn ich ehrlich bin, habe ich auch noch nicht ganz deine Absicht verstanden, könntest du mir noch etwas ausführlicher schildern was du vorhast? gerne auch als pn.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 17 Jahren

Gerade selbst gesehen, das kann ja nicht gehen. Danke trotzdem. So nun bin ich soweit selber durch mit meinem Problem. Vielen Dank für die schnellen Antworten.

:::