Är det möjligt att skicka en sql via en varabel? Lite ex hur jag menar men får felet:
Feltyp:
Microsoft JET Database Engine (0x80040E14)
Ogiltigt SQL-uttryck. 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' eller 'UPDATE' förväntades.
<%
kommande = Connect.Execute("SELECT * From kalender WHERE bokad < 4 AND datum > #"& date() &"# ORDER BY datum ASC")
bokningar = Connect.Execute("SELECT * From kalender WHERE bokad = 1 ORDER BY datum ASC")
alla = Connect.Execute("SELECT * From kalender WHERE bokad < 4 ORDER BY datum ASC")
plusEtt = "SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)+1 &"' ORDER BY datum ASC"
dagensAr = Connect.Execute("SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date) &"' ORDER BY datum ASC")
minusEtt = Connect.Execute("SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)-1 &"' ORDER BY datum ASC")
minusTva = Connect.Execute("SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)-2 &"' ORDER BY datum ASC")
minusTre = Connect.Execute("SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)-3 &"' ORDER BY datum ASC")
%>
<tr>
<td align="center">
<form action="admin_kommande.asp?action=check" method="post">
<Select name="valtAr" style="font-family: verdana; font-size: 10px">
<option value="#"> Välj </option>
<Option value="<%=kommande%>">Kommande</Option>
<Option value="<%=bokningar%>">Preliminära</Option>
<Option value="<%=alla%>">Alla</Option>
<Option value="<%=plusEtt%></Option>
<Option value="<%=dagensAr%>"><%=Year(date)%></Option>
<Option value="<%=minusEtt%>"><%=Year(date)-1%></Option>
<Option value="<%=minusTva%>"><%=Year(date)-2%></Option>
<Option value="<%=minusTre%>"><%=Year(date)-3%></Option>
</Select>
<input type="submit" style="font-family: verdana; font-size: 10px" name="Submit2" value=" Hämta År ">
</td>
</tr>
Sen var tanken att hämta ut det som en sql via detta
SQL = Request.Form("valtAr")
Set RecSet = Server.CreateObject("ADODB.Recordset")
oldAction=Request.Querystring("action")
RecSet.Open SQL, Connect, 1, 3
RecSet.PageSize = 20
If RecSet.EOF Then
osv...
för det första så har du ju satt
minusEtt = Connect.Execute("SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)-1 &"' ORDER BY datum ASC"), dvs minusEtt är ett recordset
Sen verkar det lite onödigt att skriva ut hela SQL-frågan i klartext i dina options
jag skulle satt värdena på option till en siffra och sen
Select Case Clng(Request.Form("valtAr"))
Case 1
'Kommande
SQL="SELECT * From kalender WHERE bokad < 4 AND datum > #"& date() &"# ORDER BY datum ASC"
Case 2
'bokningar
SQL="SELECT * From kalender WHERE bokad = 1 ORDER BY datum ASC"
End Select
Set RS=Connect.Execute(SQL)
<%
kommande = "SELECT * From kalender WHERE bokad < 4 AND datum > #"& date() &"# ORDER BY datum ASC"
nya = "SELECT * From kalender WHERE bokad = 1 ORDER BY datum ASC"
alla = "SELECT * From kalender WHERE bokad < 4 ORDER BY datum ASC"
plusEtt = "SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)+1 &"' ORDER BY datum ASC"
dagensAr = "SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date) &"' ORDER BY datum ASC"
minusEtt = "SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)-1 &"' ORDER BY datum ASC"
minusTva = "SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)-2 &"' ORDER BY datum ASC"
minusTre = "SELECT * From kalender WHERE bokad < 4 AND year(datum) = '"& Year(date)-3 &"' ORDER BY datum ASC"
'//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////'
%>
<tr>
<td align="center">
<form action="admin_kommande.asp?kolla=check" method="post">
<Select name="valtAr" style="font-family: verdana; font-size: 10px">
<option value="#"> Välj </option>
<Option value="<%=kommande%>">Kommande</Option>
<Option value="<%=nya%>">Preliminära</Option>
<Option value="<%=alla%>">Alla</Option>
<Option value="<%=plusEtt%>"><%=Year(date)+1%></Option>
<Option value="<%=dagensAr%>"><%=Year(date)%></Option>
<Option value="<%=minusEtt%>"><%=Year(date)-1%></Option>
<Option value="<%=minusTva%>"><%=Year(date)-2%></Option>
<Option value="<%=minusTre%>"><%=Year(date)-3%></Option>
</Select>
<input type="submit" style="font-family: verdana; font-size: 10px" name="Submit2" value=" Hämta År ">
</td>
</tr>
SQL = Request.Form("valtAr")
Det där funkar ju, men som jag skrev, varför ha hela sql-frågan som variabel?
Det enda som skiljer de olika fallen åt är ju vad som står mellan "WHERE bokad" och "ORDER BY datum" (du behöver inte ha med ASC, eftersom det är default)
jag skulle gjort en variant på mitt förslag där du då endast ändrar på ditt villkor
If Clng(Request.Form("valtAr"))>0 Then
Select Case Clng(Request.Form("valtAr"))
Case 1
'Kommande
villkor="bokad < 4 AND datum > #"& date() &"#"
Case 2
'bokningar
villkor="bokad = 1"
End Select
SQL="SELECT * From kalender WHERE "& villkor &" ORDER BY datum"
End If
If Request.Form("valtAr") > 0 Then
Select Case Request.Form("valtAr")
Case 1 '///// Kommande /////'
choiseSQL = "bokad < 4 AND datum > #"& date() &"#"
Case 2 '///// Nya Bokningar /////'
choiseSQL = "bokad = 1"
Case 3 '///// Alla Bokningar /////'
choiseSQL = "bokad < 4"
Case 4 '///// Plus 1 År /////'
choiseSQL = "bokad < 4 AND year(datum) = '"& Year(date)+1 &"'"
Case 5 '///// Nuvarande År /////'
choiseSQL = "bokad < 4 AND year(datum) = '"& Year(date) &"'"
Case 6 '///// Minus 1 År /////'
choiseSQL = "bokad < 4 AND year(datum) = '"& Year(date)-1 &"'"
Case 7 '///// Minus 2 År /////'
choiseSQL = "bokad < 4 AND year(datum) = '"& Year(date)-2 &"'"
Case 8 '///// Minus 3 År /////'
choiseSQL = "bokad < 4 AND year(datum) = '"& Year(date)-3 &"'"
End Select
SQL="SELECT * From kalender WHERE "& choiseSQL &" ORDER BY datum"
End If
261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849