Avatar billede ing Nybegynder
09. oktober 2004 - 21:15 Der er 11 kommentarer og
2 løsninger

Valideringsproblem for datoer

Hej

Jeg har lavet en webside i asp med VB-script, hvor jeg validerer nogle data som hentes fra en database. Websiden skal vise en oversigt over forskellige møder, som skal afholdes i den nærmeste fremtid.
De to værdier, som hentes fra databasen og skal valideres er to datoer:

Dato for mødets afholdelse  eks. 25-10-2004
Dato for sidste tilmelding  eks. 14-10-2004

Disse to datoer skal så holdes op mode dags dato, og er
datoen overskredet for sidste tilmelding, så forsvinder
tilmeldingsknappen på formen. Hvis datoen overskrider datoen for mødets afholdelse, så forsvinder mødet helt fra listen og kan ses på en liste over gamle møder. Jeg har brugt følgende kode:

if (Moeder.Fields.Item("MødeDato").Value)>= date() and (Moeder.Fields.Item("SidsteTilmelding").Value) >= date() then
response.write "Tilmeld dig dette møde"
end if
if (Moeder.Fields.Item("SidsteTilmelding").Value)< date() or (Moeder.Fields.Item("MødeDato").Value)< date() then
response.write "Mødetilmelding er afsluttet"
end if

Koden virker, men jeg forstår simpelthen ikke at følgende udtryk er FALSK:

if 09-10-2004 >= 09-10-2004  and 25-10-2004 >= 09-10-2004 then
response.write "Tilmeld dig dette møde"
end if

Dvs. selvom (09-10-2004 >= 09-10-2004) så bliver det i praksis fortolket som (08-10-2004 >= 09-10-2004), hvilket jo klart nok vil være falsk. Det er som om, at Moededato ikke bliver opfattet rigtigt, men som (Moededato - 1).

Forstår I overhovedet hvad jeg mener ? Jeg synes at det er mærkeligt at en sammenligning af to datoer ikke burde være ligetil.

Hjælp - jeg er ved at gå ud af mit gode skind!!

VH

ING
Avatar billede Slettet bruger
09. oktober 2004 - 21:44 #1
Prøv evt at sætte CDate omkring og se om det hjælper

if (CDate(Moeder.Fields.Item("MødeDato").Value))>= date() and (CDate(Moeder.Fields.Item("SidsteTilmelding").Value)) >= date() then
Avatar billede maximus25 Nybegynder
09. oktober 2004 - 22:05 #2
Hejsa ing

Jeg har brugt denne funktion magen gang med succes:


Public Function AgeInYears(date1 As Date, date2 As Date) As Long
    AgeInYears = DateDiff("yyyy", date1, date2)
    If Format(date1, "mmdd") > Format(date2, "mmdd") Then
          AgeInYears = AgeInYears - 1
    End If
End Function


Du skal bare modificerer den så den passer til dit behov:)

Du kan finde yderligere information om scriptet her: http://www.fabalou.com/Access/Modules/datediff.asp

Håber du kan bruge det:):)
Avatar billede ing Nybegynder
09. oktober 2004 - 22:33 #3
Tak for svarene! Det har imidlertidigt vist sig, at jeg har overset følgende:

Når jeg oprette et møde sendes de to omtalte datoer til en MS Acces-database fra et tekstfelt på asp-siden. Hvis jeg skriver 09-10-2004, så oprettes det i databasen som 10-09-2004. Det er lidt underligt, for hvis jeg skriver 31-12-2004, så oprettes det rigtigt nok, som 31-12-2004 og altså ikke som 12-31-2004. Ifølge Dreamweavers wizard postes værdien fra feltet som en dato, men laver jeg det om til postning som tekst eksisterer det samme problem.

Så mit problem eksisterer stadig - desværre - blot i en lidt anden version.

VH

ING
Avatar billede Slettet bruger
09. oktober 2004 - 22:53 #4
Når du gemmer så sørg for at gemme som yyyy-mm-dd så er du sikker på at det er gemt rigtigt, det er faktisk ikke underligt for 09-10 og 10-09 er begge gyldige men 31-12 kan ikke skrives som 12-31 så der kan den godt finde ud af at gemme rigtigt.
Avatar billede ing Nybegynder
09. oktober 2004 - 23:32 #5
bertie,

