Avatar billede bulle Nybegynder
27. maj 1999 - 09:06 Der er 21 kommentarer

Sql = "Select * from news order by dato DESC"

Jeg har et gæstebogs ligende asp, men her vil jeg KUN hente den sidste post i min database....

Jeg har fundet ud af at ved en gæstebog bruger man :
    Sql = "Select * from T_gaestebog order by dato DESC"

Men jeg skal jo ikke bruge * her... Men derimod noget andet!! Den skal KUN tage den ENE post i min database.. Nemlig den sidste!!!!

Herunder er hele min kode :

  Set Rs = Server.CreateObject("ADODB.Connection")
  DBPath = "DBQ=" & server.mappath("gbdb.mdb")
  Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

  If Request.Servervariables("Content_Length") > 0 then
    Sql = "Insert into t_gaestebog (Fra, Dato, email, http, Tekst) values(''" & Request("Fra") & "'',''" & Now() & "'',''" & Request("email") & "'',''" & Request("webside") & "'',''"  & Request("Besked") & "'')"
    Rs.Execute(Sql)
    Response.Write strongfont & "Tak for det...</font></Strong><br><br>"
  end if

  If "" = Request.QueryString("Mode") then
    Sql = "Select * from T_gaestebog order by dato DESC"
    Set Record =  Rs.Execute(Sql)
    response.write "<html><head><title>Gæstebog</title></head><body>"
    response.write strongfont & "Gæstebogen</font></strong>"

    response.write "<table border=''0'' width=''500''>"
    Do While Not Record.EOF
      response.write "<tr><td bgcolor=''" & linecolor & "'' colspan=''2''></td></tr>"
      response.write "<tr><td width=''0'' align=''right''>" & font & "Navn:</td>"
      response.write "<td width=''100%''>" & font & Record("Fra") & "</td></tr>"
      response.write "<tr><td width=''0'' align=''right''>" & font & "Twat:</td>"
      response.write "<td width=''100%''>" & font & Record("Twat") & "</td></tr>"
      response.write "<tr><td width=''0'' align=''right''>" & font & "E-Mail:</td>"
      response.write "<td width=''100%''>" & font & "<a href=''mailto:" & Record("Email") & "''>" & Record("Email") & "</a></td></tr>"
      response.write "<tr><td width=''0'' align=''right''>" & font & "Webside:</td>"
      response.write "<td width=''100%''>" & font & "<a href=''" & Record("http") & "''>" & Record("http") & "</a></td></tr>"
      response.write "<tr><td width=''0'' align=''right''>" & font & "Dato:</td>"
      response.write "<td width=''100%''>" & font & Record("dato") &"</td></tr>"
      response.write "<tr><td width=''0'' align=''right'' valign=''top''>" & font & "Besked:</td>"
      response.write "<td width=''100%''>" & font & Record("Tekst") & "</td></tr>"

    Record.MoveNext
    Loop
    response.write "</table>"
    Record.Close
    RS.Close
  end if

  If "add" = Request.QueryString("Mode") then
    response.write strongfont & "Skriv i gæstebogen</strong>"
    response.write "<form method=''POST'' action=''" & Request.ServerVariables("SCRIPT_NAME") & "''>"
    response.write "<div align=''left''><table border=''0'' width=''50%''>"
    response.write "<tr><td valign=''top'' align=''right'' colspan=''2'' bgcolor=''" & linecolor & "''></td></tr>"
    response.write "<tr><td valign=''top'' align=''right''>" & font & "Navn:</td>"
    response.write "<td valign=''top''>" & font & "<input type=''text'' name=''Fra'' size=''40''></td></tr>"
    response.write "<tr><td valign=''top'' align=''right''>" & font & "Twat:</td>"
    response.write "<td valign=''top''>" & font & "<input type=''text'' name=''Twat'' size=''40''></td></tr>"
    response.write "<tr><td valign=''top'' align=''right''>" & font & "E-Mail:</td>"
    response.write "<td valign=''top''>" & font & "<input type=''text'' name=''email'' size=''40''></td></tr>"
    response.write "<tr><td valign=''top'' align=''right''>" & font  & "Webside:</td>"
    response.write "<td valign=''top''>" & font & "<input type=''text'' name=''webside'' size=''40'' value=''http://''></td></tr>"
    response.write "<tr><td valign=''top'' align=''right''>" & font & "Besked:</td>"
    response.write "<td valign=''top''>" & font & "<textarea rows=''5'' name=''Besked'' cols=''40''></textarea></td></tr>"
    response.write "<tr><td colspan=''2'' valign=''top'' align=''right''><div align=''center''><center><p>" & font & "<input type=''submit'' value=''Send'' name=''B1''>&nbsp;&nbsp;&nbsp; <input type=''reset'' value=''Slet'' name=''B2''></td></tr>"
    response.write "<tr align=''center''><td colspan=''2'' valign=''top'' align=''right'' bgcolor=''" & linecolor & "''></td></tr></table>"
    response.write "</form></body></html>"
  end if

Avatar billede jhh Nybegynder
27. maj 1999 - 09:14 #1
"SELECT *" vælger alle _kolonner_ i din tabel - ikke alle poster (rækker). Alle posterne vises fordi der LOOP'es igennem dem.

Hvis du kun vil se den første post, skal du derfor fjerne linjerne:

"Do While Not Record.EOF"
"Record.MoveNext"
"Loop"
   
