webForumDet fria alternativet

hur var det med klamrar nu igen??

ASP

34 svar · 530 visningar · startad av eddy1 · sida 2 av 2

Frågan, av eddy1

Läs frågan i sin helhet →
Medlem sedan aug. 2001969 inlägg
#21

access 2002

det var ju riktigt skumt

Medlem sedan juni 200032 967 inlägg
#22

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

Medlem sedan aug. 2001969 inlägg
#23

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
Medlem sedan aug. 2001969 inlägg
#24

??

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??

Medlem sedan juni 200032 967 inlägg
#25

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

Medlem sedan aug. 2001969 inlägg
#26

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

Medlem sedan juni 200032 967 inlägg
#27

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

Medlem sedan aug. 2001969 inlägg
#28

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

Medlem sedan juni 200032 967 inlägg
#29

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

Medlem sedan aug. 2001969 inlägg
#30

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??

Medlem sedan juni 200032 967 inlägg
#31

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.

Medlem sedan aug. 2001969 inlägg
#32

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?

Medlem sedan juni 200032 967 inlägg
#33

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.

Medlem sedan aug. 2001969 inlägg
#34

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 ....

Medlem sedan juni 200032 967 inlägg
#35

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

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)