---
title: "Uppdatera databasen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/90554-uppdatera-databasen"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "plelkes"
published: "2003-11-16T16:30:20.000Z"
updated: "2003-11-23T17:29:02.000Z"
replies: 48
views: 1100
page: 1
pages: 3
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/90554-uppdatera-databasen"
---

# Uppdatera databasen

_Sida 1 av 3._

## #1 — plelkes, 2003-11-16T16:30Z

Hej [jag listar](http://www12.brinkster.com/vatskebalans/knapp_i1.asp)  innehållet i en databas med koden

```
<%@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, tblFluids.FluidID 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>&nbsp;</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 f.FluidNamn, ft.TypeNamn, ft.TypeID, f.FluidID 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)
%>
<table width="400" border="1">
<form name="fylla" method="post" action="uppdatera.asp">
<%
Do While Not objRS.EOF
     Response.Write "<TR><TD><INPUT NAME=""leggatill"" TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"				
     Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
	 Response.Write "<TD><INPUT NAME=""volym"" TYPE=""text""></TD></TR>"
       objRS.MoveNext
    Loop
End If
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
 %>
	</form></table>
<input type="submit" value="Lägg till Vätskebalansen">

</BODY>
</HTML>
```

 
Själva uppdateringssidan (uppdatera.asp)

```
<%

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")

sort = Request.Form("FluidID")
mgd = Request.Form("volym")

strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & sort & "','" & mgd & "' )"
vbalans.Execute( strSQL )
Set gbok = Nothing

    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
	Response.Redirect "knapp_i1.asp"

 %>
```

 
Men när jag trycker på knappen händer nada...
Det jag vill skall hända:

1. på sidan knapp_i1.asp skall rutan kryssas i
2. på sidan knapp_i1.asp skall txtrutan fyllas i
3. tablelen tblVetskebalans skall fyllas i
4. tillbaka till sidan knapp_i1.asp
5. möjlighet att välja nästa vtske-sort

Permalänk: https://www.webforum.nu/p/90554

## #2 — Jesper T, 2003-11-16T18:20Z

Börja med att lägga submit-knappen inanför form-taggarna. ;)

Permalänk: https://www.webforum.nu/p/1206373

## #3 — plelkes, 2003-11-17T18:22Z

> Börja med att lägga submit-knappen inanför form-taggarna.

 
Nu har jag gjort detta.
Men får fel

> Microsoft JET Database Engine error '80040e07' 
> 
> Data type mismatch in criteria expression. 
> 
> /vatskebalans/uppdatera.asp, line 11

 

```
<%

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")

sort = Request.Form("FluidID")
mgd = Request.Form("volym")

strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & sort & "','" & mgd & "' )"
	[B]Set objRS = objConn.Execute(strSQL)[/B]
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
	Response.Redirect "knapp_i1.asp"

 %>
```

 rad 11 är fet-markerad

Permalänk: https://www.webforum.nu/p/1207012

## #4 — Jesper T, 2003-11-17T18:27Z

Vad har du för enheter/datatyper i databasen?

Permalänk: https://www.webforum.nu/p/1207016

## #5 — plelkes, 2003-11-17T18:29Z

förstår inte riktigt frågan...
Skickar därför med databasen

Bilagor:

- [vbalans.zip](https://www.webforum.nu/a/2310.zip)

Permalänk: https://www.webforum.nu/p/1207017

## #6 — Jesper T, 2003-11-17T18:31Z

```
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "'," & sort & "," & mgd & " )"
```

Permalänk: https://www.webforum.nu/p/1207019

## #7 — plelkes, 2003-11-17T18:35Z

> Microsoft JET Database Engine error '80040e14' 
> 
> Syntax error in INSERT INTO statement.

Permalänk: https://www.webforum.nu/p/1207022

## #8 — Jesper T, 2003-11-17T18:36Z

Passa på och ändra även dessa:

```
sort = cInt(Request.Form("FluidID"))
mgd = cInt(Request.Form("volym"))
```

Permalänk: https://www.webforum.nu/p/1207023

## #9 — Jesper T, 2003-11-17T18:40Z

Jag ser att dina fält har samma namn, jag föreslår att du skapar någon slags loop för du kommer ju absolut att få fel om du lägger in olika värden i de olika fälten.

Permalänk: https://www.webforum.nu/p/1207027

## #10 — @nders, 2003-11-17T18:41Z

> **Jesper T skrev:**
>
> Passa på och ändra även dessa:
>
> ```
> sort = cInt(Request.Form("FluidID"))
> mgd = cInt(Request.Form("volym"))
> ```

Det har en mindre betydelse, eftersom värdena ändå blir strängar när de läggs till SQL-frågan.

Har man syntaxfel i SQL-frågor finns det alltid två saker man kan göra:

1) Se till att du inte använt något reserverat ord som tabell- eller fältnamn. Kontrollera på exempelvis <http://aspfaq.com/show.asp?id=2080> .
2) Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera. Det är mycket lättare att felsöka då.

