Avatar billede frydenholm Nybegynder
22. august 2001 - 23:23 Der er 19 kommentarer og
1 løsning

Sortering efter dato....

Jeg har lavet en asp side, hvor der i forskellige tabeller (afhæning af en pulje) er en turneringsoversigt. Hver tabel skal gerne sorteres efter dato, men det vil ikke rigtig lykkedes.

Jeg har følgende kode:
<%
 
 
strconn =\"DBQ=\" + Server.Mappath (\"turnering.mdb\")+ \"; driver={Microsoft access driver (*.mdb)}\";
Conn = Server.CreateObject(\"ADODB.Connection\");
Conn.open (strconn);
   
               
sql = \"SELECT * FROM turneringstabel ORDER BY dato\";
rs = Server.CreateObject(\"ADODB.RecordSet\");
rs.Open(sql, Conn, adOpenKeyset);
       
%>       

Derefter følger denne kode ca 8 gange hvor det kun er puljen der er lavet om:
<%
          x = 0;
            pulje55=\"\";
            while (x < rs.recordCount){
                if (rs.fields.item(\"pulje\")==55) {
                  pulje55 += \"<td>\" + String(rs.fields.item(\"dag\")) + \"</td>\";
                    pulje55 += \"<td>\" + String(rs.fields.item(\"dato\")) + \"</td>\";               
                    pulje55 += \"<td>\" + String(rs.fields.item(\"klokken\")) + \"</td>\";
                  pulje55 += \"<td>\" + String(rs.fields.item(\"pulje\")) + \"</td>\";
                  pulje55 += \"<td>\" + String(rs.fields.item(\"Række\")) + \"</td>\";
                  pulje55 += \"<td>\" + String(rs.fields.item(\"Hold\")) + \"</td>\";
                  pulje55 += \"<td>\" + String(rs.fields.item(\"Sted\")) + \"</td>\";
                  pulje55 += \"<td>\" + String(rs.fields.item(\"Måned\")) + \"</td></tr>\";
                      }   
x++;
rs.move(1);
                         
            }
pulje55+=\"</table>\";                   
Response.write (pulje55);
 
%>

Jeg har prøvet med forskellige datoformater i access, men så får jeg en fejl i linien:
rs.Open(sql, Conn, adOpenKeyset);

Faktisk har jeg fået den til at sortere, men så ser formatet således ud i tabellen:
Sat Sep 25 00:00:00 UTC+0200 1999 - og det vil jeg gerne undgå.

Er der nogen der kan hjælpe - beklager der er klippet så meget kode ind, men jeg ved ikke hvad der skal bruges for at finde fejlen - er temmelig ny i asp.
Avatar billede zeth Nybegynder
22. august 2001 - 23:35 #1
Prøv med SELECT * FROM turneringstabel ORDER BY #dato
Avatar billede bronsholt Nybegynder
23. august 2001 - 08:20 #2
Hej Frydenholm

det ser ud som om, at du connecter til DB 2 gange, og at det er derfor, du få den fejlmedd. Prøv at lave din connection simpel:
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"/turnering.mdb\")
Conn.Open DSN

Set objRS = Conn.Execute(\"SELECT * FROM turneringstabel ORDER BY Dato\")
%>

Denne connection virker hos mig, så prøv den, men meld gerne tilbage, for ellers er det måske indlæsningen, der er noget galt med
Avatar billede frydenholm Nybegynder
23. august 2001 - 09:38 #3
Jeg får følgende fejl ved at indsætte #:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC-driver understøtter ikke de ønskede egenskaber.
/badmintondatabase/kampe.asp, line 36

Og den nye connection melder følgende fejl
Tegnet \';\' var ventet
/badmintondatabase/kampe1.asp, line 27, column 4
Set Conn = Server.CreateObject(\"ADODB.Connection\");
---^

Jeg kan ikke lige se hvor den vil have et ; henne.

Øverst på min side har jeg følgende linier indsat hvis det kan have nogen betydning:
<%@ Language=JavaScript%>
<!---#include file=\"adojavas.inc\"-->



Avatar billede webbe Nybegynder
23. august 2001 - 10:55 #4
Det kan det - prøv at ændre/helt fjerne linien hvor du angiver language!

Den opfatter jo hele koden som javascript når du skriver det - og det er jo en blanding af javascript og ASP som jeg ser det!
Avatar billede webbe Nybegynder
23. august 2001 - 10:55 #5
Hvis du vil ændre den så skriv

<%@language=\"VBSCRIPT\"%>

i stedet for
Avatar billede bronsholt Nybegynder
23. august 2001 - 11:19 #6
Ovenstående connection VIRKER, når du har angivet language til VBScript! Hvis det stadig ikke virker hos dig, så check lige \"Regional Settings\"/\"International\" på din pc. Det KAN have indflydelse, hvis nogle af standarderne er skiftet
Avatar billede frydenholm Nybegynder
23. august 2001 - 11:48 #7
når jeg ændrer det til vbscript så kommer der en masse andre fejl, hvor den bl.a. hele tiden siger \"slut på sætning var ventet\". Hvad skal man så gøre?
Avatar billede webbe Nybegynder
23. august 2001 - 12:01 #8
Prøv at fjerne alle dine ; !!!
Avatar billede frydenholm Nybegynder
23. august 2001 - 12:16 #9
Så har jeg prøvet at fjerne alle ; - men så dukker der bare en masse andre fejl op, så jeg kan åbenbart ikke sådan lige skifte over til vpscript.

Kan det ikke lade sig gøre at sortere på en anden måde med javascript?
Avatar billede webbe Nybegynder
23. august 2001 - 12:17 #10
Hvorfor ikke bare nøjes med at kode det i ASP???
Avatar billede frydenholm Nybegynder
23. august 2001 - 12:34 #11
Tja, det er fordi jeg lige havde brugt den samme kode til en anden side - men der skulle ikke sorteres noget, så det virkede fint. Og så er jeg temmelig (for ikke at sige helt) ny indenfor asp etc. så jeg ved ikke helt hvilke koder der rent faktisk hører til hvad af det jeg har.

Men hvis der er nogen der ud fra det kode jeg har lagt ud her kan fortælle hvad jeg så evt. skal fjerne for at det kun er ASP, så prøver jeg da gerne det.
Avatar billede webbe Nybegynder
23. august 2001 - 12:39 #12
Hvad er det præcist du vil lave i denne fil???

Som jeg forstår dig, så vil du have en fil der viser en oversigt (sorteret på dato) over nogle arrangementer/kampe!?

Det kan jeg godt hjælpe dig med! ;0)
Avatar billede frydenholm Nybegynder
23. august 2001 - 14:12 #13
Hvad kan man gøre for at ændre dato formatet så der i stedet for
Sat Feb 26 00:00:00 UTC+0100 2000

bare står 26/2-2000

Jeg har ændret det i access, men det duer ikke rigtigt. Jeg kan godt order by \"alle de andre\" - bare ikke dato som den gerne skal. Er det fordi det ikke er tekst i databasen som de andre felter?

Hvordan undgår man at der står \"null\" i en tabel, bare fordi der er et tomt hul i databsen? Kan det ikke bare efterlades blankt?
Avatar billede frydenholm Nybegynder
27. september 2001 - 14:05 #14
Har haft lidt småtravlt med diverse ting, så jeg er ikke rigtig noget videre.

>>Webbe - det er en fil der viser en sæsonoversigt i en badmintonturnering. Hvis du har tid og lyst vil jeg da gerne have lidt hjælp. :-)
Avatar billede frydenholm Nybegynder
29. september 2001 - 14:58 #15
Jeg har nu indsat følgende linier i min kode:
date = new Date (String(rs.fields.item(\"dato\")));
pulje55 += \"<td>\" + date.toLocaleString() + \"</td>\";

Så nu står datoen sådan her:
    26. september 1999 00:00:00
I stedet for sådan her:
    Sun Feb 6 00:00:00 UTC+0100 2000

Hvilket er en lille forbedring - men jeg vil gerne være fri for 00:00:00, og så samtidig være i stand til at sortere efter dato. Hvad kan jeg gøre for at få det til at virke?

Avatar billede roenving Novice
30. september 2001 - 02:42 #16
Ja, men Frydenholm egentlig er det et klassisk format-problem.

Hvis dine datoer er angivet i dato-format i databasen, bør den selv finde ud af at sortere (hvis den gør noget andet er det en skod-database).

men ellers kan du lave en sortering, f.eks. bubblesort (jeg regner med at der er forholdvis få kampe = under ca. 100):

          x = 0;
            var pulje55=new Array();
            var sorter=new Array();
            var xsort=new Array();
            while (x < rs.recordCount){
                if (rs.fields.item(\"pulje\")==55) {
                  sorter[x]=rs.field.item(\"aar\")+rs.field.item(\"Måned\")+rs.field.item(\"dato\");//måske skal du lave noget String-noget her

                  pulje55[x] += \"<td>\" + String(rs.fields.item(\"dag\")) + \"</td>\";
                  pulje55[x] += \"<td>\" + String(rs.fields.item(\"dato\")) + \"</td>\";               
                  pulje55[x] += \"<td>\" + String(rs.fields.item(\"klokken\")) + \"</td>\";
                  pulje55[x] += \"<td>\" + String(rs.fields.item(\"pulje\")) + \"</td>\";
                  pulje55[x] += \"<td>\" + String(rs.fields.item(\"Række\")) + \"</td>\";
                  pulje55[x] += \"<td>\" + String(rs.fields.item(\"Hold\")) + \"</td>\";
                  pulje55[x] += \"<td>\" + String(rs.fields.item(\"Sted\")) + \"</td>\";
                  pulje55[x] += \"<td>\" + String(rs.fields.item(\"Måned\")) + \"</td></tr>\";
                      }   
x++;
rs.move(1);
                         
            }
var i=0;
var j=0;
var k=sorter.length;
var temp;
var temppulje;
   
while (i<k){
  if (sorter[i]<sorter[i+1]){
    i++;
  }
  else {
    temp=sorter[i+1];
    temppulje=pulje55[i+1];
    sorter{i+1]=sorter[i];
    pulje55[i+1]=pulje55[i];
    sorter[i]=temp;
    pulje55[i]=temppulje;
    for (j=i;j>0;j--){
      if (sorter[j]<sorter[j-1]){
        temp=sorter[j-1];
        temppulje=pulje55[j-1];
        sorter{j-1]=sorter[j];
        pulje55[j-1]=pulje55[j];
        sorter[j]=temp;
        pulje55[j]=temppulje;
      }
    }     
  }
}


pulje = pulje55.join();
pulje+=\"</table>\";                   
Response.write (pulje);
 

Jeg havde ikke lige chancen for at køre et check (jeg har ingen database-muligheder her) men havde et par timers hjernegymnastik ud af det, så vend lige tilbage og fortæl, hvad du får ud af det.

hth
jes
Avatar billede frydenholm Nybegynder
30. september 2001 - 22:22 #17
Jeg har ikke lige fået det sidste forslag til at virke, men jeg har på forunderlig vis fået sorteret datoen - men den laver stadig 00:00:00 efter datoen. Kan jeg ikke tilføje et parameter et eller andet sted, hvor jeg fortæller den, at den kun skal skrive dag,måned,år?
Avatar billede madshenrik Nybegynder
22. oktober 2001 - 22:00 #18
Hej niels

Dette virker
Dag = date.getDate()+1;
Måned = date.getDate()+1;
år = date.getDate()+1;
dateString = dag + \"-\"  + måned +  \"-\" + år;

og så skal du bare lade databasen sortere.

Mads
Avatar billede madshenrik Nybegynder
22. oktober 2001 - 22:01 #19
hov selvfølgelig er det kun ikke ligge måned du skal ligge en til som følger Måned = date.getDate()+1;

også linien dateString = dag + \"-\"  + måned +  \"-\" + år;

mads

Avatar billede frydenholm Nybegynder
22. oktober 2001 - 22:10 #20
Okay, det kan jeg godt få til at virke næsten som svarer er skrevet. Men jeg har ændret lidt i det.
dag = date.getDate();
måned = date.getMonth()+1;
år = date.getYear();

Men nu virker det også, så madshenrik får mine point.
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