jonas76Medlem sedan mars 200278 inlägg
Hej, detta funkar bra så länge inte både sokord och sokord1 innehåller värdet "All" för då får jag felmedelandet overflow , men annars så funkar allt bra hur jag än vänder och vrider på det ;) vore jättetacksam för hjälp :)
<%
dim sokord, sokord1, sokord2
sokord=request.form("sokord1")
sokord1=request.form("sokord2")
sokord2=request.form("sokord3")
if sokord="All" then
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm="select * from cm1 where manad like '"&sokord1&"' and ar like '"&sokord2&"'"
set rs = connection.execute(stm)
else
if sokord1="All" then
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm="select * from cm1 where konto like '"&sokord&"' and ar like '"&sokord2&"'"
set rs = connection.execute(stm)
else
if sokord="All" and sokord1="All" then
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm="select * from cm1 where ar like '"&sokord2&"'"
set rs = connection.execute(stm)
else
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm="select * from cm1 where konto like '"&sokord&"' and manad like '"&sokord1&"' and ar like '"&sokord2&"'"
set rs = connection.execute(stm)
end if
end if
end if
members=0
jproc=0
njproc=0
do until rs.eof
members=members+1
jproc=jproc+rs("jproc")
nproc=nproc+rs("nproc")
rs.movenext
loop
rs.close
JAmedel=round (jproc/members)
NEJmedel=round (nproc/members)
%>
Account: <%=sokord%><br>
Month: <%=sokord1%><br>
Year: <%=sokord2%><br><br>
JA: <%=jamedel%>%<br>
Nej:<%=NEJmedel%>%<br>
LarsGMedlem sedan dec. 200012 465 inlägg
Var får du overflow?
Jag tycker att du har onödigt mycket kod. Du kan läga in beräkningarna direkt i sql. Jag ändrade också att man kan söka på alla möjliga kombinationer
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm = "select sum(jproc)/count(*) as jproc,sum(nproc)/count(*) as nproc from cm1 where 1 = 1 "
if sokord <> "All" then
stm = stm & "and konto = '" & sokord & "' "
end if
if sokord1 <> "All" then
stm = stm & "and manad = '" & sokord1 & "' "
end if
if sokord2 <> "All" then
stm = stm & "and ar = '" & sokord2 & "' "
end if
set rs = connection.execute(stm)
if isnull(rs("jproc")) then
jamedel = 0
nejmedel = 0
else
jamedel = round(rs("jproc"))
nejmedel = round(rs("nproc"))
end if
rs.close
connection.close
jonas76Medlem sedan mars 200278 inlägg
Hej Lar stack för att du tar dig tid :)
jag får följande felmedelande nu:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Circular reference caused by alias 'jproc' in query definition's SELECT list.
/cmt/cm/cmkonto1.asp, line 34
line 34: set rs = connection.execute(stm)
LarsGMedlem sedan dec. 200012 465 inlägg
Du får byta efter as, då det tydligen blir fel om man har ett alias som är samma som ett kolumnnamn.
stm = "select sum(jproc)/count(*) as jc,sum(nproc)/count(*) as nc from cm1 where 1 = 1 "
if sokord <> "All" then
stm = stm & "and konto = '" & sokord & "' "
end if
if sokord1 <> "All" then
stm = stm & "and manad = '" & sokord1 & "' "
end if
if sokord2 <> "All" then
stm = stm & "and ar = '" & sokord2 & "' "
end if
set rs = connection.execute(stm)
if isnull(rs("jproc")) then
jamedel = 0
nejmedel = 0
else
jamedel = round(rs("jc"))
nejmedel = round(rs("nc"))
end if
rs.close
connection.close
Jag säger att det är fel i Access, även om Microsoft förmodligen skulle kalla det för en feature.
jonas76Medlem sedan mars 200278 inlägg
det blir fortfarande lite galet:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/cmt/cm/cmkonto1.asp, line 36
line 36:
set rs = connection.execute(stm)
LarsGMedlem sedan dec. 200012 465 inlägg
Jaha, vilken datatyp är kolumner ar och manad? Jag förutsatte att dom var text eftersom du använde like.
Hur ser sql-frågan ut om du skriver ut den precis innan execute
response.write stm
jonas76Medlem sedan mars 200278 inlägg
Hej :)
ar och manad är med siffror konto är med bokstäver när det ligger i databasen men jag har en sida när jag hämtar informationen som jag väljer hur det skall sorteras där har jag lagt med att man skall kunna välja "All" om den skall ta med alla månader eller tex alla konton.
som ser ut :
<select name="sokord2">
<option>1
<option>2
<option>3
<option>4
<option>5
<option>6
<option>7
<option>8
<option>9
<option>10
<option>11
<option>12
<option>All
</SELECT>
LarsGMedlem sedan dec. 200012 465 inlägg
Jag menade vilken typ som kolumnen i databasen är definierad som.
Om det är typen number eller decimal så skall det vara så här
if sokord1 <> "All" then
stm = stm & "and manad = " & sokord1 & " "
end if
if sokord2 <> "All" then
stm = stm & "and ar = " & sokord2 & " "
end if
I så fall så ser det ut som om like fungerar även mot numeriska kolumner i Access. Det skulle jag också säga att det är ett fel i Access.
jonas76Medlem sedan mars 200278 inlägg
Hej , jo like funkar jag använde det ju i den första koden och den funka ju ( förutom med två sökord med "all")
det blir lite mer fel :Error Type:
ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name or ordinal.
/cmt/cm/cmkonto1.asp, line 40
line 40: if isnull(rs("jproc")) then
den heter ju "jproc" fast det kanske inte är det som det indikerar??
tack igen för att du tar dig tid :)
i databasen är dom satta till "tal" för "all" finns bara med på den sidan som söker , det finns aldrig med i databasen.
LarsGMedlem sedan dec. 200012 465 inlägg
Jo, jag missade att byta det tidigare. Det skall vara
if isnull(rs("jc")) then
jonas76Medlem sedan mars 200278 inlägg
Ok :)
Jag skall test i morgon när jag kommer till jobbet igen.
Tusen tack för hjälp, jag är jätte tacksam :)
jonas76Medlem sedan mars 200278 inlägg
Hej.
det funka perfekt nu :)
Tusen tack.
jonas76Medlem sedan mars 200278 inlägg
Hej Igen ;)
Det verkar som jag får en total summa?? jag behöver ha ett medelvärdet. jag har gjort om koden lite för konceptet blev ändrat men den funkar förutom det med att jag verkar få en total summa istället för medelvärdet. koden ser ut som följer:
dim sokord1, sokord2, sokord3, sokord4
sokord1=request.form("sokord1")
sokord2=request.form("sokord2")
sokord3=request.form("sokord3")
sokord4=request.form("sokord4")
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm = "select sum(totalproc)/count(*) as resultat from cm1 where 1 = 1 "
if sokord1 <> "All" then
stm = stm & "and konto = '" & sokord1 & "' "
end if
if sokord2 <> "All" then
stm = stm & "and manad = '" & sokord2 & "' "
end if
if sokord3 <> "All" then
stm = stm & "and vecka = " & sokord3 & " "
end if
if sokord4 <> "All" then
stm = stm & "and ar = " & sokord4 & " "
end if
set rs = connection.execute(stm)
if isnull(rs("resultat")) then
resultat = 0
else
resultat = round(rs("resultat"))
end if
rs.close
connection.close
set connection = nothing
jonas76Medlem sedan mars 200278 inlägg
Ursäkta mig jag såg fel men en en annan sak är att jag får fel värde nu jag får tex 24% fast det ser snarare ut i databasen som det borde vart 76%, kan det vara möjligt att det är nått som vänder på steken?
jonas76Medlem sedan mars 200278 inlägg
*skrattar* ursäkta tusen ggr, jag har tappat förståndet , det låg kvar några gammla resultat i databasen som spöka ;)
ja det kan bli lite mycket ibland ...
tusen tack för hjälpen, allt funkar perfekt som det skall :)
jonas76Medlem sedan mars 200278 inlägg
Hej.
vad skall jag skriva för att få reda på hur många poster det är med "totalproc" som den räknar ihop för jag vill kunna se det antalet oxå?