1. I access har du ikke en DATO som sådan men en DateTime, så du kunne egentligt nøjes med en variabel til at gemme både dato og tid 2. Her er en oversigt af de forskellige datoformater: http://msdn2.microsoft.com/en-us/library/8kb3ddd4(VS.80).aspx 3. Du kan bruge dem sådan her f.eks.: lblDato.Text = Reader("Dato").ToString.Trim("dddd dd. MMMM yyyy"), hvor dddd så leverer dagens navn 4. Den SELECT som anført 14:22:03 skal lige have en "DESC" i rumpen, ellers leverer den ikke den næste kamp, men den som har den "højeste" dato større end Now 5. I .NET bør den nok også se sådan her ud: SELECT TOP 1 * FROM KampKalender WHERE Dato >= NOW().Date ORDER BY Dato DESC
fordi den den 5/9 vil om morgenen allerede vil tage fat i 10/09
a) I dit punkt 4 skriver du, at jeg skal putte en DESC ind i min SELECT sætning.
Det er jeg altså ikke sikker på. Jeg kender ikke teorien i det, men min kampkalender består i øjeblikket af kampe fra juli 2007 til marts 2008.
Sætter jeg DESC i rumpen på SELECT sætningen, så vises den sidste kamp i kalenderen - der spilles engang i marts 2008.
Fjerner jeg DESC så vises det korrekt - nemlig den næste kamp som er på søndag.
b) Næste problem er, at den melder fejl hvis jeg bruger lblDato.Text = Reader("Dato").ToString("dddd dd. MMMM yyyy")
--- Input string was not in a correct format. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.FormatException: Input string was not in a correct format.
Source Error:
Line 94: lblDato.Text = Reader("Dato").ToString("dddd dd. MMMM yyyy")
Line 94: det kan være den ikke kunne tåle "." i formatet, kan ikke helt huske det så læs på det, på det link jeg gav dig.
Det med DESC er blot mig som forvirrede problemet, fordi jeg selv har noget kode som leder efter en sidste dato INDEN min udvalgte dato, så den kopierede jeg lige uden at tænke mig om:-) Sorry about that.
Jeg må indrømme, at jeg ikke helt kan finde ud af fejlen - ej heller selvom jeg kigger på dit link. På dit link mangler jeg et eksempel hvor jeg kan se, hvordna det sættes sammen.
Når jeg prøver at køre siden fra MS Visual Web Developer 2005 Express, så hedder fejlen:
--- InvalidCastException was unhandled by user code Conversion from string "dddd dd. MMMM yyyy" to type 'Integer' is not valid. ---
Det virker hos mig. Brug de eksmepler på linket - smid f.eks. alt ud og tilføj et element ad gangen: lblDato.Text = Reader("Dato").ToString() lblDato.Text = Reader("Dato").ToString("dddd") og derpå resten
lblDato.Text = Reader("Dato").ToString() virker fint nok, men så snart jeg retter til fx lblDato.Text = Reader("Dato").ToString("dddd") så kommer fejlen.
Hvis de heller ikke virker, så prøv lige de forskellige formater på en lokal Now i stedet for noget hentet fra db'en: lblDato.Text= Now.ToString("dddd dd. MMMM yyyy")
Hvis det virker, så er der noget galt med db'en - hvad type har Dato derinde ?
Prøver jeg at køre formateringen med Now.ToString... funger det fint, men så snart jeg henter fra min Access database ender det i problemer.
Og jeg aner ikke hvorfor, for i Access har jeg valgt feltet DATO som værende af typen "dato og klokkeslæt" med formatet "langt datoformat" (jeg har også prøvet "kort datoformat" for den sags skyld)
langt/kort datoformat har intet at sige : det er kun en måde at vise de selvsamme data på, som internt opbevares på samme måde uanset.
Eftersom det ser ud til at du kører med en dansk access, så ville jeg foreslå at undgå feltnavne som kan være reserverede ord - "dato" er garanteret blandt dem. Kald den f.eks. kampDato og se om det hjælper.
Hvis det ikke hjælper, copy/paste hertil den løkke som din reader kører i.
Partial Class Master_Standard Inherits System.Web.UI.MasterPage
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim connection As OleDbConnection = New OleDbConnection(ConfigurationSettings.AppSettings("strConnKampe"))
Dim Reader As OleDbDataReader Dim Command As OleDbCommand
Dim mySQL As String = "" mySQL = "SELECT TOP 1 ID, Turnering, Hjemmehold, Udehold, KampDato, Tid, Spillested FROM kampe WHERE KampDato >= NOW() ORDER BY KampDato" Command = New OleDbCommand(mySQL, connection)
connection.Open() Reader = Command.ExecuteReader() If Reader.Read = True Then Do lblHjemmehold.Text = Reader("Hjemmehold").ToString.Trim() lblUdehold.Text = Reader("Udehold").ToString.Trim() lblTurnering.Text = Reader("Turnering").ToString.Trim() 'nedenstående kode virker 'lblDato.Text = Reader("KampDato").ToString.Trim() 'nedenstående kode virker ikke lblDato.Text = Reader("KampDato").ToString("dddd") 'nedenstående kode virker 'lblDato.Text = Now.ToString("dddd dd. MMMM yyyy") lblTid.Text = Reader("Tid").ToString.Trim() lblSpillested.Text = Reader("Spillested").ToString.Trim() Loop While Reader.Read Else End If Reader.Close() connection.Close() End Sub
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.