0

いくつかの情報を表示するグリッドビューがあります。これらの情報の 1 つは、19:40:00.0000000 のような時間データです。WriteXml を使用して gridview を xml ファイルにエクスポートしようとしたときに、時間に対して正しくないデータが見つかりました。次のようになります: PT7H50M 。

--> 私の時間データ: gridview の 19:40:00.0000000 は、xml ファイルにエクスポートした後、PT7H50M に変換されます。なぜ、どのようにこの問題を解決できますか?

これは私の gridview の時間データです: グリッドビューの私の時間データ

これは、xml ファイルでは次のようになります。

ここに画像の説明を入力

これはエクスポートのコードです:

DataTable Rdt = 新しい DataTable(); DataSet Rds = 新しい DataSet();

                    Rdt = (DataTable)GV_Report.DataSource;
                    Rds.Tables.Add(Rdt.Copy());

                    Rds.WriteXml(@"c:\Reporting\Work_Hours_Report.xml", System.Data.XmlWriteMode.IgnoreSchema);

                    XmlDocument doc = new XmlDocument();
                    XmlWriterSettings settings = new XmlWriterSettings();
                    settings.Indent = true;
                    XmlWriter writer = XmlWriter.Create(@"c:\Reporting\ReportType.xml", settings);
                    writer.WriteStartDocument();
                    writer.WriteComment("This file is generated by the program...Please do not change this file!!");
                    writer.WriteStartElement("ReportBut");
                    writer.WriteElementString("ButType", "Work_Hours_Report");
                    writer.WriteEndElement();
                    writer.WriteEndDocument();
                    writer.Flush();
                    writer.Close();

選択した各列にエイリアスを追加して SQL ステートメントを編集しようとしましたが、残念ながら改善されません。

select CAST(DATEADD(MILLISECOND,SUM(DATEDIFF(MILLISECOND,0,CAST(ISNULL([Total_H],'00:00:00') AS DATETIME))),0) AS TIME) as '1',sum([HTotal]) as '2',sum([MTotal]) as '3',CAST(DATEADD(MILLISECOND,SUM(DATEDIFF(MILLISECOND,0,CAST(ISNULL([PH_Total],'00:00:00') AS DATETIME))),0) AS TIME) as '4',sum([PH]) as '5',sum([PM]) as '6',CAST(DATEADD(MILLISECOND,SUM(DATEDIFF(MILLISECOND,0,CAST(ISNULL([AH_Total],'00:00:00') AS DATETIME))),0) AS TIME) as '7',sum([AH]) as '8',sum([AM]) as '9'  FROM [QAMNI].[dbo].[tbl_WorkHours_Details]  where [Date] between '" + DF + "' and '" + DT + "' and [C_ID] ='" + txt_C_ID.Text + "'
4

1 に答える 1

0

@ Flynn1179さんの進言によると

XmlWriteMode を IgnoreSchema から WriteSchema に変更したところ、xsd がなくても正しい結果が得られました。dayTimeDuration は、日数、時間数、分数、および秒数で表される期間を表します。xsd: dayTimeDuration の形式は、レポーティング ファイルと同様に PnDTnHnMnS です。これを変更すると、形式を変更せずに、データベースから選択したとおりの時刻が得られます。助けてくれてありがとう。これは、 XmlWriteMode を IgnoreSchema から WriteSchema に変更した後の XML ファイルです。

ここに画像の説明を入力

xsd 形式で表示されますが、Crystal Report を使用してエンド ユーザーに出力すると、(“hh:mm:ss”) として正しい時刻形式が得られます。

ここに画像の説明を入力

これは私のコードで変更したものです:(XmlWriteModeの変更のみ)

 Rds.WriteXml(@"c:\Reporting\WorkHours_Report.xml", System.Data.XmlWriteMode.WriteSchema);
于 2015-09-07T07:01:50.287 に答える