Если a> 0 или a = 0 & b <0 или b = 0, оператор не работает, как это должно быть - PullRequest
1 голос
/ 21 июля 2010

Я новичок в ASP (новое задание использует сервер Windows, а раньше я использовал только Linux), и я строю «журнал», в котором эти данные хранятся в файлах XML. У меня это отлично читает XML, но сейчас я пытаюсь заставить его распечатывать данные за определенный диапазон дат.

Способ, которым я делаю это, заключается в использовании функции DateDiff для сравнения даты в записи XML с датой, определенной пользователем, после чего будет выведено число. Если это число больше 1 для даты начала и меньше единицы для даты окончания, оно будет отображаться. Часть начальной даты работает, но независимо от того, какую дату я поставил в конечной, она будет печатать все, начиная от начальной даты и выше.

Вот мой код

<%
Response.Buffer = True
session.lcid=2057
Set entries = Server.CreateObject("Microsoft.XMLDOM")
Set entry = Server.CreateObject("Microsoft.XMLDOM")
Set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = False
xml.load (Server.MapPath("log.xml"))

set entries = xml.getElementsbyTagName("entry")

noOfEntries = entries.length
If Request.Form("findLog") = "true" Then
    CheckLog
End If
%>
<html>
<head>
<title>GM Log</title>
</head>
<body>
<p>Please enter the dates that you want to view the log from</p>
<form name=form1 action=readlog.asp method=post>
<p>Start date: <input type=text name=startdate>End date: <input type=text name=enddate>
<input type=hidden name=findLog value=true>  <input type=submit value="Search"></p>

</form>

<%
Sub CheckLog 
     startDate = Request.Form("startdate")
     LastDate = Request.Form("enddate")
     Response.Write("<table border=5>")
     For i = 0 To (noOfEntries - 1)
         Set entry = entries.item(i)
         If isDate(entry.childNodes(0).text) Then
             meh = CDate(entry.childNodes(0).text)
             beginning = DateDiff("d", startDate, meh)
             Response.Write ("<p style=""color: red"">days from startdate: " & beginning & "</p>")
             ended = DateDiff("d", LastDate, meh)
             Response.Write ("<p>days from today: " & ended & "</p>")
             If beginning + 1 > 0 or beginning + 1 = 0 & ended < 0 or ended = 0 Then
          Response.Write("<tr>"&_
 "<td>" & entry.childNodes(0).text & "</td>"&_
 "<td>" & entry.childNodes(1).text & "</td>"&_
 "<td>" & entry.childNodes(2).text & "</td>"&_
 "<td>" & entry.childNodes(3).text & "</td>"&_
 "<td>" & entry.childNodes(4).text & "</td>"&_
 "</tr>")
             End If
       End If  

    Next
    Response.Write("<table>")
End Sub
%>

</body>
</html>

Вот мой макет файла XML.

<?xml version="1.0"?>
<GM>
    <entry>
         <date>15/07/2010</date>
         <time>1515</time>
          <conversation>Dave down the Pub</conversation>
          <information>This is another test.</information>
          <action>Colin Wren</action>
     </entry>
     <entry>
          <date>20/07/2010</date>
          <time>1700</time>
          <conversation>Sam</conversation>
          <information>this is a test</information>
          <action>Colin</action>
    </entry>
</GM>

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

1 Ответ

0 голосов
/ 21 июля 2010

Может быть, вы хотите следующее?

If beginning + 1 >= 0 And ended <= 0 Then

Обратите внимание, что для логической операции И в VB вам придется использовать оператор And.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...