webForumDet fria alternativet

Syntax error (missing operator) in query expression

33 svar · 813 visningar · startad av plelkes · sida 2 av 2

plelkesMedlem sedan mars 2002823 inlägg
#21

den satsen hade jag längre ner.
Efter att flyttat upp blir felet

Microsoft JET Database Engine error '80004005'
The specified field 'PatID' could refer to more than one table listed in the FROM clause of your SQL statement.

Då möblerar jag om

strSQL1 = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, " &_
"tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym," &_
" tblPersonuppgifter.PatID, tblPersonuppgifter.ftEnamn, tblPersonuppgifter.ftFnamn" &_ 
" FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE" &_
" tblVetskebalans.FluidID = tblFluids.FluidID AND " &_
"tblPersonuppgifter.PatID = "&Request.Form("rapport")&" ORDER by Dag ASC"

Och nu blir utskriften

SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym, tblPersonuppgifter.PatID, tblPersonuppgifter.ftEnamn, tblPersonuppgifter.ftFnamn FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND tblPersonuppgifter.PatID = '1111111111' ORDER by Dag ASC Microsoft VBScript runtime error '800a000d'

Type mismatch: 'rs'

/vatskebalans/visa_rapporten102.asp, line 24

rad 24 är raden med rs("ftEnamn")

@ndersMedlem sedan juni 200026 914 inlägg
#22

Felet kommer sig av, vad jag kan se, att recordsetet rs inte finns när du försöker skriva ut rs("ftEnamn"). Var exekverar du SQL-frågan?

plelkesMedlem sedan mars 2002823 inlägg
#23

@nders,dumt avmig... skall heta rs1 och inget annat.
Sidan håller jag på att ändra på så att allt komemr att hamna i tabeller. Så här långt ser hela koden ut så här:

<%@LANGUAGE="VBSCRIPT" "%>
<HTML>
<HEAD>
<TITLE>Untitled Document</TITLE>
</HEAD>
<%  
Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL1 = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, " &_
"tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym," &_
" tblPersonuppgifter.PatID, tblPersonuppgifter.ftEnamn, tblPersonuppgifter.ftFnamn" &_ 
" FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE" &_
" tblVetskebalans.FluidID = tblFluids.FluidID AND " &_
"tblPersonuppgifter.PatID = "&Request.Form("rapport")&" ORDER by Dag ASC"
Response.Write strSQL1
Set rs1 = vbalans.Execute (strSQL1)

%>
<TABLE border=1>
       <TR>
	   <TD>_</TD><TD>_</TD><TD><%=rs1("PatID")%></TD>
	   </TR><TR>
	   <TD>_</TD><TD><%=rs1("ftEnamn")%></TD><TD><%=rs1("ftFnamn")%></TD>
	   </TR><TR>
	   <TD>_</TD><TD>_</TD><TD>_</TD>
	   </TR><TR>
	   <TD>_</TD><TD>_</TD><TD>_</TD>
	   </TR><TR>
	   <TD>_</TD><TD>_</TD><TD>_</TD>
	   </TR>
	   </TABLE>
<%
datum ="" 

Do While Not rs1.EOF
If datum <> rs1("Dag") then
datum = rs1("Dag")
Response.Write "<B>" & rs1("Dag") & "</B><BR>" & "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
Else
Response.Write "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
End If
rs1.MoveNext
Loop
vbalans.Close
Set vbalans = Nothing
  %>
<br><br>
<br>
<a href="http://www12.brinkster.com/vatskebalans/tblvetskebalans.asp">Lista tblVätskebalans innehåll</a>

</BODY>
</HTML>

Men denna ändring verkar inte hjälpa

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal

Vad betyder detta?Jag öppnar väl
tblPersonuppgifter.ftEnamn??

@ndersMedlem sedan juni 200026 914 inlägg
#24

Du kallar ditt recordset för rs1, men du försöker skriva ut värden från rs. Nicht gefunket! ;)

plelkesMedlem sedan mars 2002823 inlägg
#25

som jag skrev ovan har jag själv upptäckt mitt misstag :)

Kan ni berätta vad det senaste felmesset beror på?
Skickar för säkerhetsskull messet en gång till

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal

senast jag fick detta felmess, men nu har jag väl inte gjort samma fel??

@ndersMedlem sedan juni 200026 914 inlägg
#26

Hur ser din kod ut nu alltså?

