Laden...

Resultat einer Stored Procedure ins DataGrid

Erstellt von |SmEaGoL| vor 16 Jahren Letzter Beitrag vor 16 Jahren 990 Views
|
|SmEaGoL| Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren
Resultat einer Stored Procedure ins DataGrid

verwendetes Datenbanksystem: MSSQL 2005

Hi Leute,

Ich habe ein Win-Form welches ein DataGrid enthällt. Nun will ich ganz einfach eine stored procedure ausführen und dann das Resultat ins DataGrid schmeißen.

Die SP enthällt verschiedene if's. Je nachdem welche Parameter mitgeschickt wurden wird in der SP ein anderer Query ausgeführt. Dabei können sich dann auch die Header im Resultat ändern.

Hat da einer ne Idee wie ich das machen kann? Ich benutze VS 2005.

Danke

J
3.331 Beiträge seit 2006
vor 16 Jahren

Hallo,

Du solltest das Resultat nicht in das DataGrid "schmeißen", sondern in eine **DataTable **(auch deshalb, weil die Datenmenge im Arbeitsspeicher unmittelbar nichts mit der Anzeige zu tun hat). Wenn sich die Spalten ändern, bietet es sich an, jeweils eine neue DataTable zu verwenden, z.B.:

//  i als int-Variable für die lfd.Nr. der Abfrage
string newTableName = "Table_" + i.ToStringl();
DbDataAdapter da.Fill(myDataSet, newTableName);
//  ordne diese neue Tabelle dem DataGrid zu
myDataGrid.DataMember = myDataSet.Tables[newTableName];

Vielleicht muss das DataGrid noch per Refresh() oder PerformLayout() oder so angepasst werden; das dürfte in der :rtfm: zu finden sein.

Gruß Jürgen

|
|SmEaGoL| Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren

Damit komme ich noch nicht so recht weiter... 🙁

Ist das erste Mal dass ich sowas machen muss, und im Internet lässt sich auch nix brauchbares finden. Ich suche vielleicht auch falsch.

Wie bekomme ich mein Resultat der SP dann in eine DataTable. Oder soll man da besser mit DataSet arbeiten?

Bin hier ein wenig überfordert 🙁

J
3.331 Beiträge seit 2006
vor 16 Jahren

Original von |SmEaGoL|
Ist das erste Mal dass ich sowas machen muss,...

Wie bekomme ich mein Resultat der SP dann in eine DataTable. Oder soll man da besser mit DataSet arbeiten?

Bin hier ein wenig überfordert 😦

Dann solltest Du Dir vielleicht erst einmal die Grundlagen durcharbeiten, z.B. mit OpenBook Visual C# Kap.26.

DataSet enthält eine oder mehrere DataTables. Das Ergebnis einer Abfrage landet bei Verwendung von DbDataAdapter.Fill() immer in einer DataTable. Weil Du (siehe meine erste Antwort) wegen unterschiedlicher Parameter verschiedene Tabellen nutzen könntest, wären diese DataTables in einem gemeinsamen DataSet gut untergebracht.

Beispiel (sehr verkürzt):

void GetData(string commandString, string currentTablename) {
  using(DbConnection conn = new DbConnection(connString)) {
    DbDataAdapter da = new DbDataAdapter();
    DbCommand cmd = new DbCommand(commandString);
    cmd.Parameters.Add(...);
    da.Connection = conn;
    da.Command = cmd;
    da.Fill(myDataSet, currentTablename);
  }
}

Den CommandString legst Du je nach der aktuellen Situation fest mit "Select * from myProcedure". Irgendwie sind die Parameter auch noch in die Übergabeparameter der Methode einzubauen (gewöhne Dir von vornherein NICHT an, die im CommandString unterzubringen).

Viel Erfolg! Jürgen