/jhh
Avatar billede bulle Nybegynder
27. maj 1999 - 09:16 #2
men jeg vil jo ikke kun se den første post!! Jeg skal se den SIDSTE post!!! Altså den som er skrevet sidst!!
Avatar billede mrmodal Nybegynder
27. maj 1999 - 09:18 #3
Afvis svaret fra jhh, så får du SQL'en
Avatar billede asp Nybegynder
27. maj 1999 - 09:19 #4
Prøc noget ligende

"SELECT TOP 1 FROM Nyheder ORDER BY DATO DESC"

mvh

Dennis Knappe
info@ActiveServerPages.dk
Avatar billede jhh Nybegynder
27. maj 1999 - 09:20 #5
Det sørger din select for. Vi tager lige hele select'en:

"Select * from T_gaestebog order by dato DESC" gør følgende:

Vælger alle kolonner i tabellen T_gaestebog sorteret efter dato kolonnen i FALDENDE orden.

Det er derfor den første post der hentes, som er den sidste der er indsat.

/jhh
Avatar billede bulle Nybegynder
27. maj 1999 - 09:25 #6
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access 97 Driver] Too few parameters. Expected 1.

/mads_test/newsting.asp, line 18
Avatar billede bulle Nybegynder
27. maj 1999 - 09:31 #7
Ikke lige det jeg havde brug for!
Avatar billede mrmodal Nybegynder
27. maj 1999 - 09:33 #8
Select * From T_gaestebog where dato = (select Max(Dato) from T_gaestebog)
Avatar billede asp Nybegynder
27. maj 1999 - 09:34 #9
Hvem svarer du?
Avatar billede mrmodal Nybegynder
27. maj 1999 - 09:35 #10
Øh - hva mener du?

Jeg svarer på hvordan man får kun den sidste række ud - er det ikke spørgsmålet?
Avatar billede bulle Nybegynder
27. maj 1999 - 09:37 #11
mrmodal : jeg har som du kan se slettet den post som hedder dato!!! Så det kan man ikke indele det efter
Avatar billede asp Nybegynder
27. maj 1999 - 09:38 #12
Undskyld mrmmodal, det var ikke til dig, men til bulle ;-)
Avatar billede mrmodal Nybegynder
27. maj 1999 - 09:44 #13
???

Har du slettet posterne i dato-kolonnen eller hele datokolonnen?
Avatar billede kan Nybegynder
27. maj 1999 - 09:53 #14
Desværre findes der ikke et SQL udtryk som kan vælge den sidste eller den første for dens skyld.
Men man kan godt tvinge den til det, hvis man bruger f.ek.s auto number eller en form for time stampe

Select * from T_gaestebog where ev=(select max (id) from T_gaestebog)

Dette eks. er givet ved et voksende id nummer, men kan også bruges på datoer og ligende.

/kan
Avatar billede Slettet bruger
27. maj 1999 - 09:54 #15
Sql = "Select * from T_gaestebog order by dato DESC"
    Set Record =  Rs.Execute(Sql)
    rs.Movefirst 'Du vil nu have den første post i recordsettet som er den sidste der er lavet (den nyeste)

Alternativt :

Sql = "Select * from T_gaestebog order by dato" 'Uden Desc
    Set Record =  Rs.Execute(Sql)
    rs.movelast
Avatar billede kan Nybegynder
28. maj 1999 - 13:20 #16
Jeg er desværre nød til at rette mit eget svar, det kan faktisk godt lade sig gøre at lave et SQL kald, der vil gå ind og selecte den sidste record, desværre virker (Det er hvad jeg har erfaret) kun i en Informix db. I Informix version af SQL, har man mulighed for at lave en:

Select last from T_gaestebog
eller
Select first from T_gaestebog
eller
Select 56 to 87 from T_gaestebog

Desværre kan databaser så som MS SQL og Oracle, ikke forstå denne version af SQL, det kommer vel nok en gang til Oracle, men vi skal nok vente en 5-7 år før Microsoft kommer med noget ligende.

/kan
Avatar billede webtime Nybegynder
01. juni 1999 - 10:36 #17
Hej Bulle,

(den hurtige og lidt dovne metode)
Hvis din tabel har en autonummerering i ID feltet (ikke svært at tilføje), kan du jo bare skrive:

Sql = "Select * from T_gaestebog order ID dato DESC"

Så går du ned på siden og viser kun en record, så vil det altid være den sidst indtastede idet ID er automatisk stigende. :-)

Håber det hjælper.

Chris Østergaard
WebTime Internet
chris@webtime.dk
Avatar billede kan Nybegynder
06. juli 1999 - 09:43 #18
Lever du "bulle"

eller hvad fan'har du gan'i....?

Du kan sku da ikke bare stille et spørgsmål, og derefter bare skide det et stykke, eller du har måske fået dit svar?, men vil bare ikke af med dine point...!
Avatar billede zubzer0 Nybegynder
29. juni 2001 - 09:21 #19
for at få den sidste post i tabellen, og dermend også den med højst ID skal du bare gøre følgende

Sql = \"select MAX(...id) from news\"


Avatar billede burningice Nybegynder
28. oktober 2002 - 13:25 #20
Luk
Avatar billede vallemanden Nybegynder
27. september 2004 - 16:08 #21
HMMMM måske er det på tide at lukke dette spg
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