webForumDet fria alternativet

skicka sql med variabel???

4 svar · 695 visningar · startad av Biasse

BiasseMedlem sedan aug. 2003480 inlägg
#1

Ä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...
rhdfMedlem sedan okt. 2007446 inlägg
#2

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)
BiasseMedlem sedan aug. 2003480 inlägg
#3

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")
rhdfMedlem sedan okt. 2007446 inlägg
#4

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>
BiasseMedlem sedan aug. 2003480 inlägg
#5

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
141 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)