Avatar billede mortency Nybegynder
30. april 2002 - 01:45 Der er 8 kommentarer og
3 løsninger

SQL setning

Jeg skal kun hente ut Nyheter som har ikke har passert dagens dato.

Hvordan gjør jeg det i en SQL spørring?

                <%
                Set oConn = Server.CreateObject("ADODB.Connection")

                oConn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("database/document.mdb")
               
                txtDato = Date()
                txtDato = Day( txtDato ) & "." & Month( txtDato ) & "." & Year( txtDato )
               
                SQL = "SELECT NewsID,NewsTittel FROM News WHERE (Gyldighet > " & txtDato & ")"

                Set oRS = oConn.Execute(SQL)
               
                If oRS.EOF OR oRS.BOF Then
                    IngenSaker = "Ingen relaterte saker"
                End if
                %>
                    <select size="1" name="txtrelatertsak" style="FONT-FAMILY: Verdana; Background-color:#FFFFFF; border-width:1; border-style:solid;FONT-SIZE: 8pt;">
                        <option value=""><%=IngenSaker%>Velg relatertsak</option>
                        <%Do while not oRS.EOF%>
                        <option value="<% =oRS("NewsID")%>"><% =oRS("NewsTittel")%></option>
                        <%oRS.MoveNext
                        loop%>
                    </select>
                <%   
                oRS.Close
               
                Set oRS = Nothing
               
                oConn.Close

                Set oConn = Nothing
                %>
Avatar billede doc404 Novice
30. april 2002 - 01:53 #1
Nu skriver du ikke hvad der går galt?

Men det burde være nok at skrive

SQL = "SELECT NewsId,NewsTittel FROM News WHERE Gyldighet > #" & Date() & "#"

Hvis gyldighed er et dato felt
Avatar billede mortency Nybegynder
30. april 2002 - 01:59 #2
Gyldighet er tekst felt.
Avatar billede mortency Nybegynder
30. april 2002 - 02:16 #3
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in number in query expression 'Gyldighet > 30.04.2002'.
/YOL/admin/admin_NyhetNy.asp, line 89
Avatar billede _just4fun_ Nybegynder
30. april 2002 - 08:13 #4
Brug Date() fra access til at finde datoen (går ud fra at DB er MS access). Så får du altid, ligegyldigt hvilket format du bruger, det rigtige...
SQL = "SELECT NewsId,NewsTittel FROM News WHERE Gyldighet > Date()"
Avatar billede doc404 Novice
30. april 2002 - 08:29 #5
Hvis Gyldighed er et tekst felt, skal du have ' omkring..

SQL = "SELECT NewsId,NewsTittel FROM News WHERE Gyldighet > '" & txtDato & "'"
Avatar billede _just4fun_ Nybegynder
30. april 2002 - 08:33 #6
eeee, Hvis gyldighed er et tekstefelt giver det ingen mening at bruge > :-)
Avatar billede simonsen2 Nybegynder
30. april 2002 - 12:49 #7
Prøv med..
SQL = "SELECT NewsId,NewsTittel FROM News WHERE (Gyldighet >'" & txtDato & "')"

Eller drop din variabel...
SQL = "SELECT NewsId,NewsTittel FROM News WHERE (Gyldighet > getDate())"
Avatar billede mortency Nybegynder
30. april 2002 - 14:49 #8
Jeg har endret fra tekst, til dato. med da får jeg feil når jeg skal opprette en ny nyhet.

SQL ser slik ut:

INSERT INTO News (NewsID,NewsTittel,Ingress,BrodTekst,Stikkord,RelatertSak,Gyldighet,Prioritet) VALUES (14,'Tittel', 'Ingress', '
Brødtekst
', 'Stikkord1, Stikkord2, Stikkord3', '10','31.12.2010',10)

Feilen er:
Microsoft JET Database Engine (0x80040E07)
Data type mismatch in criteria expression.
/YOL/admin/admin_NyhetNy2.asp, line 96

Denne får jeg ikke hvis gyldighet feltet i db er tekst.
Avatar billede _just4fun_ Nybegynder
30. april 2002 - 14:57 #9
brug accessfunktionen Date() istedet for '31.12.2010'. På den måde lader du access selv indsætte den nuværende dato.->
INSERT INTO News (NewsID,NewsTittel,Ingress,BrodTekst,Stikkord,RelatertSak,Gyldighet,Prioritet) VALUES (14,'Tittel', 'Ingress', '
Brødtekst
', 'Stikkord1, Stikkord2, Stikkord3', '10',Date(),10)
Avatar billede mortency Nybegynder
30. april 2002 - 18:02 #10
Jeg selv skal jo skrive inn hvor lenge nyheten er gyldig. Ikke dagens dato men kanskje om to uker.
Avatar billede _just4fun_ Nybegynder
30. april 2002 - 18:12 #11
.....
INSERT INTO News (NewsID,NewsTittel,Ingress,BrodTekst,Stikkord,RelatertSak,Gyldighet,Prioritet) VALUES (14,'Tittel', 'Ingress', '
Brødtekst
', 'Stikkord1, Stikkord2, Stikkord3', '10',Dateadd('d', 20, Date()),10)

Hvor 20 er det antal dage fra nu hvor nyheden udløber. Pointe: brug ikke stuff som : '31.12.2010' hvis det kan undgåes.
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