2

私がやっていることは、PDFファイルを作成し、今週の予約を返すことです。月曜日、木曜日、水曜日などに予約があります。予約を彼の日付に割り当てようとします。つまり、月曜日に予約がある場合、予約はその日に割り当てられる必要があります。木曜日の予約の場合は、火曜日の予約をその日付に割り当てます。

それを説明するには: WeeklyBPlan

写真でわかるように、Montag (月曜日) の予約が割り当てられ、Dienstag (木曜日) の予約が割り当てられます。

私の問題は、私のコードでは週の最初の日 (月曜日) のみが返され、すべての予約がその日付に割り当てられることです。

私の問題はwbp.WeekDay = strCurrDay、私の .fo に何か問題があるのでしょうか?

誰でも私を助けることができますか?写真のように、どうすればやりたいことができますか?

Public Shared Function WeeklyBPlanPDFExport() As List(Of WeeklyBPlan)

        Dim allBookings As List(Of WeeklyBPlan) = New List(Of WeeklyBPlan)

        Dim s As StringBuilder = New StringBuilder
        Dim kw As Integer = DatePart(DateInterval.WeekOfYear, Now, , FirstWeekOfYear.FirstFourDays)
        If DatePart(DateInterval.Weekday, Now, Microsoft.VisualBasic.FirstDayOfWeek.Sunday) = 6 Then
            kw = kw + 1
        End If
        Dim CurrDateFirstDay As Date = DateAdd(DateInterval.Day, 1, ReturnDateForWeekNumber(kw))
        For i = 1 To 7
            Dim strCurrDay As String = ""

            strCurrDay = FormatDateTime(CurrDateFirstDay, DateFormat.LongDate)

            CurrDateFirstDay = DateAdd(DateInterval.Day, 1, CurrDateFirstDay)


            Dim strSQL As String = "SELECT  d.SEATING, d.ROOMID, d.ID, d.PERSONS, d.ADDRESS+ ', ' + d.ROOMDESCRIPTION AS ROOMDESCRIPTION , d.EVENT,  p.VN + ' ' + p.NN AS NAME, CONVERT (char(5), d.FROM, 108) + ' - ' + CONVERT (char(5), d.TO, 108) AS TIME, p.TEL FROM VIEW_RAUMBUCHUNG_DISPO AS d INNER JOIN PERSONAL AS p ON d.PERSONAL_ID = p.ID WHERE CONVERT(char, d.FROM, 104)='" & to_104(strCurrDay) & "'"
            Dim objRS As SqlDataReader
            Dim objRS2 As SqlDataReader
            objRS = SQLrunReaderWB(strSQL)

            If objRS.HasRows Then

                While objRS.Read()

                    Dim wbp = New WeeklyBPlan



                    wbp.WeekDay = strCurrDay

                    wbp.Raum = objRS("ROOMDESCRIPTION")
                    wbp.Zeit = objRS("TIME")



                    If Not IsDBNull(objRS("EVENT")) Then
                        wbp.Thema = objRS("EVENT")
                    End If

                    If Not IsDBNull(objRS("NAME")) Then
                        wbp.Mieter = objRS("NAME")
                    End If



                    wbp.Personen = objRS("PERSONS")
                    wbp.Bestuhlung = objRS("SEATING")



                    allBookings.Add(wbp)




                End While




            End If
        Next
        ConnWB.Close()

        Return allBookings


    End Function

私のXSL-FO:

