webForumDet fria alternativet

Number of query values and destination fields are not the same.

ASP

9 svar · 256 visningar · startad av plelkes

Medlem sedan mars 2002823 inlägg
Frågan#1

Hej, nu är jag tillbaka med mitt projekt...

Session.LCID = 1053
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open

pnr= Request.Form("personnr")
d = FormatDateTime(Date, 2)

For each formObj in Request.Form
     If left(formObj,9) = "leggatill" Then
            lngFluidID = Replace(Request.Form(formObj), "leggatill", "")

strSQL = "SELECT * FROM tblFluids, tblVetskebalans WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND tblFluids.FluidID = " & lngFluidID
Set tblFluids = vatskeb.Execute(strSQL)
	sngVolym = CSng(Request.Form("volym" & lngFluidID))
	najoner = sngVolym * tblFluids("Naperml")
	kaliumjoner = sngVolym * tblFluids("Kperml")
	kloridjoner = sngVolym * tblFluids("Clperml")
	fosfatjoner = sngVolym * tblFluids("Pperml")
	magnesiumjoner = sngVolym * tblFluids("Mgperml")
	energi = sngVolym * tblFluids("Eperml")

Set tblFluids = Nothing

 
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat,  Magnesium, Energi ) VALUES(#" & d & "#,'" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
    

	[B]vatskeb.Execute strSQL, , 128[/B]
End if
 Next
            
vatskeb.close
Set vatskeb = Nothing

När sidan "körs" får jag följande fel:

Microsoft JET Database Engine error '80040e14'

Number of query values and destination fields are not the same.

/vatskebalans/forslag205.asp, line 37

rad 37 är med fetstil
Själv utskriften av strSQK

INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#2003-12-22#,'14',3, '111', 0,15, 0,06, 0,21, 0,03, 0, 1,2)

stämmer
Vad är felet då?
Om ni vill kan ni se själva

Medlem sedan apr. 20003 174 inlägg
#2

Enligt din sql-sats försöker du stoppa in 15 värden, i 10 olika kolumner och det fungerar inte.
Dina kommatecken i VALUES skapar problem - använde punkter istället för kommatecken.

ex.

1,15 = 1.15

Medlem sedan mars 2002823 inlägg
#3

Palle skrev:

Dina kommatecken i VALUES skapar problem - använde punkter istället för kommatecken.

Ok, så långt hänger jag med. Men då behöver jag väl ändra i (access-)databasfälten också - eller?

Medlem sedan mars 2002823 inlägg
#4

Palle skrev:

..... 1,15 = 1.15

Därför har jag försökt med ett litet "Replace"

v = CSng(Request.Form("volym" & lngFluidID))
	n = sngVolym * tblFluids("Naperml")
	k = sngVolym * tblFluids("Kperml")
	c = sngVolym * tblFluids("Clperml")
	f = sngVolym * tblFluids("Pperml")
	m = sngVolym * tblFluids("Mgperml")
	e = sngVolym * tblFluids("Eperml")
	sngVolym = Replace (v, ",", ".")
	najoner = Replace (n, ",", ".")
	kaliumjoner = Replace (k, ",", ".")
	kloridjoner = Replace (c, ",", ".")
	fosfatjoner = Replace (f, ",", ".")
	magnesiumjoner = Replace (m, ",", ".")
	energi = Replace (e, ",", ".")

Men multiplikationen blir hela tiden = 0

Medlem sedan mars 2002823 inlägg
#5

Äntligen VERKAR det funka! Tack @nders :bire

Jag gjorde som @nders rekomenderade och ändrade mitt strSQL till

strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat,  Magnesium, Energi ) VALUES(#" & d & "#,'" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "', " & Replace(najoner, ",", ".") & ", " & Replace(kaliumjoner, ",", ".") & ", " & Replace(kloridjoner, ",", ".") & ", " & Replace(fosfatjoner, ",", ".") & ", " & Replace(magnesiumjoner, ",", ".") &", " & Replace(energi, ",", ".") &")"
Medlem sedan mars 2002823 inlägg
#6

allt fungerade bra, ända tills jag ville få med även tiden.
Så jag la till en kolumn = tidpunkt i databasen och ändrade koden (se fetstilta)

<%
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open

pnr= Request.Form("personnr")
d = FormatDateTime(Date, 2)
[B]t = FormatDateTime(Date, 4)[/B]

For each formObj in Request.Form
     If left(formObj,9) = "leggatill" Then
            lngFluidID = Replace(Request.Form(formObj), "leggatill", "")

strSQL = "SELECT * FROM tblFluids, tblVetskebalans WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND tblFluids.FluidID = " & lngFluidID
Set tblFluids = vatskeb.Execute(strSQL)
	sngVolym = CSng(Request.Form("volym" & lngFluidID))
	najoner = sngVolym * tblFluids("Naperml")
	kaliumjoner = sngVolym * tblFluids("Kperml")
	kloridjoner = sngVolym * tblFluids("Clperml")
	fosfatjoner = sngVolym * tblFluids("Pperml")
	magnesiumjoner = sngVolym * tblFluids("Mgperml")
	energi = sngVolym * tblFluids("Eperml")

Set tblFluids = Nothing

 
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat,  Magnesium, Energi, [B]tidpunkt[/B]) VALUES(#" & d & "#,'" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &", [B]#" & t & "#[/B])"
    
Response.Write strSQL
vatskeb.Execute strSQL, , 128
End if
Next
            
vatskeb.close
Set vatskeb = Nothing

Response.Redirect "meny.htm"

%>

Nu vägrar det hela att uppdateras*snyft*

Fälten för datum, tidpunkt och pnr är av text

Varför bråkar detta med mig??

Medlem sedan mars 2002823 inlägg
#7

Nu verkar det fungera:

<%@ Language=VBScript LCID=1053%>
 <%
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open

pnr= Request.Form("personnr")
d = FormatDateTime(Date, 2)
t = FormatDateTime(Now, 4)

For each formObj in Request.Form
     If left(formObj,9) = "leggatill" Then
            lngFluidID = Replace(Request.Form(formObj), "leggatill", "")

strSQL = "SELECT * FROM tblFluids, tblVetskebalans WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND tblFluids.FluidID = " & lngFluidID
Set tblFluids = vatskeb.Execute(strSQL)
	sngVolym = CSng(Request.Form("volym" & lngFluidID))
	najoner = sngVolym * tblFluids("Naperml")
	kaliumjoner = sngVolym * tblFluids("Kperml")
	kloridjoner = sngVolym * tblFluids("Clperml")
	fosfatjoner = sngVolym * tblFluids("Pperml")
	magnesiumjoner = sngVolym * tblFluids("Mgperml")
	energi = sngVolym * tblFluids("Eperml")

Set tblFluids = Nothing

 
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat,  Magnesium, Energi, tidpunkt) VALUES('" & d & "', '" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "', " & Replace(najoner, ",", ".") & ", " & Replace(kaliumjoner, ",", ".") & ", " & Replace(kloridjoner, ",", ".") & ", " & Replace(fosfatjoner, ",", ".") & ", " & Replace(magnesiumjoner, ",", ".") &", " & Replace(energi, ",", ".") &", '" & t & "')" 
vatskeb.Execute strSQL, , 128
Response.Write strSQL           

End if
Next
 
vatskeb.close
Set vatskeb = Nothing

 %>

Ger följande utskrift

INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi, tidpunkt) VALUES('2004-05-03', '17',94, '5303189453', 0, 0, 0, 0, 0, 188, '14:48')

Men som ni ser får jag "brinkster-tid"
Hur får jag till det på denna sida:

<%@ Language=VBScript LCID=1053%>
 <HTML><title>\tblvetskebalans11.asp</title>
    <BODY>
 <%
Function GetTime(currentTime)
     GetTime = DateAdd ("h", 6, currentTime)
End function

    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, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym, tblVetskebalans.Energi FROM " & _
         "tblVetskebalans, tblFluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID ORDER by Dag ASC" 
  Set objRS = objConn.Execute(strSQL)

 %>
    <TABLE border=1>
       <TR>
          <TD><B>Datum</B></TD>
         <TD><B>Tid</B></TD>

          <TD><B>Personnummer</B></TD>
          <TD><B>Vätska</B></TD>
          <TD><B>Energi</B></TD>
          <TD><B>Volym</B></TD>
       </TR>
 <%

 	    Do While Not objRS.EOF
       Response.Write "<TR><TD>" & CDate(objRS("Dag")) & "</TD>"
       Response.Write "<TD>" & objRS("tidpunkt") & "</TD>"
       Response.Write "<TD>" & objRS("PatID") & "</TD>"
       Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
       Response.Write "<TD>" & objRS("Energi") & "</TD>"
       Response.Write "<TD>" & objRS("Volym") & "</TD></TR>"
       objRS.MoveNext
    Loop
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
 %>

Får inte till det hela utan felutskrift

ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.

/vatskebalans/tblvetskebalans11.asp, line 31

Medlem sedan mars 2002823 inlägg
#8

Frågor till ovanstående:

  1. kan felutskriften bero på att vissa av tidpunktsposterna är tomma?
  2. jag använder fält av typen text. Om jag använder date/time hur skulle strsql se ut då?
Medlem sedan apr. 2004778 inlägg
#9

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

Beror på att du på rad 31 försöker skriva ut objRS("tidpunkt") men du har inte tidpunkt med i din SELECT sats.

Medlem sedan mars 2002823 inlägg
#10

Tack Patrik..
så slarvigt av mig...

286 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
138 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)