---
title: "döe få End If?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/89836-döe-få-end-if"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "plelkes"
published: "2003-11-06T16:01:13.000Z"
updated: "2003-11-08T13:00:09.000Z"
replies: 16
views: 433
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/89836-döe-få-end-if"
---

# döe få End If?

## #1 — plelkes, 2003-11-06T16:01Z

Nu har jag provat på "möblera om " en fungerande sida:

```
<%
If Request.QueryString("type") = "" Then
  intType = 1
Else
  intType = CInt(Request.QueryString("type"))
End If

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
%>
	<table width="800" border="1">
		<tr>
			<td>&nbsp;</td>
			<td colspan="3"><%strSQL = "SELECT tblFluids.FluidNamn, ft.TypeNamn, ft.TypeID FROM tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND tblFluidRelat.typeID = tblFluidTypes.typeID AND tblFluidTypes.TypeID = " & intType & " ORDER by tblFluidTypes.typeID"
							Set objRS = objConn.Execute(strSQL)
							If NOT objRS.EOF Then
  							Response.WriteobjRS("TypeNamn")%>
		</td>
		</tr>
  			<tr> 
    			<td><%intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)
						For i = 1 To intLast
  					 Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)
					 	If NOT i = intType Then
    						Response.Write("<a href=""?type=" & i & """>" & objRS("TypeNamn") & "</a><BR> ")
  								Else
  						End If
						Next%>
				</td>
    				<td>%strSQL = "SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID FROM tblFluidRelat, tblFluids, tblFluidTypes  WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND tblFluidRelat.typeID =tblFluidTypes.typeID AND tblFluidTypes.TypeID = " & intType & " ORDER by tblFluidTypes.typeID"
					 Set objRS = objConn.Execute(strSQL)
						Do Until objRS.EOF
    						Response.Write("<INPUT NAME=""leggatill"" TYPE=""checkbox"" VALUE="""& objRS("FluidNamn") &""">" )
					     %></td>
    			<td><%Response.Write objRS("FluidNamn") %></td>
    			<td><%Response.Write "<INPUT NAME=""volym"" TYPE=""text""><br>"%></td>
	     objRS.MoveNext
  Loop
 
 Else
  Response.Write("Det finns inga av den typen.")
End If

Response.Write("<br>")
Set objRS = Nothing
%>
		</tr>
	</table>
<%
Response.Write "<INPUT TYPE=""submit"" VALUE=""Lägg till Vätskebalansen"">"
Set objRS = Nothing
objConn.Close : Set objConn = Nothing
%>
```

 

Men jag verkar ha för få End IF, för jag får

> Microsoft VBScript compilation error '800a03f4' 
> 
> Expected 'If' 
> 
> /vatskebalans/listainnehollet31.asp, line 55 
> 
> End
> \---^

 Lägger jag till ett End IF
får jag ändå fel

Snälla ni hjälp mig innan jag blir alldeles flint...

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

## #2 — Engine^, 2003-11-06T16:20Z

Jag ser inget End... städa koden och markera raden som ger felet.

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

## #3 — LarsG, 2003-11-06T16:30Z

```
for  ...

loop
```

No good-

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

## #4 — Viktor, 2003-11-06T16:31Z

Kan det kanske vara detta som spökar

```
If NOT i = intType Then
	Response.Write("<a href=""?type=" & i & """>" & objRS("TypeNamn") & "</a><BR> ")
Else
End If
Next%>
```

Där har du en Else utan något i, sedan kommer end if. Prova att ta bort Else.

/Viktor

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

## #5 — Engine^, 2003-11-06T16:32Z

