GimboMedlem sedan dec. 20001 626 inlägg Hejsan det är så att jag håller på och gör en uträkning av alla poster som finns i databasen, men jag vill inte ha med artiklar som startar med 88 i mina uträkningar, ett artikelnummer är på 4 siffror och låt oss sääga att artikelnumret är 8814 då ska den inte vara med i uträkningen men om den är 8714 så skall den det, någon som vet hur man gör detta?
SQL =" SELECT * FROM order WHERE NOT sku = left(rs("psku"),2)" ???
så kan man väl inte skriva eller??
JosefMedlem sedan mars 20023 561 inlägg Jag tror det blir:
SELECT * FROM order WHERE sku <> left(rs("psku"), 2)"
@ndersMedlem sedan juni 200032 969 inlägg Det här borde väl fungera?
SQL =" SELECT * FROM order WHERE NOT sku LIKE '" & left(rs("psku"),2) & "%'"
Under förutsättning att jag förstått frågan rätt, och att fältet sku är av någon strängtyp.
Mvh
GimboMedlem sedan dec. 20001 626 inlägg ok, jag glömde nämna att det är två kolumner jag inte ska ha med, så här ser min sql sats ut:
mySQL="SELECT Month(orderDate) AS MonthValue, SUM(total) AS totalsum From orders WHERE NOT (psku = '" &left(rsTemp("psku"),2)& "' )AND NOT (orderstatus = 3) GROUP BY Month(orderdate) ORDER BY 1"
får felmeddelandet:
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
kan detta felmeddelande beror på att jag har flera rader som är tomma, för att jag la till pSku kolumnen precis i databasen, alltså det har redan gjorts flera tusen ordrar och f o m idag så tillkommer en ny kolumn pSku där den matas med information f o m idag alltså??
/red
@ndersMedlem sedan juni 200032 969 inlägg Felmeddelandet betyder att du försöker skriva ut ett fält mha asp-kod, vars namn är antingen felstavat eller att fältet helt enkelt inte finns med i recordsetet.
mvh
GimboMedlem sedan dec. 20001 626 inlägg men? den finns ju där, det är ju antingen på kolumnen pSku eller orderStatus den klagar och de finns i databas tabellen orders
@ndersMedlem sedan juni 200032 969 inlägg Ja, i tabellen kanske, men du hämtar ju inte de fälten till ditt recordset.
GimboMedlem sedan dec. 20001 626 inlägg ok? och hur tycker du att det ska se ut i stället??
så här ser hela min kod ut:
<%
mySQL="SELECT Month(orderDate) AS MonthValue, SUM(total) AS totalsum From orders WHERE NOT (pSku = '" &left(rsTemp("pSku"),2)& "') AND NOT (orderStatus = 3) GROUP BY Month(orderdate) ORDER BY 1"
set rsTemp = database.execute(mySQL)
%>
<b>Total omsättning bortsett från ... och ...:</b><br>
<%
do until rstemp.eof
pTotalSum = rstemp("totalSum")
pmonth = rstemp("MonthValue")
%>
<%Response.Write MonthName(pmonth)%>: <% response.write pTotalSum %> SEK<br>
<%
rstemp.MoveNext
loop
%>
@ndersMedlem sedan juni 200032 969 inlägg På vilken rad får du felmeddelandet då? Är det på raden där du skapar SQL-frågan? Hur ser SQL-frågan ut där du fyller rsTemp då?
GimboMedlem sedan dec. 20001 626 inlägg jag får fel på raden med mySQL, och vad menar du med att fylle rsTemp de fylls ju då jag sätter:
set rsTemp = database.execute(mySQL)
men jag använder ju rsTemp i sql frågan så hur ska jag göra för att fylla recordseten innan jag kör min sql-fråga?? man kan ju inte exekvera sql satsen innan den körs?
jag testade med detta men det fungerar inte:
Set rsTemp = Server.CreateObject("ADODB.Recordset")
mySQL="SELECT Month(orderDate) AS MonthValue, SUM(total) AS totalsum From orders WHERE NOT (pSku = '" &left(rsTemp("pSku"),2)& "') AND NOT (orderStatus = 3) GROUP BY Month(orderdate) ORDER BY 1"
'set rsTemp = database.execute(mySQL)
rsTemp.Open, mySQL, database
men får samma felmeddelande
@ndersMedlem sedan juni 200032 969 inlägg Nej, du kan ju inte använda recordsetet innan du har fyllt det med något, som du ju gör strax efter. Dessutom; du har ju inte med fältet pSku i din SELECT, så då kommer ju inte det med i recordsetet i alla fall. Vad är det du vill göra egentligen?
Vilken jämförelse är det tänkt att du ska göra i WHERE-satsen? Vilket pSku ska inte vara lika som de två första bokstäverna i vilket pSku? Sig själv? Alltså måste pSku vara längre än två tecken, eller vad menar du?
@ndersMedlem sedan juni 200032 969 inlägg Använder du Access? Då kan du använda funktionerna left() och mid() direkt på fältvärdena i SQL-frågan. Det är nog den jämförelsen du får göra. Pseudokod:
Hämta si och så från tabellen där tecken 1 av artikelnumret inte är samma som tecken 2 i artikelnumret.
Är det inte det du vill göra? Vad är förresten fältet pSku för datatyp?
GimboMedlem sedan dec. 20001 626 inlägg jag använder mig utav MSSQL7.0 och inte access, fältet har datatypen text. Produktnumret har 4 siffror xxxx och det jag vill göra är att INTE ta me d produkter som startar med 88xx i beräkningen.
GimboMedlem sedan dec. 20001 626 inlägg går detta att lösa eller?
@ndersMedlem sedan juni 200032 969 inlägg Ja, det går att lösa, men börja med att byta datatyp på fältet! Hur långa artikelnummer ska du ha egentligen?
Byt till varchar med lämplig längd istället.
Nu när jag läser problemet, är det just 88 det inte får vara? Du har ju inte kommenterat mitt försök till pseudokod heller.
Om det är just 88 så ska man akta sig för att göra det för svårt för sig:
mySQL="SELECT Month(orderDate) AS MonthValue, SUM(total) AS totalsum From orders WHERE NOT (pSku LIKE '88%') AND NOT (orderStatus = 3) GROUP BY Month(orderdate) ORDER BY 1"
Annars, om det är enligt min pseudokod ovan, kanske det här kan fungera:
mySQL="SELECT Month(orderDate) AS MonthValue, SUM(total) AS totalsum From orders WHERE NOT (substring(pSku,1,1) = substring(pSku,2,1)) AND NOT (orderStatus = 3) GROUP BY Month(orderdate) ORDER BY 1"
Vilket passar?
GimboMedlem sedan dec. 20001 626 inlägg man tackar och bockar @nders! det var den första varianten som jag var ute efter! en fråga, vad gör egentligen den här LIKE grejen?
@ndersMedlem sedan juni 200032 969 inlägg