Gästboksexemplet avspeglar kanske min motvilja mot MÅNGA sidor. 
Därför används samma sida för all hantering. Dessutom vet jag faktiskt inte hur 
gästböcker ser ut. Brukar ju inte surfa...
Gästboken är baserad på en tabell med namnet GUESTBOOK som skall finnas 
i samma databasfil som EXEMPELDATA. Den är konstruerad på följande sätt:
| Fält | Typ | Längd | Index? | 
| ID | AutoNumber | Long Integer | Ja | 
| FROM | Text | 100 | Nej | 
| EMAIL | Text | 100 | Nej | 
| URL | Text | 120 | Nej | 
| COMMENT | Memo |  | Nej | 
| DATE | Date/Time |  | Nej | 
| IP_ADRESS | Text | 18 | Nej | 
| BROWSER | Text | 60 | Nej | 
Samtliga Textfält skall dessutom ha Allow Zero Length: Yes för att vi skall kunna lämna tomt i fälten
Gästboken fungerar med hjälp av en enda sida. Denna sida används 
för tre olika saker
- Visa listan
- Visa en form för inmatning av nytt data till gästboken
- Lägger till denna nya post till tabellen
Det som avgör vilken del som skall visas är vad som står på adressraden
- Om det är tomt så visas gästboken
- Om man klickar på länken sätts ?NY=1 till efter filenamnet och sidan laddas om
- Om det står NY=1 på adressraden visas en tom form för inmatning
- Om vi i denna form klickar på OK så kommer det att ske en submit 
på formen. Allt data från formen sänd då till sidan via adressraden
- Om det sänts data från formen (kontrolleras genom att 
  se om FORM= fanns på adressraden så läggs data in i datatabellen. Sedan laddas 
  sidan om utan någonting på adressraden för att komma tillbaka till listan<           /li>  
            
       
Det är dock inte denna ordning som programmet är konstruerat. Om vi ser i programkoden kan vi se följande
- If Not IsEmpty(Request("FROM")) Then
 Kontrollerar om vi fått sidan efter en form submit (punkt 5 i föregående lista)
 En uppdatering sker då och sidan laddas om.
- Sedan kommer if Request("NEW") = 1 Then för att kontrollera om 
vi kommit hit efter att ha klickat på "Klicka här för att skriva i min gästbok" länken.
- Sedan kommer en Else dit vi kommer om adressraden var "tom"
 Där visas själva gästboken med en "normal" Do While Not RS.EOF
Hela punkt 1 ovan sköts om av följande kod. Detta är en generell 
"insättningskod" som går enkelt att anpassa för egna behov
<%
' Om vi submitar formen så kommer FROM helst att vara satt 
' Detta kan vi kontrollera här
' Vi tar värdena som kommer i URL och sätter in dem i en databas
' Orsaken till den "konstiga" placeringen i filen är att man 
' inte kan använda Response.Redirect om man redan skrivit 
' till sidan. 
' Man skulle kunna sätta Response.Buffer = 1 för att undvika detta
' men det går även att sätta koden tillräckligt tidigt
 If Not IsEmpty(Request("FROM")) Then
   ' SQL satsen för tabellen
   SQL = "SELECT * FROM GUESTBOOK"
   Set Conn =
   Server.CreateObject("ADODB.Connection")
   Conn.Open strConn
   Set RS =
   Server.CreateObject("ADODB.RecordSet")
   ' Måste öppna recordetten för uppdatering = 3 som sista
   ' parameter
   RS.Open SQL, Conn, 1, 3
   ' Kollar vad klockan är nu
   currentTime = now
   ' Sätter in en ny post
   RS.AddNew
   ' tar värdet som kom för FROM från URL med Request
   ' och sätter det i fältet med samma namn
   ' vi upprepar för övriga fält
   RS("FROM") =
  Request("FROM")
   RS("EMAIL") =
  Request("EMAIL")
   RS("URL") =
  Request("URL")
   RS("COMMENT") =
  Request("COMMENT")
   ' Vi kollar även (utan att de vet det) vilken
   ' IP adress de har samt vilken browser de använder
   RS("IP_ADRESS") =
  Request.ServerVariables("REMOTE_ADDR")
   RS("BROWSER") =
  Request.ServerVariables("HTTP_USER_AGENT")
   ' datum skall matas in i formen mm/dd/yyyy hh:mm:ss
   ' för att fungera med alla LCID och lansdinställningar på servern
   RS("DATE") = Month(currentTime) & "/" & _
             Day(currentTime) & "/" & _
             Year(currentTime)& " " & _
             Hour(currentTime) & ":" & _
             Minute(currentTime) & ":" & _
             Second(currentTime)
   ' Vi sparar de nya fältvärdena
   RS.Update
   ' Sedan är vi färdiga med denna session
   RS.Close
   Conn.Close
   Set RS = Nothing
   Set Conn = Nothing
   ' Vi visar inte sidan utan "redirectar" till samma sida men 
   ' utan några värden på URL raden (Ser snyggare ut!)
   Response.Redirect Request.ServerVariables("URL")
 End If
%
Hela punkt två sköts om av förljande kod
<!-- Form för att kunna mata in de nya värdena. -->
<form method="GET">
<table>
<tr>
   <td>
      Jag är: 
   </td>
   <td>
      <INPUT TYPE="TEXT" NAME="FROM" SIZE="40" MAXLENGTH="100">
   </td>
</tr>
<tr>
   <td>
      Email: 
   </td>
   <td>
      <INPUT TYPE="TEXT" NAME="EMAIL" SIZE="40" MAXLENGTH="100">
   </td>
</tr>
<tr>
   <td>
      Hemsidan: 
   </td>
   <td>
      <INPUT TYPE="TEXT" NAME="URL" SIZE="40" MAXLENGTH="120">
   </td>
</tr>
<tr>
   <td colspan="2">
   <TEXTAREA NAME="COMMENT" COLS="60" ROWS="8"></TEXTAREA>
   </td>
</tr>
<tr>
   <td colspan="2">
   <!-- 
      Ett trix för att undvika "fula knappar". 
      Kör submit genom href o javascript 
      GUEST hänvisar till formen
   -->
 <   /FONT>   
   <a 
href="javascript:document.GUEST.submit()">
   <font face="Comic Sans 
MS,Arial,Helvetica,Univers" size="7">Ok</font></a>
      
   <!-- går tillbaka till huvudlistan -->
   <a href="<% =Request.ServerVariables("URL") %>">
    <font face="Comic Sans 
MS,Arial,Helvetica,Univers" size="7">Tillbaka</font></a>
   </td>
</tr>
</table>
</form>
<!-- Formen tog slut -->
Hela punkt tre sköts om av följande kod
<%
' Öppna tabeller och sorter så de nyaste kommer först
' vi visar bara de 20 senaste (TOP 20)
 SQL = "SELECT TOP 20 * FROM GUESTBOOK ORDER BY DATE DESC"
 Set Conn =
    Server.CreateObject("ADODB.Connection")
 Conn.Open strConn
 ' En simpel forward only duger
 Set RS = Conn.Execute(SQL)
%>
<font face="Comic Sans MS,Arial,Helvetica,univers" size="5">
<a href="<% =Request.ServerVariables("URL")%>?NEW=1">
<img src="../images/bullet2.gif" border="0">
Klicka här för att skriva i min gästbok</a>
</font>
<%
 theRow = 1
 Do While Not RS.EOF 
%>
<div align="<% =getZigZag %>">
<table width="400" border="3" BORDERCOLORLIGHT="#F5F5DC" BORDERCOLORDARK="#BC8F8F">
<tr><td>Mitt namn:</td><td bgcolor="FFFFFF"><%=RS("FROM")%> </td></tr>
<tr><td>Email:</td><td bgcolor="FFFFFF"><%=RS("EMAIL")%>; </td></tr>
<tr><td>Hemsida:</td><td bgcolor="FFFFFF"> <ahref="http://<%=RS("URL")%>" target="_new"><%=RS("URL")%></a> </td></tr>
<tr><td colspan="2" bgcolor="FFFFFF"><%=RS("COMMENT")%> </td></tr>
<tr><td width="100">Tid:</td><td bgcolor="FFFFFF"><%=RS("DATE")%> </td></tr>
</table>
</div>
<%
 RS.MoveNext
 Loop
 RS.Close
 Conn.Close
 Set RS = Nothing
 Set Conn = Nothing
%
...
<%
' Jag tycker om "varannangångs kod" !
Dim	zigZag
Function getZigZag()
   if zigZag Then
      getZigZag = "LEFT"
   Else
      getZigZag = "RIGHT"
   End If
   zigZag = Not zigZag
End Function
%