JacekMedlem sedan apr. 2000169 inlägg Går dett att fixa i en SELECT att om värdet på request.form("KundId") är lika med "alla" skall snutten i select Kund = '" & KundId & "' förvinna..
Typ som att slänga in en if-sats..
Nån som hajja?
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
LarsGMedlem sedan dec. 200012 464 inlägg Jo, det går. är det inte enklare att lägga den if-satsen i ditt skript?
if request.form("kundid") = "alla" then
sql = "select ..."
else
sql = "select ..."
end if
------------------
essentitia preter non sans multiplicandum
JacekMedlem sedan apr. 2000169 inlägg Jo men jag har 3 val som kan vara antingen alla eller ett visst värde.
Användare
Kund
Projekt
Och då blir det ju ett antal, så det var därför jag undra om det kanske finns en anna utväg?
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
LarsGMedlem sedan dec. 200012 464 inlägg En anledning till att jag inte skrev någon SQL är att syntaxen beror på vilken databashanterare man använder, tyvärr. Det finns åtminstone 3 olika varianter som jag känner till.
Vilken dbms använder du?
------------------
essentitia preter non sans multiplicandum
JacekMedlem sedan apr. 2000169 inlägg Kör oldschool -> microsoft access 97 :)
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
JacekMedlem sedan apr. 2000169 inlägg Testade detta med det funka inte!
<% If Anvandare = "alla" AND Kunder = "alla" Then %>
1
<% ElseIf Anvandare = "alla" AND NOT Kunder = "alla" AND Projekt = "alla" Then %>
2
<% ElseIf Anvandare = "alla" AND NOT Kunder = "alla" AND NOT Projekt = "alla" Then %>
3
<% ElseIf NOT Anvandare = "alla" AND Kunder = "alla" Then %>
4
<% ElseIf NOT Anvandare = "alla" AND NOT Kunder = "alla" AND Projekt = "alla" Then %>
5
<% ElseIf NOT Anvandare = "alla" AND NOT Kunder = "alla" AND NOT Projekt = "alla" Then %>
6
<% End IF %>
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
[Redigerat av Jacek den 17 jan 2002]
JacekMedlem sedan apr. 2000169 inlägg ähh ett litet skit fel där men fixa det så nu funkar det! =) *klant*
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
JacekMedlem sedan apr. 2000169 inlägg Nu när jag gör som du menat lars så får jag ingen felmeddelande men sidan blir lixom som försvunnen..
Ända gången det fungerar är när inget av de 3 fälten visar alla (den sista if-satsen).
If Anvandare = "alla" AND Kunder = "alla" Then
SQL = "Select sum(TimmarAntal) as Summa FROM Timmar Where TimmarDatum BETWEEN '" & DatumFran & "' AND '" & DatumTill & "'"
Set RsSumma = Conn.Execute(SQL)
ElseIf Anvandare = "alla" AND NOT Kunder = "alla" AND Projekt = "alla" Then
SQL = "Select sum(TimmarAntal) as Summa FROM Timmar Where TimmarKundId = '" & Kunder & "' AND TimmarDatum BETWEEN '" & DatumFran & "' AND '" & DatumTill & "'"
Set RsSumma = Conn.Execute(SQL)
ElseIf Anvandare = "alla" AND NOT Kunder = "alla" AND NOT Projekt = "alla" Then
SQL = "Select sum(TimmarAntal) as Summa FROM Timmar Where TimmarKundId = '" & Kunder & "' AND TimmarProjektId = '" & Projekt & "' AND TimmarDatum BETWEEN '" & DatumFran & "' AND '" & DatumTill & "'"
Set RsSumma = Conn.Execute(SQL)
ElseIf NOT Anvandare = "alla" AND Kunder = "alla" Then
SQL = "Select sum(TimmarAntal) as Summa FROM Timmar Where TimmarUserId = '" & Anvandare & "' AND TimmarDatum BETWEEN '" & DatumFran & "' AND '" & DatumTill & "'"
Set RsSumma = Conn.Execute(SQL)
ElseIf NOT Anvandare = "alla" AND NOT Kunder = "alla" AND Projekt = "alla" Then
SQL = "Select sum(TimmarAntal) as Summa FROM Timmar Where TimmarUserId = '" & Anvandare & "' AND TimmarKundId = '" & Kunder & "' AND TimmarDatum BETWEEN '" & DatumFran & "' AND '" & DatumTill & "'"
Set RsSumma = Conn.Execute(SQL)
ElseIf NOT Anvandare = "alla" AND NOT Kunder = "alla" AND NOT Projekt = "alla" Then
SQL = "Select sum(TimmarAntal) as Summa FROM Timmar Where TimmarUserId = '" & Anvandare & "' AND TimmarKundId = '" & Kunder & "' AND TimmarProjektId = '" & Projekt & "' AND TimmarDatum BETWEEN '" & DatumFran & "' AND '" & DatumTill & "'"
Set RsSumma = Conn.Execute(SQL)
End IF
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
[Redigerat av Jacek den 17 jan 2002]
Äh...
Jag kanske missförstår dig, men är det inte så att det kan vara på endast TVÅ sätt?
Antingen så är request.form("KundId") = "alla"
eller så är det INTE lika med "alla" ?
Gör precis som LarsG säger:
If request.form("KundId") ="alla" then
'valet "alla" är marketat
stm = "SELECT..."
else
'ett kundid skickas med och skall användas för filtrering
stm = "SELECT..."
End if
Tänkte på en annan sak. Om du har flera saker som kan ha värdet "alla" eller en specifik siffra så kan du bygga upp din sqlsyntax dynamiskt. Ungefär såhär:
stm = "SELECT... "
IF request.form("KundId") <> "alla" then stm = stm & " AND kundid = "&request.form("KundId")
IF request.form("användare") <> "alla" then stm = stm & " AND användarid = "&request.form("användare")
'och så vidare. Tänk på att det kanske blir
'radbrytningar när du läser det här i forumet
Skriv alltid ut din sql-sträng och kolla hur den ser ut innan du kör den i databasen
...eller "hajja" jag inte? ;)
[Redigerat av Andreas L den 17 jan 2002]
LarsGMedlem sedan dec. 200012 464 inlägg Om du har flera olika villkor så
SQL = "Select sum(TimmarAntal) as Summa FROM Timmar Where TimmarDatum BETWEEN '" & DatumFran & "' AND '" & DatumTill & "' "
If Anvandare <> "alla" then
SQL = sql & "and TimmarUserid = '" & anvandare & "' "
end if
If Kunder <> "alla" Then
SQL = sql & " and TimmarKundId = '" & Kunder & "'"
end if
If Projekt <> "alla" then
SQL = sql & " and TimmarProjektId = '" & Projekt & "' "
end if
Set RsSumma = Conn.Execute(SQL)
------------------
essentitia preter non sans multiplicandum
SLÖLASSE!!! ;) *hehe*
------------------
"Life's a bitch who sucks... then you marry one who doesn't"
JacekMedlem sedan apr. 2000169 inlägg Hmm det funka ändå inte.. något skumt är det slänger upp hela koden så kan ni kolla.
<%
Anvandare = Request.Form("Anvandare")
Kunder = Request.Form("Kunder")
Projekt = Request.Form("Projekt")
DatumFran = Request.Form("DatumFran")
DatumTill = Request.Form("DatumTill")
' ############# DATABAS KOPPLING #####################
set conn=server.createobject("adodb.connection")
path="DBQ=" & server.mappath("../../db/p6intranet.mdb")
conn.open "driver={microsoft access driver (*.mdb)}; " & path,"name","name"
' ############# ANVÄNDARE #####################
SQL = "SELECT * FROM User Where UserId =" & Request("Anvandare")
SQL = SQL & " Order by UserId"
Set RsUser = Conn.Execute(SQL)
' ############# KUND #####################
SQL = "SELECT * FROM Kund Where KundId =" & Request("Kunder")
SQL = SQL & " Order by KundId"
Set RsKund = Conn.Execute(SQL)
' ############# Projekt #####################
SQL = "SELECT * FROM Projekt Where ProjektId =" & Request("Projekt")
SQL = SQL & " Order by ProjektId"
Set RsProjekt = Conn.Execute(SQL)
' ############# Timmar #####################
SQL = "Select sum(TimmarAntal) as Summa FROM Timmar Where TimmarDatum BETWEEN '" & DatumFran & "' AND '" & DatumTill & "' "
If Anvandare <> "alla" then
SQL = sql & "and TimmarUserid = '" & Anvandare & "' "
end if
If Projekt <> "alla" then
SQL = sql & " and TimmarProjektId = '" & Projekt & "' "
end if
If Kunder <> "alla" Then
SQL = sql & " and TimmarKundId = '" & Kunder & "'"
end if
Set RsSumma = Conn.Execute(SQL)
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../../style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%">
<tr>
<td align="center" valign="middle">
<table width="400" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="71">Namn</td>
<td><b><%= RsUser("UserNamn")%> <%= RsUser("UserEfternamn")%></b></td>
</tr>
<tr>
<td width="71">Kund</td>
<td><b><%= RsKund("KundNamn")%></b></td>
</tr>
<tr>
<td width="71">Projekt</td>
<td><b><%= RsProjekt("ProjektNamn")%></b></td>
</tr>
<tr>
<td width="71">Datum</td>
<td><b><%= DatumFran %> - <%= DatumTill %></b></td>
</tr>
<tr>
<td width="71"> </td>
<td> </td>
</tr>
<tr>
<td width="71">Timmar</td>
<td><b>
<% If isnull(RsSumma("Summa")) Then %>
0,0
<% else %>
<%= FormatNumber(RsSumma("Summa"),1)%>
<% End If %> Timmar</b></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
JacekMedlem sedan apr. 2000169 inlägg Löste problemet..
Det ni sa var rätt, men det var en massa massa små fel av mig..!
Tack
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
[Redigerat av Jacek den 17 jan 2002]