Mvh

plelkesMedlem sedan mars 2002823 inlägg
#27

hela sidans kod

<%@LANGUAGE="VBSCRIPT" "%>
<HTML>
<HEAD>
<TITLE>Untitled Document</TITLE>
</HEAD>
<%  
Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL1 = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, " &_
"tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym," &_
" tblPersonuppgifter.PatID, tblPersonuppgifter.ftEnamn, tblPersonuppgifter.ftFnamn" &_ 
" FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE" &_
" tblVetskebalans.FluidID = tblFluids.FluidID AND " &_
"tblPersonuppgifter.PatID = "&Request.Form("rapport")&" ORDER by Dag ASC"
Response.Write strSQL1
Set rs1 = vbalans.Execute (strSQL1)

%>
<TABLE border=1>
       <TR>
	   <TD>_</TD><TD>_</TD><TD><%=rs1("PatID")%></TD>
	   </TR><TR>
	   <TD>_</TD><TD><%=rs1("ftEnamn")%></TD><TD><%=rs1("ftFnamn")%></TD>
	   </TR><TR>
	   <TD>_</TD><TD>_</TD><TD>_</TD>
	   </TR><TR>
	   <TD>_</TD><TD>_</TD><TD>_</TD>
	   </TR><TR>
	   <TD>_</TD><TD>_</TD><TD>_</TD>
	   </TR>
	   </TABLE>
<%
datum ="" 

Do While Not rs1.EOF
If datum <> rs1("Dag") then
datum = rs1("Dag")
Response.Write "<B>" & rs1("Dag") & "</B><BR>" & "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
Else
Response.Write "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
End If
rs1.MoveNext
Loop
vbalans.Close
Set vbalans = Nothing
  %>
<br><br>
<br>
<a href="http://www12.brinkster.com/vatskebalans/tblvetskebalans.asp">Lista tblVätskebalans innehåll</a>

</BODY>
</HTML>
plelkesMedlem sedan mars 2002823 inlägg
#28

Efter att ha sökt på google hittade jag denna sida . Här listas orsaker till felet..

Så jag har gjort förändring i strSQL (se fetstilta)

strSQL1 = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, " &_
"[B]tblVetskebalans.PatID AS patid[/B], tblVetskebalans.FluidID, tblVetskebalans.Volym," &_
" [B]tblPersonuppgifter.PatID AS ID[/B], tblPersonuppgifter.ftEnamn, tblPersonuppgifter.ftFnamn" &_ 
" FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE" &_
" tblVetskebalans.FluidID = tblFluids.FluidID AND " &_
"tblPersonuppgifter.PatID = "&Request.Form("rapport")&" ORDER by Dag ASC"

Samt

<TD><%=rs1("ID")%></TD>

Och vips som genom ett trollslag verkar deetta funktionera*ler*

plelkesMedlem sedan mars 2002823 inlägg
#29

Det har funkat sedan jag skrev föregående inlägg, men nu får jag felutskriften

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'tblVetskebalans.FluidID = tblFluids.FluidID AND tblPersonuppgifter.PatID ='.

/vatskebalans/visa_rapporten102.asp, line 18

Har försökt hitta felet genom google,men misslyckas... Snälla hjälp mig!!
Hela koden ser ut

<%  
Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL1 = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, " &_
"tblVetskebalans.PatID AS patid, tblVetskebalans.FluidID, tblVetskebalans.Volym," &_
" tblPersonuppgifter.PatID AS ID, tblPersonuppgifter.ftEnamn, tblPersonuppgifter.ftFnamn" &_ 
" FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE" &_
" tblVetskebalans.FluidID = tblFluids.FluidID AND " &_
"tblPersonuppgifter.PatID = "&Request.Form("rapport")&" ORDER by Dag ASC"
Set rs1 = vbalans.Execute (strSQL1)
%>
<TABLE border=1>
       <TR>
	   <TD>&nbsp;</TD><TD>&nbsp;</TD><TD><%=rs1("ID")%></TD>
	   </TR><TR>
	   <TD>&nbsp;</TD><TD><%=rs1("ftEnamn")%></TD><TD><%=rs1("ftFnamn")%></TD>
	   </TR><TR>
	   <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	   </TR><TR>
	   <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	   </TR><TR>
	   <TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	   </TR>
