Avatar billede bobbedude Nybegynder
11. februar 2003 - 10:31 Der er 18 kommentarer og
1 løsning

Dumme SQL Sætning

SQL = "SELECT DISTINCT tilbudKategori.katID, tilbudKategori.katNavn,sum(tilbudVare.uge+tilbudVare.uge1) as nyuge FROM tilbudKategori tilbudKategori INNER JOIN tilbudVare tilbudVare ON tilbudKategori.katID = tilbudVare.katID WHERE tilbudVare.uge between "&uge&" and nyuge group by tilbudKategori.katID,tilbudKategori.katNavn"

Giver fejlen

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Avatar billede Spotgun Seniormester
11. februar 2003 - 10:39 #1
Prøv at skriv noget mere af koden - bl.a. der hvor du kører selve SQL-sætningen. Det lyder mere til at problemet ligger dér, og ikke i din SQL-sætning!
Avatar billede bobbedude Nybegynder
11. februar 2003 - 10:41 #2
<%
rs.close
else

SQL = "SELECT DISTINCT tilbudKategori.katID, tilbudKategori.katNavn,sum(tilbudVare.uge+tilbudVare.uge1) as nyuge FROM tilbudKategori tilbudKategori INNER JOIN tilbudVare tilbudVare ON tilbudKategori.katID = tilbudVare.katID WHERE tilbudVare.uge between "&uge&" and nyuge group by tilbudKategori.katID,tilbudKategori.katNavn"

response.write SQL
SET rs = Connect.Execute(SQL)

if not rs.EOF then
do until rs.EOF


if Cint(Request.QueryString("linkid")) = rs("katID") then
%>
<a class="link1" href="bygma-tilbud.asp?menu=2"><b><%=rs("katNavn")%></b> </a><br>
<%
else
%>
<a class="link1" href="bygma-tilbud.asp?linkid=<%=rs("katID")%>&menu=<%=request.querystring("menu")%>"><%=rs("katNavn")%></a><br>
<%
end if


if Cint(Request.QueryString("linkid")) = rs("katID") then

Set rs2 = Connect.Execute("SELECT * FROM tilbudVare WHERE uge = "&uge&" AND katID = " & request("linkid") & " Order by priotet asc")


if not rs2.EOF then
do until rs2.EOF
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="almfont">&middot;&nbsp;<a class="link1" href="bygma-tilbud.asp?id=<%=rs2("vareID")%>&menu=<%=request.querystring("menu")%>&show=1">
    <%
    if rs2("priotet")="A" then
    response.write "<b>"
    end if
    %>
    <%=rs2("varenavn")%>
    <%
    if rs2("priotet")="A" then
    response.write "</b>"
    end if
    %></a>
    </td>
    <td align="right" class="almfont"><%=formatcurrency(rs2("tilbudpris"),2)%></td>
    <td width="100">&nbsp;</td>
  </tr>
</table>
<%
rs2.MoveNext
Loop
rs2.close
else
'fang tom
end if

end if
rs.movenext
Loop
rs.close
else
'fang tom
end if

end if
%>
Avatar billede keysersoze Ekspert
11. februar 2003 - 10:43 #3
mon ikke det skal være sådan?

between "&uge&" and "&nyuge&"

ellers prøv at lave en response.write sql og lad os se hvad den siger
Avatar billede bobbedude Nybegynder
11. februar 2003 - 10:46 #4
Men fejlen kommer der hvor SQL'en bliver kørt

SET rs = Connect.Execute(SQL)
Avatar billede bobbedude Nybegynder
11. februar 2003 - 10:47 #5
keysersoze >> Meningen var at det skulle være nyuge skulle være summen af de to felter uge og uge1
Avatar billede bobbedude Nybegynder
11. februar 2003 - 10:47 #6
Her er response.write SQL

SELECT DISTINCT tilbudKategori.katID, tilbudKategori.katNavn,sum(tilbudVare.uge+tilbudVare.uge1) as nyuge FROM tilbudKategori tilbudKategori INNER JOIN tilbudVare tilbudVare ON tilbudKategori.katID = tilbudVare.katID WHERE tilbudVare.uge between 7 and nyuge group by tilbudKategori.katID,tilbudKategori.katNavn
Avatar billede bobbedude Nybegynder
11. februar 2003 - 10:49 #7
Variabel uge indeholder ugenummeret på ugen vi er i

feltet uge indeholder den uge der skal vises i
feltet uge1 indeholder tallene 0 eller 1 eller 2

nyuge skulle så være summen af feltet uge og uge1
Avatar billede keysersoze Ekspert
11. februar 2003 - 11:07 #8
jeg - fejlen kommer hvor sql'en bliver kørt.... det er klart