`

                 <!--this defines a title level 1 -->



                    <fo:block

                            line-height="24pt"
                            space-after.optimum="15pt"
                            padding-top="3pt">
                      <xsl:value-of select=".//WeekDay" />
                    </fo:block>


                <!-- table start -->
                <fo:table table-layout="fixed" border="solid" border-collapse="collapse" border-width="0.5pt">
                    <fo:table-column column-width="25mm"/>
                    <fo:table-column column-width="12mm"/>
                    <fo:table-column column-width="20mm"/>
                                <fo:table-column column-width="50mm"/>
                    <fo:table-column column-width="20mm"/>
                    <fo:table-column column-width="25mm"/>
                                <fo:table-column column-width="10mm"/>
                    <fo:table-column column-width="30mm"/>
                    <fo:table-column column-width="35mm"/>
                    <fo:table-column column-width="35mm"/>
                    <fo:table-header>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block background-color="grey"
                      color="white" text-align="center">Room</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block background-color="grey"
                      color="white" text-align="center">Time</fo:block>
                            </fo:table-cell>

                                            <fo:table-cell>
                                <fo:block background-color="grey"
                      color="white" text-align="center">Event</fo:block>
                            </fo:table-cell>

                                            <fo:table-cell>
                                <fo:block background-color="grey"
                      color="white" text-align="center">Persons</fo:block>
                            </fo:table-cell>
                           <fo:table-cell>
                            <fo:block background-color="grey"
                      color="white" text-align="center">Seating</fo:block>
                           </fo:table-cell>

                           </fo:table-row>
                      <fo:table-row>
                      </fo:table-row>
                    </fo:table-header>
                    <fo:table-body>
                      <xsl:for-each select=".//WochenBPlan">
                            <fo:table-row>
                                <fo:table-cell  border-right-width="0.5pt" border-right-style="solid"  border-bottom-width="0.5pt" border-bottom-style="solid" padding-right="6pt" padding-left="6pt" >
                                    <fo:block font-family="Arial" font-size="9pt"  padding="2pt">
                                        <xsl:value-of select=".//Room" />
                                    </fo:block>
                                </fo:table-cell>
                                <fo:table-cell border-right-width="0.5pt" border-right-style="solid" border-bottom-width="0.5pt" border-bottom-style="solid">
                                    <fo:block font-family="Arial" font-size="9pt"  padding="2pt"  text-align="center">
                                        <xsl:value-of select=".//Time" />
                                    </fo:block>
                                </fo:table-cell>

                                <fo:table-cell border-right-width="0.5pt" border-right-style="solid"  border-bottom-width="0.5pt" border-bottom-style="solid" padding-left="6pt" padding-right="6pt">

                                       <fo:block font-family="Arial" font-size="9pt"  padding="2pt" wrap-option="no-wrap" >
                                        <xsl:value-of select=".//Event" />
                                       </fo:block>

                                </fo:table-cell>


                              <fo:table-cell border-right-width="0.5pt" border-right-style="solid" border-bottom-width="0.5pt" border-bottom-style="solid">
                                <fo:block font-family="Arial" font-size="9pt"  padding="2pt" text-align="center">
                                  <xsl:value-of select=".//Persons" />
                                </fo:block>
                              </fo:table-cell>
                              <fo:table-cell border-right-width="0.5pt" border-right-style="solid" border-bottom-width="0.5pt" border-bottom-style="solid"> 
                                <fo:block  font-family="Arial" font-size="9pt" padding="2pt" text-align="center">
                                  <xsl:value-of select=".//Seating" />
                                </fo:block>
                              </fo:table-cell>


                              </fo:table-row>

                      </xsl:for-each>
                    </fo:table-body>
                  </fo:table>
                  <!-- table end -->




                <fo:block id="lastBlock"/>
            </fo:flow>`

WeeklyBPlan クラス:

public class WochenBPlan
{
    public WochenBPlan()
    {

    }

    public string Raum { get; set; }
    public DateTime Erstellt { get { return DateTime.Now; } set { } }
    public string Zeit { get; set; }
    public string Bereich { get; set; }
    public string Thema { get; set; }
    public string Mieter { get; set; }
    public string Mieter_Tel { get; set; }
    public string Personen { get; set; }
    public string Bestuhlung { get; set; }
    public string Bemerkung { get; set; }
    public string Ausstattung { get; set; }
    public string WochenTag { get; set; }



}
4

1 に答える 1

0

わかりました、正直に言うと、私は C# を書いた経験があまりありません.

補足として、クラスに実際に関連付けられている機能がないため、クラスが実際には単なる構造であることを考えると、それをパブリック構造に変換するだけで済みますが、すべて優先されます。

私を悩ませているのは、新しい WeeklyBPlan を宣言していることですが、明確さと単純さのために、おそらく次のような「新しい」サブプロシージャをいくつか書く必要があると思います...

     Public Class WochenBPlan 
      'I've learn that it is best to declare class variables private and then expose them through public properties as follows
       Private _Raum As String, _Zeit As String, _Bereich As String, _Thema As String
       Private _Mieter As String, _Mieter_Tel As String, _Personen As String
       Private _Bestuhlung As String, _Bemerkung As String, _Ausstattung As String
       Private _WochenTag As String, _Erstellt As DateTime

       Public Property Raum As String
         Get
            Return _Raum
         End Get
         Set(value As String)
           _Raum = value
         End Set
        End Property
       ' So on and so forth for the remaining....

      ' Adding some functionality

      ' Default Constructor
      Public Sub New()
       ' Set all private variables to what you want (I tend to set them to Nothing, unless I need them to be some value)
      End Sub


      Public Sub New(ByVal theDay As String, ByVal theRoom As String, ByVal theTime As String(I'm not sure what type you have that has), ByVal thePersons As String, ByVal theSeating As String)
     _WeekDay(Or the German word for it) = theDay
     _Raum = theRoom
     _Zeit = theTime
     _Personen = thePersons
     _Bestuhlung = theSeating
     ' Declare rest to nothing/null
     End Sub
    ' Add Whatever Else You May Want
      End Class

これにより、各ループですべてが設定され、2 番目のループが単純化されます...

         While objRS.Read()

                Dim wbp = New WeeklyBPlan(strCurrDay, objRS("ROOMDESCRIPTION"), objRS("TIME"),objRS("PERSONS"))


                If Not IsDBNull(objRS("EVENT")) Then
                    wbp.Thema = objRS("EVENT")
                End If

                If Not IsDBNull(objRS("NAME")) Then
                    wbp.Mieter = objRS("NAME")
                End If




                allBookings.Add(wbp)




            End While

これが機能するかどうかはわかりませんが、うまくいく可能性は非常に高いので、それが機能するかどうかをお知らせください。これらの「If」ステートメントをオーバーロードされた「New」ステートメントに追加すると、allBookings.Add(New WeeklyBPlan(...)) を実行できます。

于 2012-12-24T06:39:48.540 に答える