webForumDet fria alternativet

error '80020009' Exception occurred

6 svar · 270 visningar · startad av plelkes

plelkesMedlem sedan mars 2002823 inlägg
#1

Säg den glädje som varar*snyft och gråt* x( x( x(
När jag på denna sida fyller i flera kryssrutor, och textfält

Så:

error '80020009' Exception occurred

När jag skriver ut strSQL

INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#2003-12-22#,'5',1, '1212121212', 0.083, 0, 0, 0, 0, 0)

Så ser jag att bara första markerade "posten" läggs till och inte som jag vill :
att för varje markerad " formObj in Request.Form" skall en ny rad skrivas till databasen

  1. förstår ni vad jag försöker göra?
  2. Kan detta åstadkommas?
  3. Hur skall då nedanstående kod ändras
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 & "', " & Replace(najoner, ",", ".") & ", " & Replace(kaliumjoner, ",", ".") & ", " & Replace(kloridjoner, ",", ".") & ", " & Replace(fosfatjoner, ",", ".") & ", " & Replace(magnesiumjoner, ",", ".") &", " & Replace(energi, ",", ".") &")"
    
	vatskeb.Execute strSQL, , 128
End if
 Next
            
vatskeb.close
Set vatskeb = Nothing
OveRRidEMedlem sedan feb. 200112 078 inlägg
#2

Jag har för mig att det innebär att det där inte finns någon data i det recordset du försöker använda, men jag kan ha fel.

strSQL = "SELECT * FROM tblFluids, tblVetskebalans WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND tblFluids.FluidID = " & lngFluidID
Set tblFluids = vatskeb.Execute(strSQL)
[b]if not tblFluids.EOF Then[/b]
	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 & "', " & Replace(najoner, ",", ".") & ", " & Replace(kaliumjoner, ",", ".") & ", " & Replace(kloridjoner, ",", ".") & ", " & Replace(fosfatjoner, ",", ".") & ", " & Replace(magnesiumjoner, ",", ".") &", " & Replace(energi, ",", ".") &")"
    
	vatskeb.Execute strSQL, , 128
[b]Else
   response.write "Inga poster att visa."
End if[/b]
plelkesMedlem sedan mars 2002823 inlägg
#3

OveRRidE skrev:

Jag har för mig att det innebär att det där inte finns någon data i det recordset du försöker använda, men jag kan ha fel.

Det stämmer, eftersom alla vätskor inte alltid innehåller(Na, K, Cl, fosfat, magnesium, energi...

Det jag är ute efter - hoppas det är genomförbart - på svenska är

  1. kolla om en kryssruta är i fylld.

  2. om Ja: kör koden

    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 & "', " & Replace(najoner, ",", ".") & ", " & Replace(kaliumjoner, ",", ".") & ", " & Replace(kloridjoner, ",", ".") & ", " & Replace(fosfatjoner, ",", ".") & ", " & Replace(magnesiumjoner, ",", ".") &", " & Replace(energi, ",", ".") &")"
        
      
    End if
    [*]nästa kryssruta
    [*]kör kryssrutan tills hela det är kollad om alla är i kryssade
    [/list=1] 
     Next
    
plelkesMedlem sedan mars 2002823 inlägg
#4

Det är inte fel på loop med kryssrutor.
Vissa fält/poster kan jag få fungera se bifogad world-dokument.

De icke fungerande fälten ger alla samma felutskrift:

error '80020009' Exception occurred in line 23

Rad 23

najoner = sngVolym * tblFluids("Naperml")

För att spara utrymme här i koden bifogar jag koden spm 1.asp...

samtliga fälten i databasen innehåller värde, om inget annat iaf värdet 0,000

Ngn som har föslag på åtgärd?

@ndersMedlem sedan juni 200032 969 inlägg
#5

Jag tror, som Override, att det beror på att recordsetet som skapas när du kör sql-frågan:

strSQL = "SELECT * FROM tblFluids, tblVetskebalans WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND tblFluids.FluidID = " & lngFluidID

är tomt. Vad vill du ska hända då? När recordsetet är tomt kan du ju inte multiplicera värden från det, eftersom det inte finns några värden i det. Därav felmeddelandet.

I Overrides inlägg är en else-del fetmarkerad. Lägg in den kod du vill ska köras om recordsetet är tomt där.

plelkesMedlem sedan mars 2002823 inlägg
#6

@nders skrev:

när du kör sql-frågan

vill jag öppna samtliga fält i tblFluids, så att jag kan hämta värden från tbFluids.Naperml, tbFluids.Kperml, tbFluids.Clperml, tbFluids.Mgperml, tbFluids.Pperml

@nders skrev:

När recordsetet är tomt kan du ju inte multiplicera värden från det, eftersom det inte finns några värden i det. Därav felmeddelandet

Men hur kan det vara tomt? Hos mig innehåller alla fält värden, även om värdet är = 0, 000

@nders skrev:

I Overrides inlägg är en else-del fetmarkerad. Lägg in den kod du vill ska köras om recordsetet är tomt där.

Om nu det är tomt - vilket jag betvivlar se ovan) så vill jag ju ändå att multiplikation och Insert skall ske..

plelkesMedlem sedan mars 2002823 inlägg
#7

Nu har jag ändrat strSQL till:

strSQL = "SELECT * FROM tblFluids WHERE FluidID = " & lngFluidID

Och det verkar funka - iaf så långt jag har hunnit testa och testat med utskrifterna

264 ms totalt · 3 externa anrop · v20260731065814-full.30151723
139 ms — hämta forumlista (db)
121 ms — hämta statistik (db)
141 ms — hämta tråd, inlägg och bilagor (db)