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> </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...
<%
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.
Det mest konstiga är att det funkar 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> </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") & " <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???
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">
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> </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")%>
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"
<%@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> </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 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.
265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e