Mvh

Permalänk: https://www.webforum.nu/p/1207029

## #11 — plelkes, 2003-11-17T18:46Z

> Se till att du inte använt något reserverat ord som tabell- eller fältnamn. Kontrollera...

 Hittar inte att jag skulle ha använt reserverat namn

> Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera

 
Menar du 

```
Response.Write strSQL
```

Permalänk: https://www.webforum.nu/p/1207032

## #12 — Jesper T, 2003-11-17T18:48Z

Japp, med ett litet tillägg.

```
Response.Write strSQL
Response.end
```

Permalänk: https://www.webforum.nu/p/1207033

## #13 — @nders, 2003-11-17T18:52Z

> **plelkes skrev:**
>
> Hittar inte att jag skulle ha använt reserverat namn

Inte jag heller. Det var mest ett generellt tips, det händer alldeles för ofta att folk får massor med problem för att de använder reserverade ord som tabell- eller fältnamn.

Permalänk: https://www.webforum.nu/p/1207035

## #14 — plelkes, 2003-11-17T18:59Z

> Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera

Menar ni att sidan bör se ut:

```
<%@LANGUAGE="VBSCRIPT" "%>
<%

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")

sort = cInt(Request.Form("FluidID"))
mgd = Request.Form("volym")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "'," & sort & "," & mgd & " ')"
	Response.Write strSQL
Response.end 
    objConn.Close
    Set objConn = Nothing
	Response.Redirect "knapp_i1.asp"

 %>
```

 

Om jag [kryssar i och fyller i 222](http://www12.brinkster.com/vatskebalans/knapp_i1.asp) 
så blir resultatet:

> INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('11/17/2003 1:53:22 PM',0,222, , , ')

FluidID blir ju fel...

Permalänk: https://www.webforum.nu/p/1207039

## #15 — plelkes, 2003-11-17T19:18Z

Försökt ändra i uppdateringssidan:

```
<%
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

sort = cInt(Request.Form("FluidID"))
mgd = Request.Form("volym")

strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & sort & "','" & mgd & "')"

vatskeb.Execute( strSQL )
Set vatskeb = Nothing

Response.Redirect "knapp_i1.asp"

 %>
```

 
Får dock 

> Syntax error in INSERT INTO statement.

Permalänk: https://www.webforum.nu/p/1207052

## #16 — plelkes, 2003-11-18T17:39Z

fel på kodningen av kryssruta?

> Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera

 
Nu ser jag, förutom att jag måste ändra i strSQL, även att **FluidID**  hela tiden blir det samma och fel, nämligen 0....

[Prova gärna själv](http://www12.brinkster.com/vatskebalans/knapp_i1.asp)  :l 

Kan det vara fel i kodningen av kryssrutan??

```
<table width="400" border="1">
<form name="fylla" method="post" action="uppdatera1.asp">
<%
Do While Not objRS.EOF
     Response.Write "<TR><TD><INPUT NAME=""leggatill"" TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"				
     Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
	 Response.Write "<TD><INPUT NAME=""volym"" TYPE=""text""></TD></TR>"
       objRS.MoveNext
    Loop
End If
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
 %><input type="submit" value="Lägg till Vätskebalansen">

	</form></table>
```

Permalänk: https://www.webforum.nu/p/1207461

## #17 — @nders, 2003-11-18T17:51Z

Dina checkboxar heter *leggatill*, men du anger namnet *FluidID* när du ska hämta värdena med request.

Men, jag förstår inte riktigt hur dina requests kan fungera överhuvudtaget, då du har flera värden som tillhör varje fältnamn i formuläret, eftersom fälten finns flera gånger. Hur vet asp-koden vilket av värdena som kommer som den skall använda? Det är även anledningen till alla extra kommatecken du noterar på slutet av din SQL-fråga.

När det gäller uppdatering / insättning av flera olika poster samtidigt, tycker jag nog att det är bäst att alla formulärfält har olika namn, så man kan avgöra vilka värden som hör till samma post. Jag brukar låta alla fält sluta på något lämpligt räknarvärde.

Jag ska se om jag kan få ihop ett fungerande exempel.

Mvh

Permalänk: https://www.webforum.nu/p/1207472

## #18 — @nders, 2003-11-18T18:10Z

När du loopar ut formuläret:

```
Do While Not objRS.EOF
     Response.Write "<TR><TD><INPUT NAME=""leggatill" & objRS("FluidID") & """ TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"		
     Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
     Response.Write "<TD><INPUT NAME=""volym" & objRS("FluidID") & """ TYPE=""text""></TD></TR>"
     objRS.MoveNext
Loop
```

När du ska göra insert:

```
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

For each formObj in Request.Form
     If left(Request.Form(formObj),9) = "leggatill" Then
            lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
            strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & lngFluidID & "','" & Request.Form("volym" & lngFluidID) & "')"
            vatskeb.Execute strSQL, , 128
     End if
Next
            
vatskeb.close
Set vatskeb = Nothing

Response.Redirect "knapp_i1.asp"
```

Något sådant hade jag försökt mig på i alla fall.

Mvh

Permalänk: https://www.webforum.nu/p/1207482

## #19 — plelkes, 2003-11-18T18:23Z

Tack @nders för ditt hjälp :bire 
MEN

1. varför lägger du till objRS("FluidID") i INPUT NAME?
2. vad betyder 

   ```
   If left(Request.Form(formObj),9) = "leggatill"
   ```

    på svenska?
3. i 

   ```
   lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
   ```

   ersätter du  *leggatill*  med tomrum. Rätt? Vad är tanken bakom detta?
4. vad betyder 128?

Permalänk: https://www.webforum.nu/p/1207493

## #20 — plelkes, 2003-11-18T18:35Z

tyvärr så fungerar ej koden jag fick av @nders, eller så fattar jag fel :x 
Det som inte funkar är att det skrivs inget till databasen

[prova gärna själv](http://www12.brinkster.com/vatskebalans/knapp_i3.asp) 

knapp_i3.asp 

```
<%
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, tblFluids.FluidID 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>&nbsp;</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 f.FluidNamn, ft.TypeNamn, ft.TypeID, f.FluidID 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)
%>
<table width="400" border="1">
<form name="fylla" method="post" action="uppdatera2.asp">
<%
Do While Not objRS.EOF
     Response.Write "<TR><TD><INPUT NAME=""leggatill" & objRS("FluidID") & """ TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"		
     Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
     Response.Write "<TD><INPUT NAME=""volym" & objRS("FluidID") & """ TYPE=""text""></TD></TR>"
     objRS.MoveNext
Loop
End If
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
 %><input type="submit" value="Lägg till Vätskebalansen">

	</form></table>

<br><br>
<br>
<a href="http://www12.brinkster.com/vatskebalans/tblvetskebalans.asp">Lista tblV&auml;tskebalans inneh&aring;ll</a>
```

 
uppdatera2.asp 

```
<%
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

For each formObj in Request.Form
     If left(Request.Form(formObj),9) = "leggatill" Then
            lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
            strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & lngFluidID & "','" & Request.Form("volym" & lngFluidID) & "')"
            vatskeb.Execute strSQL, , 128
     End if
Next
            
vatskeb.close
Set vatskeb = Nothing

Response.Redirect "knapp_i3.asp"

 %>
```

Permalänk: https://www.webforum.nu/p/1207499

---

Tråden på webben: https://www.webforum.nu/amne/asp/90554-uppdatera-databasen  
Nästa sida: https://www.webforum.nu/amne/asp/90554-uppdatera-databasen/page2.md