det jeg mener er, at "nyuge" som du har skrevet ind umiddelbart ikke kan sammenlignes med "uge" og det kan du jo se passer når du udskriver sql'en "between 7 and nyuge"

jeg kan ikke huske den præcise syntaks, men jeg mener ikke at du kan bruge variablen nyuge på den måde du gør - så prøv i stedet for nyuge at skrive sum(tilbudVare.uge+tilbudVare.uge1)
Avatar billede bobbedude Nybegynder
11. februar 2003 - 11:26 #9
Fejlen er så

Cannot have aggregate function in WHERE clause (tilbudVare.uge Between 7 And sum(tilbudVare.uge+tilbudVare.uge1)).

SQL'en

SQL = "SELECT DISTINCT tilbudKategori.katID, tilbudKategori.katNavn,sum(tilbudVare.uge+tilbudVare.uge1) as nyuge FROM tilbudKategori tilbudKategori INNER JOIN tilbudVare tilbudVare ON tilbudKategori.katID = tilbudVare.katID WHERE tilbudVare.uge between "&uge&" and sum(tilbudVare.uge+tilbudVare.uge1) group by tilbudKategori.katID,tilbudKategori.katNavn"
Avatar billede keysersoze Ekspert
11. februar 2003 - 11:36 #10
prøv en gang at hardkode en nyuge ind - altså fx

between "&uge&" and 9
Avatar billede bobbedude Nybegynder
11. februar 2003 - 12:15 #11
så melder den ingen fejl
Avatar billede keysersoze Ekspert
11. februar 2003 - 12:29 #12
hvis du så gør det - og der ikke meldes fejl så prøv at lav en response.write på nyuge og se om den indeholder en værdi
Avatar billede bobbedude Nybegynder
11. februar 2003 - 12:51 #13
Jeg kan jo ikke skrive nyuge ud da det ikke er en variabel vel ??
Avatar billede keysersoze Ekspert
11. februar 2003 - 13:00 #14
nej - det er et recordset - men derfor kan du vel godt skrive den ud;

response.write rs("nyuge")

umiddelbart har jeg nemlig ikke den store idé - enten er "nyuge" tom når den forsøges brugt i where eller også kan access bare ikke klare det på den måde :o/
Avatar billede bobbedude Nybegynder
11. februar 2003 - 13:36 #15
jeg kan ikke skrive rs("nyuge") ud da den jo fejler når den skal kører SQL'en desværrer
Avatar billede keysersoze Ekspert
11. februar 2003 - 13:42 #16
den fejler vel ikke hvis du bruger between "&uge&" and 9
Avatar billede bobbedude Nybegynder
11. februar 2003 - 15:27 #17
Når nej

nyuge har værdien 9 hvis SQL'en ser sådan ud:

SQL = "SELECT DISTINCT tilbudKategori.katID, tilbudKategori.katNavn,sum(tilbudVare.uge+tilbudVare.uge1) as nyuge FROM tilbudKategori tilbudKategori INNER JOIN tilbudVare tilbudVare ON tilbudKategori.katID = tilbudVare.katID WHERE tilbudVare.uge between "&uge&" and 9 group by tilbudKategori.katID,tilbudKategori.katNavn"

altså 9 istedet for nyuge
Avatar billede keysersoze Ekspert
11. februar 2003 - 15:42 #18
ok - så har jeg kun et enkelt gæt tilbage og det er at prøve noget a la dette;

SQL = "SELECT DISTINCT tilbudKategori.katID, tilbudKategori.katNavn,sum(tilbudVare.uge+tilbudVare.uge1) as nyuge FROM tilbudKategori tilbudKategori INNER JOIN tilbudVare tilbudVare ON tilbudKategori.katID = tilbudVare.katID WHERE tilbudVare.uge between "&uge&" and (SELECT sum(tilbudVare.uge+tilbudVare.uge1) from tilbudKategori) group by tilbudKategori.katID,tilbudKategori.katNavn"

ellers er jeg lost. Måske fordi access ikke kan arbejde på måde
Avatar billede bobbedude Nybegynder
12. februar 2003 - 09:10 #19
oki jeg fik det løst ved at gøre sådan:

SQL = "SELECT DISTINCT tilbudKategori.katID, tilbudKategori.katNavn FROM tilbudKategori INNER JOIN tilbudVare ON tilbudKategori.katID = tilbudVare.katID WHERE "&uge&" >= tilbudVare.uge AND "&uge&" <= tilbudVare.uge1;"

keysersoze >> Du får point fordi du gad ofre din tid på mig, mange tak :ø)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester