Avatar billede kag Nybegynder
10. september 2002 - 10:22 Der er 24 kommentarer og
1 løsning

At sortere via dato

Jeg har en database, som indeholder nogle nyhedsbreve, som gerne løbende skulle udvides med nye nyhedsbreve.

Jeg har sat mit recordset således, at jeg får vist de seneste 10 nyhedsbreve - jeg sorterer via dato.

Men det virker ikke. Jeg får vist poster i vilkårlig rækkefølge.

Nedenfor er der lidt kode...

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="../../../Connections/Connelaw.asp" -->
<%
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_Connelaw_STRING
Recordset1.Source = "SELECT * FROM elawalert ORDER BY elawalertdato ASC"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 3
Recordset1.Open()
Recordset1_numRows = 0
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "="
MM_keepURL="":MM_keepForm="":MM_keepBoth="":MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each Item In Request.QueryString
  NextItem = "&" & Item & "="
  If (InStr(1,MM_removeList,NextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & NextItem & Server.URLencode(Request.QueryString(Item))
  End If
Next

' add the Form variables to the MM_keepForm string
For Each Item In Request.Form
  NextItem = "&" & Item & "="
  If (InStr(1,MM_removeList,NextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & NextItem & Server.URLencode(Request.Form(Item))
  End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
if (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
if (MM_keepURL <> "")  Then MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
if (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  If (firstItem <> "") Then
    MM_joinChar = "&"
  Else
    MM_joinChar = ""
  End If
End Function

Dim Repeat1__numRows
Repeat1__numRows = 10
Dim Repeat1__index
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows

Dim elawalertoverskrift
Dim LCaseString
elawalertoverskrift = "VBSCript"
LCaseString = LCase(elawalertoverskrift)
%>
<html>
<head>
<title>Elawalert</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../stylesheet.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#1C3855" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
<table width="346" border="0" cellspacing="0" cellpadding="0" height="188">
  <tr>
    <td height="42"><img name="b" src="../../java/juridiske_nyheder_oppe.gif" border="0" hspace="0" width="220" height="47"></td>
  </tr>
  <tr>
    <td> </td>
  </tr>
  <tr>
    <td><img border="0" src="../../java/nyhedsbrevetoppe.gif" width="150" height="34"></td>
  </tr>
  <tr>
    <td>
      <%
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
%>
      <A HREF="indhold.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "elawalertID=" & Recordset1.Fields.Item("elawalertID").Value %>"><%=(Recordset1.Fields.Item("elawalertoverskrift").Value)%></A><br>
      <%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  Recordset1.MoveNext()
Wend
%>
    </td>
  </tr>
</table>
</body>
</html>
<%
Recordset1.Close()
%>
Avatar billede puppetmaster Nybegynder
10. september 2002 - 10:26 #1
Landekoden er sat til Danmark?
Session.LCID = 1030
Avatar billede kag Nybegynder
10. september 2002 - 10:28 #2
Ikke forstået
Avatar billede puppetmaster Nybegynder
10. september 2002 - 10:30 #3
ASC betyder da Ascending (stigende)
DESC betyder jo Descending (faldende)
Hvis du vil have de nyeste artikler først, skal det være
Recordset1.Source = "SELECT * FROM elawalert ORDER BY elawalertdato DESC"
Avatar billede mccannon Nybegynder
10. september 2002 - 10:31 #4
kan lave datoen om til et tal når det bliver indsat i db'en, og så noget i retning af "select top 10 .... order by dato desc"
og så selvfølgelig lave tallet om til dato når du skriver ud...
så er man udeover de problemer med dato formater :)
Avatar billede magnificat Nybegynder
10. september 2002 - 10:31 #5
mon dog posterne er i vilkårlig rækkefølge?
hvis du vil ha vist de 10 nyeste først, så skal du ORDER BY elawalertdato DESC
Avatar billede puppetmaster Nybegynder
10. september 2002 - 10:31 #6
Hvis det ikke hjælper at ændre ovenstående linie, så prøv også at tilføje linien
Session.LCID = 1030
i starten af .ASP filen
Avatar billede magnificat Nybegynder
10. september 2002 - 10:31 #7
for satan :)
Avatar billede mccannon Nybegynder
10. september 2002 - 10:34 #8
magni dog :) du må sgu få dig en hurtiger puter :)
Avatar billede kag Nybegynder
10. september 2002 - 10:37 #10
Men hvor kan man ikke blot sortere på datoen, de falder alle ud som nul når jeg sorterer på dato.
Avatar billede mccannon Nybegynder
10. september 2002 - 10:39 #11
forde hvis det feks er en UK server så er dato formatet anderledes end en DK server osv ..noget rigtig skod er det ;-/
Avatar billede kag Nybegynder
10. september 2002 - 10:44 #12
Men hvor i koden skal datoformatet stå?
Avatar billede puppetmaster Nybegynder
10. september 2002 - 10:54 #13
f.eks. (så "gælder" den for hele siden, med mindre du ændre den senere på samme side)

<%
Session.LCID = 1030
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_Connelaw_STRING
Recordset1.Source = "SELECT * FROM elawalert ORDER BY elawalertdato ASC"
Recordset1.CursorType = 0
.
.
.
.
.
%>
Avatar billede kag Nybegynder
10. september 2002 - 11:02 #14
Den skriver stadig bare nul ved dato
Avatar billede puppetmaster Nybegynder
10. september 2002 - 11:06 #15
Hmmm.....det lyder som om der er noget andet galt..........
Avatar billede puppetmaster Nybegynder
10. september 2002 - 11:12 #16
Kan altså ikke se hvor det er du udskriver datoen....
Avatar billede kag Nybegynder
10. september 2002 - 11:18 #17
Her er en revideret kode - med dato:


<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="../../../Connections/Connelaw.asp" -->
<%
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_Connelaw_STRING
Recordset1.Source = "SELECT * FROM elawalert ORDER BY elawalertdato DESC"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 3
Recordset1.Open()
Recordset1_numRows = 0
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "="
MM_keepURL="":MM_keepForm="":MM_keepBoth="":MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each Item In Request.QueryString
  NextItem = "&" & Item & "="
  If (InStr(1,MM_removeList,NextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & NextItem & Server.URLencode(Request.QueryString(Item))
  End If
Next

' add the Form variables to the MM_keepForm string
For Each Item In Request.Form
  NextItem = "&" & Item & "="
  If (InStr(1,MM_removeList,NextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & NextItem & Server.URLencode(Request.Form(Item))
  End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
if (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
if (MM_keepURL <> "")  Then MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
if (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  If (firstItem <> "") Then
    MM_joinChar = "&"
  Else
    MM_joinChar = ""
  End If
End Function

Dim Repeat1__numRows
Repeat1__numRows = 10
Dim Repeat1__index
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows

Dim elawalertoverskrift
Dim LCaseString
elawalertoverskrift = "VBSCript"
LCaseString = LCase(elawalertoverskrift)
%>
<html>
<head>
<title>Elawalert</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../stylesheet.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#1C3855" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
<table width="346" border="0" cellspacing="0" cellpadding="0" height="188">
  <tr>
    <td height="42"><img name="b" src="../../java/juridiske_nyheder_oppe.gif" border="0" hspace="0" width="220" height="47"></td>
  </tr>
  <tr>
    <td> </td>
  </tr>
  <tr>
    <td><img border="0" src="../../java/nyhedsbrevetoppe.gif" width="150" height="34"></td>
  </tr>
  <tr>
    <td>
      <%
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
%>
      <A HREF="indhold.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "elawalertID=" & Recordset1.Fields.Item("elawalertID").Value %>"><%=(Recordset1.Fields.Item("elawalertoverskrift").Value)%></A><%=(Recordset1.Fields.Item("elawalertdato").Value)%><br>
      <%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  Recordset1.MoveNext()
Wend
%>
    </td>
  </tr>
</table>
</body>
</html>
<%
Recordset1.Close()
%>
Avatar billede kag Nybegynder
10. september 2002 - 11:20 #18
Problemet er, at den henter et nul ud af databasen. Jeg har lavet et standarddatoformat via ultradev, og den henter 00:00:00 ud af databasen.
Avatar billede puppetmaster Nybegynder
10. september 2002 - 11:22 #19
Hmmm....jeg har aldrig prøvet at bruge Recordset1.Fields.Item("elawalertdato").Value, kun Recordset1("elawalertdato"), så lad spørgsmålet stå for andre at svare på.....
Avatar billede puppetmaster Nybegynder
10. september 2002 - 11:23 #20
Aaahhh, UltraDev........bruger kun "ren notepad" til ASP sider! Kan desværre ikke hjælpe dig.....
Avatar billede kag Nybegynder
10. september 2002 - 11:26 #21
Jeg prøver at oprette dette spørgsmål i kategorien Ultradev
Avatar billede mccannon Nybegynder
10. september 2002 - 11:35 #22
hvis jeg var dig vill jeg ændre feltet i db'en til tal og lave datoen om til et tal når du indsætter..:

Dag = day(now)
maaned = month(now)
aar = year(now)
IF Len(Dag) = 1 THEN
Dag = 0 & Dag
END IF
IF Len(maaned) = 1 THEN
maaned = 0 & maaned
END IF
dato = aar & maaned & dag
så får du noget ligende det her .:
20020910

det kommer så ind i db'en
hvis du så vil skrive det ud til brugeren som en dato gør du bare sådan her

response.write mid(rs("dato"),7,2) & "/" & mid(rs("dato"),5,2) & "/" & mid(rs("dato"),1,4)
hvilket giver et resultat som det her : 10/09/2002
Avatar billede kag Nybegynder
10. september 2002 - 11:55 #23
Jeg er ikke så farlig stærk i kode, men hvor skulle dette så indsættes?
Avatar billede mccannon Nybegynder
10. september 2002 - 11:59 #24
Det her laver du lige før du skal indsætte data i databasen

Dag = day(now)
maaned = month(now)
aar = year(now)
IF Len(Dag) = 1 THEN
Dag = 0 & Dag
END IF
IF Len(maaned) = 1 THEN
maaned = 0 & maaned
END IF
dato = aar & maaned & dag

det her laver du hvor du nu engang skriver ud .:
response.write mid(rs("dato"),7,2) & "/" & mid(rs("dato"),5,2) & "/" & mid(rs("dato"),1,4)
Avatar billede mccannon Nybegynder
10. september 2002 - 12:01 #25
du sætter selvfølgelig dato variablen det sted  i SQL'en der passer elelrs hjælper det jo ikek ret meget :)
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