Veröffentlicht 20. April 201015 j 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.
20. April 201015 j 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.
20. April 201015 j Autor 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.
20. April 201015 j Warum willst du die Abfragen zum SQL Server vermeiden? Daten in einem Dataset abzufragen dauert, meiner Meinung nach, viel länger.
21. April 201015 j 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.
21. April 201015 j Autor 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.
21. April 201015 j 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.
21. April 201015 j 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%'")
22. April 201015 j Autor 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:
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.