2012-12-23 7 views
2

Что я делаю, создавая PDF-файл и возвращая заказы на текущую неделю. Есть бронирование на понедельник, вторник, среду и так далее. Я пытаюсь назначить заказы на его дату. Я имею в виду. Если есть заказ на понедельник, тогда заказы должны быть назначены на эту дату. Если заказы на ночь, то назначьте заказы на четверг до этой даты.Как назначить значения списка

Для иллюстрации: WeeklyBPlan

Как вы можете видеть на бронированиях Изображения для Монтага (понедельник) получить назначения и заказы для Dienstag (Thuesday) получить назначение.

Моя проблема заключается в том, что с моим кодом возвращается только первый день (понедельник) недели и все заказы присваиваются этой дате.

Я думаю, что моя проблема 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 

MY 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>` 

WeekylyBPlan Класс:

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; } 



} 
+0

Уязвимость Holy Sql Injection, Бэтмен. Вам действительно нужно это исправить! –

ответ

0

Хорошо, если честно, я не имею тонну опыта в написав C#, поэтому сейчас я собираюсь написать класс WochenBPlan в VB, чтобы избавить вас от агонии чтения моего C#.

На стороне примечание, учитывая, что ваш класс действительно является просто структурой, так как у нее нет никакой функциональности, действительно связанной с ней, вы можете просто преобразовать ее в общедоступную структуру, но все ее предпочтения.

Дело в том, что это давало мне покоя, что вы объявляете новый WeeklyBPlan, но я думаю, что для ясности и простоты, вы, вероятно, должны написать несколько «New» подпроцедур как ...

 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 

это будет гарантировать, что вы получите все, установленное в каждом цикле, а затем ваш второй цикл будет упрощен до ...

  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 

Я не уверен, если это будет работать, но он очень хорошо мог, так что позвольте мне знаете, если это произойдет, или я продолжу работать, пока мы не выясним это. Вы можете добавить эти инструкции «Если» в перегруженное «Новое» заявление, а затем вы можете просто сделать allBookings.Add (New WeeklyBPlan (...))

+0

привет, я попробовал, но я думаю, что это проблема. ничего не изменится, если я сделаю это так – Paks

+0

Я еще раз посмотрю на него сегодня вечером после того, как я закончу ужин, извините за то, что первое предложение не работает. –

+0

Я благодарен, что моя мама свободно говорит по-немецки, теперь будет легче разобраться в проблеме, когда я знаю, что означают все эти слова в изображении, которое вы связали (я очень визуальный человек). –

Смежные вопросы