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
9 svar · 256 visningar · startad av plelkes
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
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
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?
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
Ä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, ",", ".") &")"
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??
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
Frågor till ovanstående:
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.
Tack Patrik..
så slarvigt av mig...