```
<%
If Request.QueryString("type") = "" Then
  intType = 1
Else
  intType = CInt(Request.QueryString("type"))
End If

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
%>
  <table width="800" border="1">
    <tr>
      <td> </td>
      <td colspan="3">
<%
strSQL = "SELECT tblFluids.FluidNamn, ft.TypeNamn, ft.TypeID " & _
         "FROM tblFluidRelat, tblFluids, tblFluidTypes " & _
         "WHERE tblFluidRelat.FluidID = tblFluids.FluidID " &_
         "  AND tblFluidRelat.typeID = tblFluidTypes.typeID " & _
         "  AND tblFluidTypes.TypeID = " & intType & _
         " ORDER by tblFluidTypes.typeID"

Set objRS = objConn.Execute(strSQL)

If NOT objRS.EOF Then
  Response.WriteobjRS("TypeNamn")
%>
      </td>
    </tr>
    <tr> 
      <td>
<%
  intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)

  For i = 1 To intLast
    Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)
    
    If NOT i = intType Then
      Response.Write("<a href=""?type=" & i & """>" & objRS("TypeNamn") & "</a><BR> ")
    End If
  Next
%>
      </td>
      <td>
<% [blue]'Här kan ett fel ha varit. Ingen kråka före %[/blue]

  strSQL = "SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID " & _
           "FROM tblFluidRelat, tblFluids, tblFluidTypes " &
           "WHERE tblFluidRelat.FluidID = tblFluids.FluidID
           "  AND tblFluidRelat.typeID = tblFluidTypes.typeID " & _ 
           "  AND tblFluidTypes.TypeID = " & intType & _
           " ORDER by tblFluidTypes.typeID"

  Set objRS = objConn.Execute(strSQL)

  Do Until objRS.EOF
    Response.Write("<INPUT NAME=""leggatill"" TYPE=""checkbox"" VALUE="""& objRS("FluidNamn") &""">" )
%>
      </td>
      <td>
<%
    Response.Write objRS("FluidNamn")
%>
      </td>
      <td>
<%
    Response.Write "<INPUT NAME=""volym"" TYPE=""text""><br>"
%>
      </td>
<% [blue]'Mera fel... ingen contextswitch...[/blue]
    objRS.MoveNext
  Loop
 
Else
  Response.Write("Det finns inga av den typen.")
End If

Response.Write("<br>")

Set objRS = Nothing
%>
    </tr>
  </table>
<%
Response.Write "<INPUT TYPE=""submit"" VALUE=""Lägg till Vätskebalansen"">"

Set objRS = Nothing [blue]' En gång till...[/blue]
objConn.Close : Set objConn = Nothing
%>
```

Denna kod är ett rätt bra exempel på hur man inte ska göra ;)
Dela upp sidan i två block istället. Lägg VBScript-delen först och HTML-biten sist. Gör om dom delar du har mitt i HTML-koden till funktioner och sub:ar. Tydlighet i kod är ett stort steg på vägen för att kunna felsöka och förstå vad det är som händer.

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

## #6 — plelkes, 2003-11-06T18:54Z

> \<% 'Mera fel... ingen contextswitch...
>     objRS.MoveNext
>   Loop

 Vad menar du med ingen contextswitch???

