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
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.aspHåber du kan bruge det:):)
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
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ø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--> </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ø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"> </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ø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"> </td>
<td><input type="submit" value="Opdater mø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> </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"> </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ø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"> </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"> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
<%
Moeder.Close()
Set Moeder = Nothing
%>