</TABLE>
<%
datum ="" 
Do While Not rs1.EOF
If datum <> rs1("Dag") then
datum = rs1("Dag")
Response.Write "<B>" & rs1("Dag") & "</B><BR>" & "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
Else
Response.Write "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
End If
rs1.MoveNext
Loop
vbalans.Close
Set vbalans = Nothing
  %>
LarsGMedlem sedan dec. 200012 465 inlägg
#30

Av felutskriften så tyder allt på att Request.Form("rapport") inte innehåller något värde.

plelkesMedlem sedan mars 2002823 inlägg
#31

Det borde det göra..
Av utrymmes skäl skickar jag med de 3 filerna.

  1. på 1.asp - kryssa rutan
    1. sedan tas krysset = patiID med till de 2 andra sidorna
plelkesMedlem sedan mars 2002823 inlägg
#32

Ni kan oxå kolla live

  1. http://www12.brinkster.com/vatskebalans/vbalans100.asp
    - här fylls krussrutan i (=1.asp på bifogad fil)
  2. på denna sida (=2.asp) http://www12.brinkster.com/vatskebalans/givna_fluids102.asp följer person numret snällt med
  3. och det är tänkt att personnummret skall ÄVEN följa med till denna sida(=3.asp)http://www12.brinkster.com/vatskebalans/visa_rapporten102.asp
plelkesMedlem sedan mars 2002823 inlägg
#33

ordna eft

Nu har jag gjort lite förändring

<%  
Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL1 = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, " &_
" tblVetskebalans.PatID AS patid, tblVetskebalans.FluidID, tblVetskebalans.Volym," &_
" tblPersonuppgifter.PatID AS ID, tblPersonuppgifter.ftEnamn, tblPersonuppgifter.ftFnamn" &_ 
" FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE" &_
" tblVetskebalans.FluidID = tblFluids.FluidID AND " &_
" tblPersonuppgifter.PatID = "&Request.Form("rapport")&" ORDER by dag ASC"
datum ="" 
Set rs1 = vbalans.Execute (strSQL1)
Do While Not rs1.EOF
If nr <> rs1("ID") then
Response.Write rs1("ID") & "<BR>"
Response.Write "<B>" & rs1("ftEnamn") & ", " & rs1("ftFnamn") & "</B><P><P><P>"
If datum <> rs1("Dag") then
datum = rs1("Dag")
Response.Write "<B>" & rs1("Dag") & "</B><BR>" & "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
Else
Response.Write "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
End If
rs1.MoveNext
Loop
vbalans.Close
Set vbalans = Nothing
%>

men ack - får felutskrift

Microsoft VBScript compilation error '800a040e'

'loop' without 'do'

/vatskebalans/visa_rapporten102.asp, line 31

Loop
^

linje 31står själva loopen, och 11 rader högre upp står "Do"??????????????

PDahlenMedlem sedan apr. 2004784 inlägg
#34

Om du tabbar in koden när du skriver så kan du lättare hålla kolla på dina If-Else och då hade du sett att det som saknas är ett End If. Det orskakar "do"-felet.

Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL1 = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, " &_
" tblVetskebalans.PatID AS patid, tblVetskebalans.FluidID, tblVetskebalans.Volym," &_
" tblPersonuppgifter.PatID AS ID, tblPersonuppgifter.ftEnamn, tblPersonuppgifter.ftFnamn" &_ 
" FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE" &_
" tblVetskebalans.FluidID = tblFluids.FluidID AND " &_
" tblPersonuppgifter.PatID = "&Request.Form("rapport")&" ORDER by dag ASC"
datum ="" 
Set rs1 = vbalans.Execute (strSQL1)
Do While Not rs1.EOF
    If nr <> rs1("ID") then
        Response.Write rs1("ID") & "<BR>"
        Response.Write "<B>" & rs1("ftEnamn") & ", " & rs1("ftFnamn") & "</B><P><P><P>"
        If datum <> rs1("Dag") then
            datum = rs1("Dag")
            Response.Write "<B>" & rs1("Dag") & "</B><BR>" & "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
        Else
            Response.Write "<I>" & rs1("FluidNamn") & "</I>   " & "<U>" & rs1("Volym") & "  ml</U><BR>"
        End If
    End If   ' * Den här saknades
    rs1.MoveNext
Loop
vbalans.Close
Set vbalans = Nothing
Genererad på 376 ms · cache AV · v20260730165559-full.f96bc7eb