どのようにDataRowを通じ一つのループは、すなわち(パラメータ名、Paramのタイプ、およびParamの値)に関連する一連の列を取得するのですか?

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

  •  06-09-2019
  •  | 
  •  

質問

私は、各レポートはデータベースにレポートテーブルの行で表される一般的なレポートツール、に取り組んでいます。

レポート行構造:

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

だから、私は報告してそれらを渡すためにそれらを介してレポートのパラメータ(名前、タイプ、および値)とループを取得する必要がありますか?

FYI:パラメータ型:日付または文字列。      I

VS.NET 2005で埋め込まれたCrystalReportデザイナーを使用しています
役に立ちましたか?

解決

さて、私はあなたが向かっている内容を正確に把握していないが、私はあなたに私が何をしたかの例をあげますと、あなたはそれを取るか、それを残すことができるようにます。

あなたのためのいくつかの詳細。これは、Access Databseへの接続の一例ですが、データベースの他の種類の接続は、接続文字列に似ています。正しい構文の接続文字列を検索します。

私もcurrentDataSet呼ばれる厳密に型指定されたDataSetを持っており、表がそれは同じ名前が付けられ定義されており、データベースの種類と同じ構造。そこにこれを達成する他の方法がありますが、これは私がそれをやった方法です。

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();

そこから、データセットの内部データを操作することができます。再びここに例があります:

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;
}
この時点から、あなたが今、次のコードでデータベースのデータを更新することができます。

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

私が言ったように、これのどれもあなたが、それを無視して自由に感じることができますしない場合、あなたは私の気持ちを傷つけることはありません。)

他のヒント

:あなたはDataRowをループを言うとき

あなたのような何かを意味しています

DataRow drMyrow = MyTables.Rows[0];

foreach (DataColumn dc in drMyRow)
{
   //do something with the column
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top