der er to problemer i forbindelse med dit svar:

1) Jeg kender ikke syntaksen for at kunne formatere en dato i ASP.
2) Jeg har vanskeligt ved at se, hvor i koden jeg skal bruge formaterings-funktionen, da dreamweavers kodning er noget mere kompliceret end hvad jeg vil kunne mønstre i ASP. De to tekstfelter til datoer har Name=Dato og Name=SidsteTilmelding. Kan du give et bud på hvor det skal smides ind. Jeg vedhæfter lige sourcekoden herunder:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/Medlemmer.asp" -->
<%
' *** Edit Operations: declare variables
Session.LCID = 1030

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Update Record: set variables

If (CStr(Request("MM_update")) = "form1" And CStr(Request("MM_recordId")) <> "") Then

  MM_editConnection = MM_Medlemmer_STRING
  MM_editTable = "Møder"
  MM_editColumn = "MoedeID"
  MM_recordId = "" + Request.Form("MM_recordId") + ""
  MM_editRedirectUrl = "moedeadmin.asp?moedetype=Nye"
 
  MM_fieldsStr  = "Titel|value|Beskrivelse|value|Dato|value|SidsteTilmelding|value|Lokation|value|Adresse|value|Postnummer|value|Sted|value|Webside|value|Tovholder1|value|Telefon1|value|Mail1|value|Tovholder2|value|Telefon2|value|Mail2|value|Tovholder3|value|Telefon3|value|Mail3|value|Mad|value|Madbetaling|value|Overnatning|value|Eventuelt|value|Aktiv|value"
  MM_columnsStr = "Titel|',none,''|Beskrivelse|',none,''|Dato|',none,NULL|SidsteTilmelding|',none,NULL|Lokation|',none,''|Adresse|',none,''|Postnummer|',none,''|Sted|',none,''|Webside|',none,''|Tovholder1|',none,''|Telefon1|',none,''|Mail1|',none,''|Tovholder2|',none,''|Telefon2|',none,''|Mail2|',none,''|Tovholder3|',none,''|Telefon3|',none,''|Mail3|',none,''|Mad|',none,''|Madbetaling|',none,''|Overnatning|',none,''|Eventuelt|',none,''|Aktiv|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Update Record: construct a sql update statement and execute it

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

  ' create the sql update statement
  MM_editQuery = "update " & MM_editTable & " set "
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
  Next
  MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

  If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim Moeder__MMColParam
Moeder__MMColParam = "1"
If (Request.QueryString("MoedeID") <> "") Then
  Moeder__MMColParam = Request.QueryString("MoedeID")
End If
%>
<%
Dim Moeder
Dim Moeder_numRows

Set Moeder = Server.CreateObject("ADODB.Recordset")
Moeder.ActiveConnection = MM_Medlemmer_STRING
Moeder.Source = "SELECT * FROM Møder WHERE MoedeID = " + Replace(Moeder__MMColParam, "'", "''") + ""
Moeder.CursorType = 0
Moeder.CursorLocation = 2
Moeder.LockType = 1
Moeder.Open()

Moeder_numRows = 0
%>
<html>
<head>
<title>Pr&oslash;vetagningsworkshop - Arbejdsportal</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--



