Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - SQL Select, dann für jede Zeile etwas ausführen
fahrstuhl65 - Do 09.12.10 19:55
Titel: SQL Select, dann für jede Zeile etwas ausführen
Hallo,
ich verwende SQL Compact und habe ein Datagridview auf einem Form, welches über einen tableAdapter gefüllt wird und über ein Dataset mit SQL Anweisungen "bearbeitet" wird.
Ich suche nun einen Weg wie ich folgendes realisieren kann:
einen SQL Query der mir zurück gibt bei welchen Datensätzen eine Spalte namens [Profit Tradeende] leer ist. Das habe ich wie folgt realisiert:
SELECT ID, Name, [Kurs aktuell]
FROM Protokoll
WHERE ([Profit Tradeende] IS NULL)
Nun möchte ich das Ergebnis Zeile für Zeile durchgehen und immer folgendes durchführen:
Den Wert aus der Spalte 'Name' an eine Funktion übergeben die ein Ergebnis zurück liefert, dieses Ergebnis möchte ich dann für diesen Datensatz in die Spalte [Kurs aktuell] schreiben.
Das ganze wie gesagt Zeile für Zeile auf den oben genannten Query.
Wenn das einmal funktioniert, möchte ich das ganze in den Timer_Tick Event verschieben der dann alle 5 Minuten den aktuellen Kurs in die Spalte schreibt.
Ich zermater mir schon die ganze Zeit den Kopf, aber ich habe wirklich keinen einzigen Lösungssatz der mir vorschwebt.
Hat eine eine Idee wie man dieses Problem lösen kann ?
Ich erwarte natürlich keine fertigen Sources, aber vielleicht einen Denkanstoss. Meine letzte Idee für heute war den Query in einen DataTable zu schreiben. Aber ich sehe keine Methoden um diese dann entsprechend zu manipulieren und an die SQL Tabelle zurück zu geben.
Freue mich über jedwede Hilfe !
Trashkid2000 - Do 09.12.10 21:34
Hallo und :welcome:
im Forum!
Also ich würde mich nicht so sehr auf ein SQL-Statement versteifen, sondern erstmal (beim Start) die Daten so, wie sie in der Datenbank sind, laden. Also die DataTable füllen:
C#-Quelltext
1: 2: 3:
| DataSet1 ds = new DataSet1(); ProtokollTableAdapter ta = new ProtokollTableAdapter(); ta.Fill(ds.Protokoll); |
Der TableAdapter hat also das SQL-Statement
SQL-Anweisung
1:
| SELECT * FROM Protokoll; |
Und dann kannst Du (auch im Timer_Tick) ganz entspannt mit LINQ die Rows rausfischen, in denen "Profit Tradeende" DBNull ist, und dann Aktionen durchführen:
C#-Quelltext
1: 2: 3: 4: 5:
| foreach (DataSet1.ProtokollRow row in ds.Protokoll.Where(r=> r.IsProfit_TradeendeNull())) { row.Kurs_aktuell = DoSomethingWithName(row.Name); } int updatedRows = ta.Update(ds.Protokoll); |
Das war's schon. Aber um die Aktualisierung der DataGridView musst Du Dich noch selber kümmern (wenn das nicht automatisch geschieht).
LG, Marko
fahrstuhl65 - Di 14.12.10 14:24
Hi !
Vielen Dank für die Hilfe, war leider ein paar Tage verhindert, daher antworte ich erst jetzt,
aber genau so hat es funktioniert !
Vielen Dank !
gruß
fahrstuhl
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!