Wie kann man eine Schleife durch DataRow Reihe von verwandten Spalten abzurufen d.h (Param Name, Param Typ und Param Wert)?

StackOverflow https://stackoverflow.com/questions/586244

  •  06-09-2019
  •  | 
  •  

Frage

Ich arbeite an einem generischen Reporting-Tool, wobei jeder Bericht durch eine Zeile in Tabelle Berichte in der Datenbank dargestellt wird.

Bericht Zeilenstruktur:

ReportID          ReportFileName  
RepParam1Name     RepParam1Type      RepParam1Value 
RepParam2Name     RepParam2Type      RepParam2Value   ... RepParam10

Also, ich brauche Berichtsparameter (Name, Typ und Wert) und eine Schleife durch sie zu holen, sie passieren zu melden?

Zur Info: Parameter Typ: Datum oder String.      Ich bin mit Crystal Designer mit VS.NET eingebettet 2005.

War es hilfreich?

Lösung

Okay, also, während ich nicht genau wissen, was Sie planen, werde ich Ihnen nur ein Beispiel dafür, was ich tat, und man kann es nehmen oder lassen Sie es.

Ein paar Details für Sie. Dies ist ein Beispiel an einen Access Databse verbinden, aber Verbindungen zu anderen Arten von Datenbanken sind ähnlich in ihren Verbindungszeichenfolgen. Sehen Sie Verbindungszeichenfolgen für die korrekte Syntax.

Ich habe auch ein stark typisierte Dataset genannt currentDataSet und eine Tabelle definiert, dass die gleichen Namen und strukturiert ist das gleiche wie der Datenbanktyp. Es gibt andere Wege, dies zu erreichen, aber das ist die Art, wie ich es tat:

string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sourceString;
string strSql1 = "SELECT * FROM ReportTable";
OleDbConnection con = new OleDbConnection(conString);
con.Open();
OleDbDataAdapter dAdapter = new OleDbDataAdapter();
dAdapter.SelectCommand = new OleDbCommand(strSql1, con);
dAdapter.Fill(currentDataSet, "ReportTable");
con.Close();

Von dort aus können Sie die Daten innerhalb des Datensatzes manipulieren. Auch hier ein Beispiel:

int reportTableCount = currentDataSet.ReportTable.Count();
int reportTableCounter = 0;

while (reportTableCounter < reportTableCount)
{
   if (currentDataSet.ReportTable[reportTableCounter].RepParam1Value == "Bad data")
   {
       currentDataSet.ReportTable[reportTableCounter].RepParam1Value = "Good data";
   }
    reportTableCounter = reportTableCounter + 1;
}

Von diesem Punkt können Sie nun die Daten in der Datenbank mit dem folgenden Code aktualisieren:

con.Open();
dAdapter.SelectCommand = new OleDbCommand(strSql1, con);
OleDbCommandBuilder objCommandBuilder = new OleDbCommandBuilder(dAdapter);
dAdapter.Update(currentDataSet, "ReportTable");
con.Close();

Wie ich schon sagte, wenn nichts davon hilft Ihnen, fühlen sich frei, es zu ignorieren, werden Sie nicht meine Gefühle verletzt:)

Andere Tipps

Wenn Sie sagen, eine Schleife durch einen DataRow meinst du so etwas wie:

DataRow drMyrow = MyTables.Rows[0];

foreach (DataColumn dc in drMyRow)
{
   //do something with the column
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top