---
title: "skicka sql med variabel???"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/177993-skicka-sql-med-variabel"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Biasse"
published: "2009-04-12T09:59:00.000Z"
updated: "2009-04-14T07:49:59.000Z"
replies: 4
views: 706
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/177993-skicka-sql-med-variabel"
---

# skicka sql med variabel???

## #1 — Biasse, 2009-04-12T09:59Z

Ä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="#">&nbsp;Välj&nbsp;</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="&nbsp;Hämta År&nbsp;">        
    </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...
```

Permalänk: https://www.webforum.nu/p/177993

## #2 — rhdf, 2009-04-12T12:11Z

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)
```

Permalänk: https://www.webforum.nu/p/2181654

## #3 — Biasse, 2009-04-12T14:26Z

Fick till det såhär tillslut :)

```
<%
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="#">&nbsp;Välj&nbsp;</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="&nbsp;Hämta År&nbsp;">        
    </td>
  </tr>

  SQL = Request.Form("valtAr")
```

Permalänk: https://www.webforum.nu/p/2181672

## #4 — rhdf, 2009-04-13T18:28Z

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
```

och

```
    <Select name="valtAr" style="font-family: verdana; font-size: 10px">
    <option value="0">&nbsp;Välj&nbsp;</option>
    <Option value="1">Kommande</Option>
    <Option value="2">Preliminära</Option>
    <Option value="3">Alla</Option>
    <Option value="4"><%=Year(date)+1%></Option>
    <Option value="5"><%=Year(date)%></Option>
    osv
    </Select>
```

Permalänk: https://www.webforum.nu/p/2181763

## #5 — Biasse, 2009-04-14T07:49Z

Ja du har helt rätt. Fick ditt förslag att fungera perfekt. Tack :)

```
<Select name="valtAr" style="font-family: verdana; font-size: 10px">
    <option value="#">&nbsp;Välj&nbsp;</option>
    <Option value="1">Kommande</Option>
    <Option value="2">Preliminära</Option>
    <Option value="3">Alla</Option>
    <Option value="4"><%=Year(date)+1%></Option>
    <Option value="5"><%=Year(date)%></Option>
    <Option value="6"><%=Year(date)-1%></Option>
    <Option value="7"><%=Year(date)-2%></Option>
    <Option value="8"><%=Year(date)-3%></Option>
    </Select>
```

och

```
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
```

Permalänk: https://www.webforum.nu/p/2181809

---

Tråden på webben: https://www.webforum.nu/amne/asp/177993-skicka-sql-med-variabel