> Gör om dom delar du har mitt i HTML-koden till funktioner och sub:ar.

 Funktioer och sub:ar en fortfarande mina S T O R A brister x(  x(  x(  x( 
Kan jag få exempel på hur jag borde lösa???

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

## #7 — plelkes, 2003-11-06T19:00Z

Det mest konstiga är att [det funkar](http://www12.brinkster.com/vatskebalans/listainnehollet3.asp)  innan ommöbleringen, med följande kod

```
<%
If Request.QueryString("type") = "" Then
  intType = 1
Else
  intType = CInt(Request.QueryString("type"))
End If

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
Set objRS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
  Response.Write(objRS("TypeNamn") & "<p>")
%>
<table width="500" border="1">
  
  <tr>
    <td><%intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)

For i = 1 To intLast
  Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)

  If NOT i = intType Then
    Response.Write("<a href=""?type=" & i & """>" & objRS("TypeNamn") & "</a><BR> ")
  Else
   
  End If
Next

%></td>
    <td>&nbsp;</td>
    <td><%strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
Set objRS = objConn.Execute(strSQL)
Do Until objRS.EOF
    Response.Write("<INPUT NAME=""leggatill"" TYPE=""checkbox"" VALUE="""& objRS("FluidNamn") &""">" & objRS("FluidNamn") & "&nbsp;&nbsp;&nbsp;<INPUT NAME=""volym"" TYPE=""text""><br>")
     objRS.MoveNext
  Loop
 
 Else
  Response.Write("Det finns inga av den typen.")
End If

Response.Write("<br>")
Set objRS = Nothing
%></td>
  </tr>
</table>

<%
Response.Write "<INPUT TYPE=""submit"" VALUE=""Lägg till Vätskebalansen"">"
Set objRS = Nothing
objConn.Close : Set objConn = Nothing
%>
</BODY>
</HTML>
```

 

> \<% 'Mera fel... ingen contextswitch...
>     objRS.MoveNext
>   Loop

 Vad menar du med ingen contextswitch???

> Gör om dom delar du har mitt i HTML-koden till funktioner och sub:ar.

 Funktioer och sub:ar en fortfarande mina S T O R A brister x(  x(  x(  x( 
Kan jag få exempel på hur jag borde lösa???

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

## #8 — Engine^, 2003-11-06T19:27Z

> **plelkes skrev:**
>
> Vad menar du med ingen contextswitch???

Du saknade \<% där eller så såg jag fel då jag städade i din kod.

> **plelkes skrev:**
>
> Funktioer och sub:ar en fortfarande mina S T O R A brister x(  x(  x(  x( 
> Kan jag få exempel på hur jag borde lösa???

Svårt att dela upp det här i fler än en funktion. Det finns ingen logik för det, eftersom dom sakerna här bara ska utföras en gång.
Men jag kan ju givetvis pilla lite mer i din kod :)

```
<%
Function CreateFluidTable()
  strDbPath = Server.MapPath("\vatskebalans\db\vbalans.mdb")

  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Provider = "Microsoft.Jet.OleDb.4.0"

  strSQL = "SELECT tblFluids.FluidNamn, ft.TypeNamn, ft.TypeID " & _
           "FROM tblFluidRelat, tblFluids, tblFluidTypes " & _
           "WHERE tblFluidRelat.FluidID = tblFluids.FluidID " &_
           "  AND tblFluidRelat.typeID = tblFluidTypes.typeID " & _
           "  AND tblFluidTypes.TypeID = " & intType & _
           " ORDER by tblFluidTypes.typeID"

  objConn.Open strDbPath
  objRS.Open strSQL, objConn, 1, 3

  If Not objRS.EOF Then
    strHtml = objRS("TypeNamn")

    objRS.Close

    strHtml = strHtml & "</td></tr><tr><td>"

    intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)

    For i = 1 To intLast
      If Not i = intType Then
        objRS.Open  "SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i, objConn, 1, 3

        strHtml = strHtml & "<a href=""?type=" & i & "">" & objRS("TypeNamn") & "</a><br>")

        objRS.Close
      End If
    Next

    strHtml = strHtml & "</td><td>"

    strSQL = "SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID " & _
             "FROM tblFluidRelat, tblFluids, tblFluidTypes " &
             "WHERE tblFluidRelat.FluidID = tblFluids.FluidID
             "  AND tblFluidRelat.typeID = tblFluidTypes.typeID " & _ 
             "  AND tblFluidTypes.TypeID = " & intType & _
             " ORDER by tblFluidTypes.typeID"

    objRS.Open strSQL, objConn, 1, 3

    Do Until objRS.EOF
      strHtml = strHtml & "<input name=""leggatill"" type=""checkbox"" value=""" & objRS("FluidNamn") & """>"
      strHtml = strHtml & "</td><td>" & objRS("FluidNamn") & "</td><td>"
      strHtml = strHtml & "<input name=""volym"" type=""text""><br></td>"

      objRS.MoveNext
    Loop

    objRS.Close
  Else
    strHtml = "Det finns inga av den typen."
  End If

  Set objRS = Nothing
  objConn.Close
  Set objConn = Nothing

  CreateFluidTable = strHtml
End Function

If Request.QueryString("type") = "" Then
  intType = 1
Else
  intType = CInt(Request.QueryString("type"))
End If
%>

<table width="800" border="1">
  <tr>
    <td></td>
    <td colspan="3">
<%
  Response.Write CreateFluidTable
%>
    </td>
  </tr>
</table>
<input type="submit" value="Lägg till Vätskebalansen">
```

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

## #9 — Engine^, 2003-11-06T19:31Z

> **plelkes skrev:**
>
> Det mest konstiga är att [det funkar](http://www12.brinkster.com/vatskebalans/listainnehollet3.asp)  innan ommöbleringen

Jag tyckte du sa att det inte fungerade... eller var det innan du blev flint :q :)

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

## #10 — plelkes, 2003-11-07T07:22Z

> Det mest konstiga är att det funkar innan ommöbleringen
> \--------------------------------------------------------------------------------
> 
> Jag tyckte du sa att det inte fungerade... eller var det innan du blev flint

 
Va+ nu fattar jag inget...
Länken jag skickade var ju innan mitt försök till ommöblering. 
Håller du inte med om att det funkar?

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

## #11 — plelkes, 2003-11-07T12:02Z

Nu har jag läst och begrundat din kod. Rätt elegant lösning, :birp,
 som dock jag själv aldrig skulle komma på :x 

- Du öppnar och stänger rs i varje tabellcell, eller hur?
- Men connectionen stänger du bara på slutet, eller?

 

Du öppnar väl conn med

```
objConn.Open strDbPath
```

 Men ändå har du med i varje tabellcell:

```
intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)
```

 
eller

```
objRS.Open strSQL, objConn, 1, 3
```

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

## #12 — plelkes, 2003-11-08T10:59Z

Med en dåres envishet har jag fortsatt på mitt inslagna väg, dvs utan funktioner - eftersom jag är övertygad att jag aldrig skulle klara av att komma på det själv.

Har lag till ***contextswitch*** som Engine^ skrev...
Nu får jag felutskriften:

> Microsoft JET Database Engine error '80040e10' 
> 
> No value given for one or more required parameters. 
> 
> /vatskebalans/listainnehollet31.asp, line 20

 Koden i området:

```
16: <table width="800" border="1">
17: <tr>
18: <td>&nbsp;</td>
19:<td colspan="3"><%strSQL = "SELECT tblFluids.FluidNamn, ft.TypeNamn, ft.TypeID FROM tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND tblFluidRelat.typeID = tblFluidTypes.typeID AND tblFluidTypes.TypeID = " & intType & " ORDER by tblFluidTypes.typeID"
20: Set objRS = objConn.Execute(strSQL)
21: If NOT objRS.EOF Then
22: Response.WriteobjRS("TypeNamn")%>
```

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

## #13 — doggelito, 2003-11-08T11:04Z

Betyder att variabeln: intType förmodligen är tomt.

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

## #14 — @nders, 2003-11-08T11:05Z

Kolla så alla tabell- och fältnamn är rättstavade.

Mvh

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

## #15 — plelkes, 2003-11-08T11:39Z

dela upp strSQL på flera rader

Hej,
nedanstående vii jag dela upp på flera rader:

```
strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
```

 
Vilket är rätt:
1)

```
strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft._
TypeID FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE fr.-
FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
```

 

eller 2)

```
strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID " &_
"FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE" & _
" fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
```

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

## #16 — @nders, 2003-11-08T11:41Z

Alternativ två är korrekt.

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

## #17 — plelkes, 2003-11-08T13:00Z

Nu har jag nästan lyckats....

```
<%@LANGUAGE="VBSCRIPT" "%>
<HTML>
<HEAD>
<TITLE>Untitled Document</TITLE>
</HEAD>
<%
If Request.QueryString("type") = "" Then
  intType = 1
Else
  intType = CInt(Request.QueryString("type"))
End If

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
strSQL = "SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID FROM " & _
         "tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND" & _
		 " tblFluidRelat.typeID = tblFluidTypes.typeID AND tblFluidTypes.TypeID = " & intType & " ORDER by tblFluidTypes.typeID"
Set objRS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
%>
<table width="800" border="1">
		<tr>
		   <td>&nbsp;</td>
		   <td colspan="3"><%
			                Response.Write objRS("TypeNamn")
							objRS.Close
							       %>
		    </td>
		 </tr>
  				<tr> 
    				<td><%
					      intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)
							For i = 1 To intLast
  						  Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)
							If NOT i = intType Then
    							Response.Write("<a href=""?type=" & i & """>" & objRS("TypeNamn") & "</a><BR> ")
						  objRS.Close
						  End If
						  Next
								%>
				     </td>
    					<td><%
							  strSQL = "SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID FROM " & _
         								"tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND" & _
		 								" tblFluidRelat.typeID = tblFluidTypes.typeID AND tblFluidTypes.TypeID = " & intType & " ORDER by tblFluidTypes.typeID"
							  Set objRS = objConn.Execute(strSQL)
                              Do Until objRS.EOF
       						   Response.Write("<INPUT NAME=""leggatill"" TYPE=""checkbox"" VALUE="""& objRS("FluidNamn") &""">" )
					          %>
						</td>
    			  			<td><%Response.Write objRS("FluidNamn") %>
						</td>
    						<td><%Response.Write "<INPUT NAME=""volym"" TYPE=""text"">"%>
						
	    					<% objRS.MoveNext
  									Loop
 								objRS.Close
 									Else
  										Response.Write("Det finns inga av den typen.")
							End If
								Response.Write("<br>")
						Set objRS = Nothing
						objConn.Close
						Set objConn = Nothing
								%>
					
	</table>
<input type="submit" value="Lägg till Vätskebalansen">

</BODY>
</HTML>
```

 

Men [som ni ser](http://www12.brinkster.com/vatskebalans/lisatinnehet1.asp?type=1)  blir det inte rätt:
Första lopen stämmer (kryssruta -\> namnet -\> textruta).
Men de andra varven blir det snett.
Min avsikt är att andr kryssrutan skall hamna i 2:a tblradens 2:a kolumn, namnet  i 2:a tblradens 3:e kolumn ...
Tredje kryssrutan under de övriga i  2:a tblradens 2:a kolumn osv...
Hoppas och tror att ni förstår!.
Har nu utan framgång fösökt i 4 timmar att få fason på det hela.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/89836-döe-få-end-if
