plelkesMedlem sedan mars 2002823 inlägg Hej, nu visas sidan nästan som jag vill, men jag är inte nöjd med datumformateringen..
Vill att det skall vara "svensk-formatering" typ:
skrivet: 03-04-03 kl 20:30
Sidans nuvarande
<html>
<head>
<title>g&auml;stbok</title>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<p align=center><font size=7><b><i><font color=#FFCC33>Välkommen till
skolans gästbok</font></i></b></font></p>
<% dim minCon 'Connection
dim rsGbok 'recordsetten för nya inlägg
dim strSQL
Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\plelkes\db\guests.mdb")
strSQL =" SELECT * FROM guestbook ORDER by ID DESC"
rsGbok.Open strSQL, minCon, 3, 3
Do While Not rsGbok.EOF
Response.Write "Skrivet den: " & rsGbok("Datum")
Response.Write " av: " & rsGbok("Namn") & "<BR>"
Response.Write "Min E-postadress är: " & rsGbok("Epost") & "<BR>"
Response.Write "Mitt inlägg: <BR>"
Response.Write rsGbok("Message")
Response.Write "<P><HR><P>"
rsGbok.MoveNext
Loop
rsGbok.Close
Set rsGbok = Nothing
minCon.Close
Set minCon = Nothing
%>
</body>
</html>
Tacksam för hjälp (med förklaring) hur jag kan få till detta..
Som ni ser så finns sidan på brinkster.
VideMedlem sedan dec. 19998 577 inlägg Lägg till:
Session.LCID = 1053
längst upp på sidan.
Möjligtvis behöver du även formatera datumet med cdate() också om det inte funkar.
plelkesMedlem sedan mars 2002823 inlägg Vide, dit förslag fungerade kanonbra!
Men jag skulle villja kunna formatera lite bättre..
Nu får jag
2003-03-21 19:33:42
Men jag skulle villja ha typ
onsdagen den 9 april, 2003
Med kodsnutten
dim indag
Session.LCID = 1053
dim indag
indag=WeekDayName(WeekDay(Now()))&"en den "&Day(Now())& " " & MonthName(Month(Now()))& ", " & Year(Now())
Response.Write indag
får jag fram dagens datum formaterad som jag vill, men nu vill jag har
rsGbok("Datum")
formaterad på det sättet då jag hämtar från databasen
OveRRidEMedlem sedan feb. 200112 078 inlägg plelkesMedlem sedan mars 2002823 inlägg Tack för ditt svar OveRRidE , men jag får fortfarande inte ihop det hela
FormatDateTime(Date[, NamedFormat])
Arguments
Date
Required. Date expression to be formatted.
Så jag försökte med följande:
rsGbok("Datum")=indag ' rsGbok("Datum") är ju "Date expr" som skall formateras
dat =WeekDayName(WeekDay(indag()))&"en "&
_FormatDateTime(indag, 1)
dat =WeekDayName(WeekDay(indag()))&"en "& FormatDateTime(indag, 1)
Do While Not rsGbok.EOF
Response.Write dat
Response.Write "Skrivet den: " & rsGbok("Datum")
Response.Write " av: " & rsGbok("Namn") & "<BR>"
Response.Write "Min E-postadress är: " & rsGbok("Epost") & "<BR>"
Response.Write "Mitt inlägg: <BR>"
Response.Write rsGbok("Message")
Response.Write "<P><HR><P>"
rsGbok.MoveNext
Loop
rsGbok.Close
Set rsGbok = Nothing
minCon.Close
Set minCon = Nothing
%>
Funkar ej - får felutskrift:
Microsoft VBScript runtime error '800a000d'
Type mismatch
/plelkes/gastboken.asp, line 26
@ndersMedlem sedan juni 200032 969 inlägg På vänster sida variabel, på höger sida värde. Dessutom måste du se till att konvertera värden från databas till rätt subtyp, i det här fallet subtypen datum (enligt Vides inlägg.).
indag = CDate(rsGbok("Datum"))
Mvh
plelkesMedlem sedan mars 2002823 inlägg Tack Anders,,,
men! ju mera jag håller på med asp dessto mindre fattar jag*snyft*
Du skrev
Dessutom måste du se till att konvertera värden från databas till rätt subtyp
Varför det? Kan du förklara det på ren svenska, tack
plelkesMedlem sedan mars 2002823 inlägg får fanskapet fortfarande inte att fungera!! [KOD]<% dim minCon 'Connection
dim rsGbok 'recordsetten för nya inlägg
dim strSQL
dim indag, dat
Session.LCID = 1053
Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\plelkes\db\guests.mdb")
strSQL =" SELECT * FROM guestbook ORDER by ID DESC"
rsGbok.Open strSQL, minCon, 3, 3
indag = Cdate(rsGbok("Datum"))
dat = WeekDayName(WeekDay(indag))&"en "& FormatDateTime(indag, 1)
Do While Not rsGbok.EOF
Response.Write "Inlägget nedan skrevs " & dat
Response.Write " av: " & rsGbok("Namn") & "<BR>"
Response.Write rsGbok("Namn") & " har E-postadressen : " & rsGbok("Epost") & "<BR>"
Response.Write "<B><U>Mitt inlägg: </U></B><BR>"
Response.Write rsGbok("Message")
Response.Write "<P><HR><P>"
rsGbok.MoveNext
Loop
rsGbok.Close
Set rsGbok = Nothing
minCon.Close
Set minCon = Nothing
%>
plelkesMedlem sedan mars 2002823 inlägg får fanskapet fortfarande inte att fungera!!
<% dim minCon 'Connection
dim rsGbok 'recordsetten för nya inlägg
dim strSQL
dim indag, dat
Session.LCID = 1053
Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\plelkes\db\guests.mdb")
strSQL =" SELECT * FROM guestbook ORDER by ID DESC"
rsGbok.Open strSQL, minCon, 3, 3
indag = Cdate(rsGbok("Datum"))
dat = WeekDayName(WeekDay(indag))&"en "& FormatDateTime(indag, 1)
Do While Not rsGbok.EOF
Response.Write "Inlägget nedan skrevs " & dat
Response.Write " av: " & rsGbok("Namn") & "<BR>"
Response.Write rsGbok("Namn") & " har E-postadressen : " & rsGbok("Epost") & "<BR>"
Response.Write "<B><U>Mitt inlägg: </U></B><BR>"
Response.Write rsGbok("Message")
Response.Write "<P><HR><P>"
rsGbok.MoveNext
Loop
rsGbok.Close
Set rsGbok = Nothing
minCon.Close
Set minCon = Nothing
%>
@ndersMedlem sedan juni 200032 969 inlägg I VBScript finns inga datatyper, utan alla värden är av typen variant. Däremot finns olika subtyper, exempelvis tal, sträng och datum. De flesta funktioner i VBScript kräver att det värdet de tar emot är av en viss subtyp. Därför måste man göra en subtypskonvertering innan man använder funktionen. Datumfunktioner (Year(), Month(), DateAdd(), DatePart(), FormatDateTime() etc) kräver sålunda att värdet de tar emot är av datumtyp. Det ser man till genom att använda CDate() (Convert to Date).
Andra typkonverteringsfunktioner är exempelvis:
CStr() - till sträng
CInt() - till integer (heltal upp till 32k)
CLng() - till long (lång heltal, kan vara hyggligt stort)
CDate() - till datum
CDbl() - till double (decimaltal)
etc.
Det är framför allt värden som kommer från databas eller textfil/dylikt som måste subtypskonverteras innan användning. Om man själv skapar variablerna och dess värden i koden , kan man se till att de är typade till rätt modell redan från början.
dteMittDbDatum = objRs("datum") ' här har vi hämtat ut datumet
dteMittDbDatum = CDate(dteMittDbDatum) ' nu är variabeln konverterat till rätt subtyp och kan användas i datumfunktioner
På motsvarande sätt måste du ofta konvertera värden till taltyp om du ska räkna med dem, annars riskerar du att 3+4 blir 34.
På vilket sätt fungerar det inte? "Det fungerar inte" är en dålig felbeskrivning och gör det svårt att berätta varför det inte fungerar. Dock:
* Du har tilldelningen av dat utanför loopen, den kommer inte ändras per inlägg
* Jag gissar på att utskriften av WeekDayName(WeekDay(indag))& "en "& FormatDateTime(indag, 1) blir galen. Använd i så fall inte både WeekdayName() och FormatDateTime().
Hoppas det blev lite klarare.
Jag känner att jag inte behöver bidra med så mycket mer till ämnet, men jag kände också att @nders gav ett enormt utförligt och bra svar. Tummen upp för @nders! (Jag var bara tvungen..)
plelkesMedlem sedan mars 2002823 inlägg Tack @nders, mycket klarare. Utmärkt förklarat! Till och med jag förstår...
På vilket sätt fungerar det inte? "Det fungerar inte" är en dålig felbeskrivning och gör det svårt att berätta varför det inte fungerar.
Det som inte fungerar är att det blir dagens datum som skrivs ut. Även efter de ändringar du föreslog!!!
@ndersMedlem sedan juni 200032 969 inlägg
plelkes skrev:
Tack @nders, mycket klarare. Utmärkt förklarat! Till och med jag förstår...
Toppen! :)
Bara för att vara säker på att du förstod hur jag menade kodmässigt, så flyttar jag på två rader, och ändrar en aning. Prova detta:
<% dim minCon 'Connection
dim rsGbok 'recordsetten för nya inlägg
dim strSQL
dim indag, dat
Session.LCID = 1053
Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\plelkes\db\guests.mdb")
strSQL =" SELECT * FROM guestbook ORDER by ID DESC"
rsGbok.Open strSQL, minCon, 3, 3
Do While Not rsGbok.EOF
[b]indag = Cdate(rsGbok("Datum"))
dat = FormatDateTime(indag, 1) [/b]
Response.Write "Inlägget nedan skrevs " & dat
Response.Write " av: " & rsGbok("Namn") & "<BR>"
Response.Write rsGbok("Namn") & " har E-postadressen : " & rsGbok("Epost") & "<BR>"
Response.Write "<B><U>Mitt inlägg: </U></B><BR>"
Response.Write rsGbok("Message")
Response.Write "<P><HR><P>"
rsGbok.MoveNext
Loop
rsGbok.Close
Set rsGbok = Nothing
minCon.Close
Set minCon = Nothing
%>
Man kan också förenkla de två fetmarkerade raderna till följande, om man så önskar:
dat = FormatDateTime(Cdate(rsGbok("Datum")), 1)
Jag hoppas att det blev någon skillnad, och då också till det bättre. ;)
Mvh
plelkesMedlem sedan mars 2002823 inlägg @anders du är en klippa, hellt enkelt bäst!!
Nu Funkar allt som jag vill det
Här kommer
<% dim minCon 'Connection
dim rsGbok 'recordsetten för nya inlägg
dim strSQL
dim indag, dat
Session.LCID = 1053
Set minCon = Server.CreateObject("ADODB.Connection")
set rsGbok = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\plelkes\db\guests.mdb")
strSQL =" SELECT * FROM guestbook ORDER by ID DESC"
rsGbok.Open strSQL, minCon, 3, 3
Do While Not rsGbok.EOF
indag = Cdate(rsGbok("Datum"))
dat = WeekDayName(WeekDay(indag))&"en "& FormatDateTime(indag, 1)
Response.Write "Inlägget nedan skrevs " & dat
Response.Write " av: " & rsGbok("Namn") & "<BR>"
Response.Write rsGbok("Namn") & " har E-postadressen : " & rsGbok("Epost") & "<BR>"
Response.Write "<B><U>Mitt inlägg: </U></B><BR>"
Response.Write rsGbok("Message")
Response.Write "<P><HR><P>"
rsGbok.MoveNext
Loop
rsGbok.Close
Set rsGbok = Nothing
minCon.Close
Set minCon = Nothing
%>
Men som vanligt så uppstår det nya följdfrågor:
- varför funkar allt nu när Du har tilldelningen av dat och "dat = WeekDayName(WeekDay(indag))&"en "& FormatDateTime(indag, 1)" finns i loopen
@ndersMedlem sedan juni 200032 969 inlägg Om du har de två raderna utanför loopen innebär det:
* Värdet (dvs datumet från fältet Datum i recordsetet) hämtas från den första raden i recordsetet. Alltså den senaste posten eftersom du valt den sorteringsordningen i din SQL-fråga. Den posten råkar alltså ha dagens datum.
* Värdet ändras inte heller just av anledningen att koden ligger utanför loopen. Så: en gång 9 april, alltid 9 april. ;)
En liten metafor: Du ställer du utanför Posten i Svedmyra och en gammal dam närmar sig entrédörren. Du sträcker dig givetvis för att öppna dörren för damen. När damen gått in, släpper du dörren, och inser att du även ska öppna den för den gamla farbrorn som kommer. Och för mamman med barnvagnen.
Det är helt enkelt vissa saker som måste upprepas för att allting ska vara optimalt. Visst hade farbrorn kunnat öppna dörren själv, men han hade antagligen inte gjort det på rätt sätt, eftersom han hade en väska och en käpp. ;)
Lägg dörröppningen i loopen, och var så vänlig att hålla upp dörren för alla i den långa kön. :D
Mvh,