hur var det med klamrar nu igen??
34 svar · 530 visningar · startad av eddy1 · sida 2 av 2
Frågan, av eddy1
Läs frågan i sin helhet →Man vet ju aldrig, konstigare saker har ju hänt, så prova att byta till OLEDB-connectionstring istället för den Accessdrivern du använder nu.
https://www.connectionstrings.com
Inte för att jag tror att det hjälper, men försöka kan man ju alltid. ;)
Mvh
nepp
det hjälpte inte. Men konstigt att han kläcker ur sig:
Microsoft JET Database Engine (0x80040E14)
Odefinierad funktion 'FormatDateTime' i uttryck.
/prido/secret/admin.asp, line 394
Dim datumet
db= ""
Set Con = Server.CreateObject("ADODB.Connection")
X = Server.MapPath("base.mdb")
Con.open "driver={Microsoft Access Driver (*.mdb)};dbq= " & x & " "
SQL = "SELECT DISTINCT FormatDateTime(c_date, 0) AS datumet FROM tbl_counts"
set db = Con.execute(SQL)
while not db.EOF
??
du blev inte av med håret när du lärde dig asp? Jag har slitit av det mesta vid det här laget... Blir ju tokig ju!
Du kommer inte på något annat sätt att lösa det här??
Vilken driver använder du nu? Access-drivern eller OLEDB?
Man kan ju göra så här:
SQL = "SELECT DISTINCT Year(c_date) AS c_year, Month(c_date) AS c_month, Day(c_date) AS c_day FROM tbl_counts order by 1, 2, 3"
set db = Con.execute(SQL)
while not db.EOF
response.write dateserial(cint(db("c_year")), cint(db("c_month")), cint(db("c_day"))) & "<br>"
db.movenext
wend
Det borde i alla fall funka. ;)
edit: Cint() runt värdena som skickas till funktionen behövs antagligen inte, då dateserial() tar emot strängar eller tal.
Mvh
Grymt
Tack, tack, tack. Du är magiskt bra..
Nu fungerar det iallafall. Har lite att läsa på nu.
Orkar du med en lätt fråga till så vore det kanon?
SQL = "SELECT * From tbl_counts Where c_date = "' & request.Form("view_month") &"%'"
View_month har detta format 2003-10-11 men fältet i databasen har ju även tid efter datumet.. ska man inet använda procent tecknet som joker ?? eller har jag placerat det på fel ställe ?
Nu får jag detta
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'c_date ='.
/prido/secret/admin.asp, line 477
Procenttecknet är rätt placerat, men du ska inte använda =, utan LIKE. Det känns visserligen inte heller helt bra att använda % på datumvärden, utan det finns datumfunktioner som det är bättre att använda. Datumfunktionen DateDiff funkar bra för detta.
SQL = "SELECT * From tbl_counts Where DateDiff('d', c_date, #" & request.Form("view_month") &"#) = 0"
(i din SQL-fråga hade du dessutom satt ' efter " efter c_date=, och det var sannolikt det som gjorde att du fick just det felmeddelandet.)
Mvh
hänger inte med
om request.form("view_month") har värdet 2003-10
Så vill jag ju få ut alla poster som har t.ex 2003-10-** *******
så varför räknar man fram antal dagar mellan datumen
hänger inte med på den
Ser request.form("view_month") alltid ut så?
strMonth = Request.form("view_month") & "-01"
SQL = "SELECT * From tbl_counts Where DateDiff('m', c_date, #" & strMonth &"#) = 0"
Mvh
Jaja bullar
den ser alltid ut så. Man ska kunna välja månad i en select box och sedan ska alla poster för vald månad visas!!
Nu funkar den men jag förstår inte hur???? datediff tittar väll hur mycket det skiljer mellan datum??
Ja, i den senaste frågan är villkoret där det skiljer 0 månader mellan datumet i fältet c_date och givet datum. Skiljer 0 månader är det samma månad.
Okey det hänger jag med på!!
SQL = "SELECT * From tbl_counts Where DateDiff('m', c_date, #" & strMonth &"#) = 0"
Men hajar inte hela satsen än då!
När datediff funktion körts så får man väll följande:
SQL = "SELECT * From tbl_counts where 0 = 0"
Jag förstår inte hur det kan fungera?
När 0 = 0 så är ju villkoret uppfyllt, och då returneras posten. När datumet tillhör någon annan månad så tolkas ju exempelvis 3 = 0, och det kan ju aldrig stämma, posten returneras inte.
a ja..
nu fattar jag. Men måste man man inte ange ett fält att söka i
typ select where c_date = 0 ??
Har inte haft en susning om att man kunde ha funktioner i sql frågan??
Har nog mycket att lära.......
Tack för hjälpen, kanon sjysst ....
Fält, värden, funktioner, whatever. :)
Det som anges i WHERE-satsen evalueras som ett uttryck som returnerar sant eller falskt. När uttrycket evalueras är det alltid två värden som jämförs med varandra.
mvh
