C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.86586 の関連記事表示

<< 0 >>
■86586  Re[20]: ChartのX軸のタイトル表示
□投稿者/ shu -(2018/02/18(Sun) 00:14:00)
    No86580 (mako さん) に返信
     
    >>さらにループも時間毎にグループ化する必要がないのでループのネストが不要になります。
    > No86531でのこの部分は結局どうすれば良いのか分かりませんでした。
    hでのGroup化をなくせば
    For Each rowItm In itm.rows
    のループをはずすことが出来ます
    
    
    >>dtRow(0) = Uridat(i).Jikoku    '時刻
    > もしかしてこの時点で先に文字列型から日付型 (Date)に変換しておいた方がプログラムの簡素化には繋がるのでしょうか?
    確かにその通りですが、DataTable dtの定義が
    .Add("時刻", GetType(String))
    となっている部分が実際の実装上不可欠ということであれば変換しても文字列になるので無意味です。
    .Add("時刻", GetType(Date))
    と出来るのであればいみがあります。
    
    
    > 
    > なお、↓のプログラムですと、60分を越える120分(1時間)、240分(2時間)などともなると表示は60分と同じともなってしまいます。
    > 
    >                     If d.Minute Mod IntrMin = 0 Then
    この条件が0分を起点として割ったあまりが0という条件なのでそうなります。
    そういうことであれば起点とする時間からの総分数に対し条件判定を行う必要があります。
    
    
    ループの部分の改良版は以下となります。
    *マークの付くデータが最初に現れないと正常に動作しません。
            Dim tmFirst As Date = Nothing
            For Each rowItm In (From r In Src.Tables(0).Select()
                                Let d = Function(s As String) As Date
                                            Dim d2 As Date = Nothing
                                            If Date.TryParseExact(s, {"HH:mm", "HH: mm", "H:m"}, Nothing, Nothing, d2) Then
                                                Return d2
                                            Else
                                                Return CDate(Nothing)
                                            End If
                                        End Function(r.Field(Of String)("時刻"))
                                Order By d)
    
                Dim row = rowItm.r
                Dim d = rowItm.d
                Dim isMark = CType(row("マーク"), String) = "*"
                Dim disp = isMark
                If isMark Then
                    tmFirst = d.AddMinutes(-tmFirst.Minute)
                Else
                    If CInt(d.Subtract(tmFirst).TotalMinutes) Mod IntrMin = 0 Then
                        disp = True
                    End If
                End If
                If disp Then
                    If CType(row("マーク"), String) = "*" Then
                        For i = 1 To 2
                            ret.Rows.Add(x, DBNull.Value, DBNull.Value, DBNull.Value) : x += 5
                        Next
                    End If
                    ret.Rows.Add(x, d, row("数量1"), row("数量2"))
                    x += 5
                End If
            Next
    
記事No.86333 のレス /過去ログ148より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -