Autor Beitrag
fahrstuhl65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Do 09.12.10 20:55 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Do 09.12.10 22: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:
ausblenden C#-Quelltext
1:
2:
3:
DataSet1 ds = new DataSet1();
ProtokollTableAdapter ta = new ProtokollTableAdapter();
ta.Fill(ds.Protokoll);
Der TableAdapter hat also das SQL-Statement
ausblenden 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:
ausblenden 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

Für diesen Beitrag haben gedankt: fahrstuhl65
fahrstuhl65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 14.12.10 15: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