webForumDet fria alternativet

Något fel i sql´en

9 svar · 353 visningar · startad av Asa

AsaMedlem sedan dec. 20011 860 inlägg
#1

Jag förstår inte varför inte detta fungerar. Som standard skall den hämta alla poster ifrån aktuella månaden ifrån databasen. Men den hämtar alla. Access databas och date är Datum/tid som fälttyp.

If Request.QueryString("year") = "" Then
  strYear  = Request.Form("year")
  strMonth = Request.Form("month")
Else
  strYear  = Request.QueryString("year")
  strMonth = Request.QueryString("month")
End If
strDate1 = Date()
strDate = Month(strDate1)
If Len(strDate) = 1 Then
  strDate = "0" & strDate
End If
If Len(strMonth) = 1 Then
  strMonth = "0" & strMonth
End If

	If strYear <> "" and strMonth <> "" Then
  		sql="SELECT orders.orderid, sum(priceperunit*qty) AS gtotal, orders.dfname, dlname,ipnummer,cctype, personnummer, date, codeNO FROM orders INNER JOIN orderitems ON orders.orderid=orderitems.orderid  where Left(orders.date,4)=" & strYear & " And Mid(orders.date,6,2)=" & strMonth & " and orderstatus=null or orderstatus='c' GROUP BY orders.orderid, dfname, dlname, ipnummer,cctype, personnummer, orders.date, codeNO Order By orders.orderid desc"
	ELseIf strYear <> "" and strMonth = "" Then
  		sql="SELECT orders.orderid, sum(priceperunit*qty) AS gtotal, orders.dfname, dlname,ipnummer,cctype, personnummer, date, codeNO FROM orders INNER JOIN orderitems ON orders.orderid=orderitems.orderid  where Left(orders.date,4)=" & strYear & " and orderstatus=null or orderstatus='c' GROUP BY orders.orderid, dfname, dlname, ipnummer,cctype, personnummer, orders.date, codeNO Order By orders.orderid desc"
	ELse
  		sql="SELECT orders.orderid, sum(priceperunit*qty) AS gtotal, orders.dfname, dlname,ipnummer,cctype, personnummer, date, codeNO FROM orders INNER JOIN orderitems ON orders.orderid=orderitems.orderid  where Left(orders.date,4)=" & Year(strDate1) & " And Mid(orders.date,6,2)=" & strDate & " and orderstatus=null or orderstatus='c' GROUP BY orders.orderid, dfname, dlname, ipnummer,cctype, personnummer, orders.date, codeNO Order By orders.orderid desc"
	End If
@ndersMedlem sedan juni 200032 969 inlägg
#2

Eftersom du använder or i WHERE så måste du gruppera med parenteser. Annars räcker det ju med att orderstatus är 'c' för att posten ska komma med.

Dessutom tycker jag att du borde använda datumfunktioner för att hämta ut månaden från fältet date. Att använda strängfunktioner på datum är att be om problem.

AsaMedlem sedan dec. 20011 860 inlägg
#3

ordetstatus=null behöver inte vara med. Funkade utan det iallafall.

Hur gör man detta då? Med att använda utan att lägga datum i stängar.. Kan du hjälpa mig med det?

@ndersMedlem sedan juni 200032 969 inlägg
#4

Dessutom kan du inte skriva = null, utan du måste använda is null. Det är bara att slänga in en parentes runt or-villkoren:

and (orderstatus is null or orderstatus='c')
AsaMedlem sedan dec. 20011 860 inlägg
#5

Tackar det funkade. Men hur ändrar jag till det du tyckte jag skulle använda? datumfunktioner i sql? Istället för strängar..

@ndersMedlem sedan juni 200032 969 inlägg
#6

I Access går det väl alldeles utmärkt att använda Month(datumfält) och Year(datumfält). Annars är du ju beroende av att du vet exakt hur datumen lagras i databasen, och det kan man ju aldrig veta...

AsaMedlem sedan dec. 20011 860 inlägg
#7

Okej, får testa det.. Datum och tid sparas iallafall så här: xxxx-xx-xx xx:xx:xx.
Tackar för din hjälp.

@ndersMedlem sedan juni 200032 969 inlägg
#8

Datum och tid sparas iallafall så här: xxxx-xx-xx xx:xx:xx

Hur kan du vara så säker på det? Att Access-applikationen och / eller asp-sidan presenterar datumet på det sättet behöver inte betyda att det är lagrat så.

mvh

AsaMedlem sedan dec. 20011 860 inlägg
#9

Just nu står det så i databasen men jag ändrar till det du sa. Funkade fintfint så det är nog bästa sättet. Tack!

@ndersMedlem sedan juni 200032 969 inlägg
#10

Funkade fintfint så det är nog bästa sättet.

Men så trevligt!

http://www.webforum.nu/showthread.php?t=134355

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)