function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//-->
</script>
<link href="styles.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
body {
    margin-left: 0px;
    margin-top: 0px;
}
.style1 {color: #000000}
.style2 {color: #009900}
.style5 {
    color: #FF0000;
    font-weight: bold;
    font-size: 12;
}
a:link {
    text-decoration: none;
}
a:visited {
    text-decoration: none;
}
a:hover {
    text-decoration: underline;
}
a:active {
    text-decoration: none;
}
-->
</style>
<script language="JavaScript" type="text/JavaScript">
<!--


function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>

<%
' Tjek af loginstatus - TIL ADMINSIDER
If session("userlogin")<>"True" or session("userid")<>"joma" then
response.redirect("loginfejl.asp")
end if



%>

<body bgcolor="#CCCCCC" link="#FF0000" vlink="#FF0000">
<table width="1024" border="0" align="left" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="tabelboks">
  <!--DWLayoutTable-->
  <tr>
    <td height="55" colspan="5" bgcolor="#000000" class="almtekst"><div align="center"></div></td>
  </tr>
  <tr>
    <td width="186" rowspan="4" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
        <!--DWLayoutTable-->
        <tr>
          <td width="186" height="547" valign="top" background="Grafik/blackdotbag.jpg" bgcolor="#FFFFFF" class="menutekst"><p><br>
            <br>
            <p>
<!--#include file="menu.asp"-->             
<br>
              </p>
        </table></td>
    <td width="12" rowspan="4" valign="top" background="Grafik/dot.gif" class="menutekst"><!--DWLayoutEmptyCell-->&nbsp;</td>
    <td height="36" colspan="3" valign="top" background="Grafik/blackdotbag- vert.jpg" >
      <p align="right" class="almtekst">Bruger-ID:<font color="#FF0000">
      <% response.write session("Userid") & " " %>
      </font>Brugernavn: <span class="almtekst"> <font color="#FF0000">
        <% response.write session("username") %>
        <br>
        </font></span> <br>
    </p></td>
  </tr>
  <tr>
    <td height="25" colspan="3" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
        <!--DWLayoutTable-->
        <tr>
          <td width="824" height="25" valign="top" class="sortoverskrift"><p>Administration af m&oslash;der </p></td>
        </tr>
              </table></td>
  </tr>
  <tr>
    <td height="20" colspan="3" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="Grafik/dothorison.gif">
        <!--DWLayoutTable-->
        <tr>
          <td width="824" height="20">&nbsp;</td>
        </tr>
    </table></td>
  </tr>
  <tr>
    <td width="639" height="466" align="left" valign="top"><div id="Semoeder" style="position:absolute; width:638px; height:459px; z-index:1; left: 200px; top: 138px; overflow-y: scroll; visibility: visible;">
      <p class="sortoverskrift">Redigering af m&oslash;de    </p>
      <form method="POST" action="<%=MM_editAction%>" name="form1">
        <table align="center" class="almtekst">
          <tr valign="baseline">
            <td nowrap align="right">Titel:</td>
            <td><input type="text" name="Titel" value="<%=(Moeder.Fields.Item("Titel").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Beskrivelse:</td>
            <td><input type="text" name="Beskrivelse" value="<%=(Moeder.Fields.Item("Beskrivelse").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Dato:</td>
            <td><input type="text" name="Dato" value="<%=(CDate(Moeder.Fields.Item("Dato").Value))%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">SidsteTilmelding:</td>
            <td><input type="text" name="SidsteTilmelding" value="<%=(CDate(Moeder.Fields.Item("SidsteTilmelding").Value))%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Lokation:</td>
            <td><input type="text" name="Lokation" value="<%=(Moeder.Fields.Item("Lokation").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Adresse:</td>
            <td><input type="text" name="Adresse" value="<%=(Moeder.Fields.Item("Adresse").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Postnummer:</td>
            <td><input type="text" name="Postnummer" value="<%=(Moeder.Fields.Item("Postnummer").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Sted:</td>
            <td><input type="text" name="Sted" value="<%=(Moeder.Fields.Item("Sted").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Webside:</td>
            <td><input type="text" name="Webside" value="<%=(Moeder.Fields.Item("Webside").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Tovholder1:</td>
            <td><input type="text" name="Tovholder1" value="<%=(Moeder.Fields.Item("Tovholder1").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Telefon1:</td>
            <td><input type="text" name="Telefon1" value="<%=(Moeder.Fields.Item("Telefon1").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Mail1:</td>
            <td><input type="text" name="Mail1" value="<%=(Moeder.Fields.Item("Mail1").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Tovholder2:</td>
            <td><input type="text" name="Tovholder2" value="<%=(Moeder.Fields.Item("Tovholder2").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Telefon2:</td>
            <td><input type="text" name="Telefon2" value="<%=(Moeder.Fields.Item("Telefon2").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Mail2:</td>
            <td><input type="text" name="Mail2" value="<%=(Moeder.Fields.Item("Mail2").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Tovholder3:</td>
            <td><input type="text" name="Tovholder3" value="<%=(Moeder.Fields.Item("Tovholder3").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Telefon3:</td>
            <td><input type="text" name="Telefon3" value="<%=(Moeder.Fields.Item("Telefon3").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Mail3:</td>
            <td><input type="text" name="Mail3" value="<%=(Moeder.Fields.Item("Mail3").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Mad:</td>
            <td><input type="text" name="Mad" value="<%=(Moeder.Fields.Item("Mad").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Madbetaling:</td>
            <td><input type="text" name="Madbetaling" value="<%=(Moeder.Fields.Item("Madbetaling").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Overnatning:</td>
            <td><input type="text" name="Overnatning" value="<%=(Moeder.Fields.Item("Overnatning").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Eventuelt:</td>
            <td><input type="text" name="Eventuelt" value="<%=(Moeder.Fields.Item("Eventuelt").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">Aktiv:</td>
            <td><input type="text" name="Aktiv" value="<%=(Moeder.Fields.Item("Aktiv").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">MoedeID:</td>
            <td><input type="text" name="MoedeID" disabled value="<%=(Moeder.Fields.Item("MoedeID").Value)%>" size="32">
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap align="right">&nbsp;</td>
            <td><input type="submit" value="Opdater m&oslash;de">
            </td>
          </tr>
        </table>
        <input type="hidden" name="MM_update" value="form1">
        <input type="hidden" name="MM_recordId" value="<%= Moeder.Fields.Item("MoedeID").Value %>">
      </form>
      <p>&nbsp;</p>
    </div></td>
    <td width="13" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="Grafik/dot.gif">
        <!--DWLayoutTable-->
        <tr>
          <td width="13" height="466">&nbsp;</td>
        </tr>
    </table></td>
    <td width="172" align="left" valign="top"><div align="center" >
      <p align="left" class="sortoverskrift">Navigation</p>
      <div align="left"><img src="Grafik/right.gif" width="7" height="7"><span class="almtekst"><a href="moedeadmin.asp?moedetype=Nye">Retur til m&oslash;deadministration</a></span> </div>
    </div></td>
  </tr>
</table>
<div align="center"> </div>
<div align="center"></div>
<table width="1" border="0" align="center" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="1" height="31"></td>
  </tr>
</table>
<table width="276" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutDefaultTable-->
  <tr>
    <td width="202" height="478"></td>
    <td width="74">&nbsp;</td>
  </tr>
  <tr>
    <td height="14"></td>
    <td valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
      <!--DWLayoutTable-->
      <tr>
        <td width="74" height="14">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
</table>
</body>
</html>
<%
Moeder.Close()
Set Moeder = Nothing
%>
Avatar billede Slettet bruger
09. oktober 2004 - 23:40 #6
Puha den kode er jeg stået af på, sorry :-)

Men hvis du har en dato kan du formatere den med CDate, så hvis der er indtastet
01-02-2004 i en variabel Dato kan du sige CDate(Dato) den vil så formatere den korrekt.
Avatar billede ing Nybegynder
09. oktober 2004 - 23:46 #7
Ok, ærligt nok. Prøver mig lidt frem ;-)
Avatar billede Slettet bruger
09. oktober 2004 - 23:49 #8
Ellers kan du prøve at oprette et spørgsmål i Access kategorien og høre om der er nogen der som kan hjælpe dig med at få gemt datoerne rigtigt ned i Access :-)
Avatar billede ing Nybegynder
09. oktober 2004 - 23:50 #9
Takker ;-)
Avatar billede Slettet bruger
09. oktober 2004 - 23:53 #10
Bare i orden. Hvis du lavet et nyt spørgsmål så husk at lukke her ved selv lige at smide et svar og acceptere det.
Avatar billede ing Nybegynder
09. oktober 2004 - 23:58 #11
Okay doki, lidt point til dig selføli' ;-)
Avatar billede ing Nybegynder
09. oktober 2004 - 23:58 #12
Hvis du smider et svar altså ;-)
Avatar billede Slettet bruger
10. oktober 2004 - 00:02 #13
Ikke ret mange så :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester