piomode1 Geschrieben 20. April 2010 Teilen Geschrieben 20. April 2010 Guten Morgen, ich habe in einer Datasettabelle alle Daten stehen: ds.Tables("AlleDaten"). Damit ich die Connection zur Datenbank schließen kann, möchte ich gerne aus der o.g. Tabelle bestimmte Datensätze auswählen und in eine andere Tabelle des Datasets schreiben: ds.Tables("EinigeDaten"). Ich möchte dadurch langwierige For-Next-Schleifen vermeiden. Welche zusätzlichen Objekte und Methoden benötige ich? Wie realisiere ich ein "Select ..." für die Datensatzauswahl? Mit LINQ? Welchen Weg müssen die Daten dabei gehen? Vielen Dank schon einmal an dieser Stelle. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 20. April 2010 Teilen Geschrieben 20. April 2010 Guten Morgen, ich habe in einer Datasettabelle alle Daten stehen: ds.Tables("AlleDaten"). Moin, Um welches DBMS handelt es sich denn? Ein Dataset soll nicht die komplette DB-Struktur abbilden und schon gar nicht alle Daten halten. Mach doch eine Abfrage gegen die Datenbank und lade die gewünschten Daten ins Dataset. LINQ würde ich dann zur verfeinerten Filterung nutzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
piomode1 Geschrieben 20. April 2010 Autor Teilen Geschrieben 20. April 2010 Hallo lbm1305, vielen Dank für Deine Antwort. Ok: mit "alle Daten" habe ich die für den Vorgang relevanten Daten gemeint. ("Select ... from ... [inner join ...] where...") Momentan komme ich noch mit Datasets am besten zurecht. Wenn es also die Möglichkeit gibt, selektierte Daten "von ds1 nach ds2" zu kopieren, würde ich sie für diese Aufgabe gerne nutzen. Höchstwahrscheinlich gibt es bessere Lösungen. Die werde ich erst kennenlernen. Auf jeden Fall versuche ich, den MS-SQL-Server so wenig wie möglich anzusprechen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sarene Geschrieben 20. April 2010 Teilen Geschrieben 20. April 2010 Warum willst du die Abfragen zum SQL Server vermeiden? Daten in einem Dataset abzufragen dauert, meiner Meinung nach, viel länger. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 21. April 2010 Teilen Geschrieben 21. April 2010 Ich würde es verstehen, wenn es sich um eine Access-DB handelt, aber bei einem SQL-Server würde ich immer gegen den Server abfragen. z.B. könntest Du eine Stored Procedure auf dem Server anlegen. Vorteil davon ist, dass sich der Server diese Abfrage ständig versucht zu optimieren und Änderungen würden auf dem Server statt finden. Somit muss man nicht den Quellcode des Programmes ändern. Des Weiteren kümmert sich der Server um die Connections. Wie bzw. mit welchem Control werden denn die Daten angezeigt? Das DataGridView (Row) sollte die Eigenschaft besitzen, selektierte Zeilen zu erkennen. Ebenso sollte das ListView die SelectedRows erkennen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
piomode1 Geschrieben 21. April 2010 Autor Teilen Geschrieben 21. April 2010 Hallo Sarene, hallo lbm1305, das sind wertvolle Hinweise, die ich zu gegebener Zeit einbringen werde. Der zeitliche Faktor wird für diese Aufgabe akzeptiert, weil: Durch das einmalige Einlesen der Daten können/dürfen mir nachfolgende Veränderungen des Datenbestands auf dem Server egal sein. Darum frage ich nach einer Möglichkeit, ausgewählte Daten(sätze) aus einer Dataset.Table1 in eine andere Dataset.Table2 zu kopieren. [Edit] Die Daten werden in diesem Fall gar nicht angezeigt, sondern nur verarbeitet.[/Edit] Allzeit mit der nebulösen Ahnung unterwegs, daß es immer noch ein wenig besser geht... Ich fange gerade erst an, mich in den unendlichen Weiten der .net-Objekte zu bewegen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 21. April 2010 Teilen Geschrieben 21. April 2010 Darum frage ich nach einer Möglichkeit, ausgewählte Daten(sätze) aus einer Dataset.Table1 in eine andere Dataset.Table2 zu kopieren. [Edit] Die Daten werden in diesem Fall gar nicht angezeigt, sondern nur verarbeitet.[/Edit] Ich vermute mal, dass Du über den (DataSet)-Designer gegangen bist?! Datensätze in einem Dataset auswählen, welches nicht angezeigt wird? Im Grunde genommen müsstest Du Zeile für Zeile Deiner DataTable durchlaufen . Die aktuelle DataRow kannst Du dann der neuen DataTable anhängen. // Pseudocode: foreach (DataRow row in table.DataRows) { if(Bedingung) newTable.Rows.Add(row); } Eine andere Möglichkeit wäre, die Tabelle als Klasse darzustellen und dafür eine generische Liste zu nutzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sarene Geschrieben 21. April 2010 Teilen Geschrieben 21. April 2010 wie willst du denn die datensätze suchen?weißt du das schon? wenn nicht: Suchen einer bestimmten Zeile in einer DataTable Da dürfte vielleicht auch das letzte Beispiel interessant sein Dim foundRows() As Data.DataRow foundRows = DataSet1.Tables("Customers").Select("CompanyName Like 'A%'") Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
piomode1 Geschrieben 22. April 2010 Autor Teilen Geschrieben 22. April 2010 Vielen Dank für die Anregungen und Tips. Ich werde sie in den kommenden Projekten berücksichtigen. Für dieses Programm: Ich greife mit mehreren "Select"s auf die Datenbank zu und sammel die Daten als Tables in einem DataSet. Ein paar "Clear"s und ein paar Schleifen dazu - fertig. Nicht optimal und nicht am schnellsten - aber mit meinem jetzigen (praktisch erprobten) Wissensstand machbar. :hells: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.