---
title: "Problem med att lägga till i Datbas!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/130418-problem-med-att-lägga-till-i-datbas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Coccozz"
published: "2005-06-22T13:57:00.000Z"
updated: "2005-06-25T22:14:26.000Z"
replies: 30
views: 788
page: 1
pages: 2
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/130418-problem-med-att-lägga-till-i-datbas"
---

# Problem med att lägga till i Datbas!

_Sida 1 av 2._

## #1 — Coccozz, 2005-06-22T13:57Z

Hej!
Jag har lite problem med en sak jag sitter och filar på.
Det är nämligen såhär. Jag håller på att fixa till ett gammalt adminscript till en sida där jag visar vad som går på bio. För att lägga till alla de här filmerna känns det dock lite värdelöst att sitta och lägga in samma filmer femton gånger (efetrsom den visas just femton gånger). Istället har jag löst det så att man i ett fält väljer antal visningar och sedan bara fyller i vecka, dag och tid femton gånger. Titel, beskrivning, bild och pris behöver bara fyllas i en gång.
**För exempel: http://81.230.36.24/bio/admin_copy(1).asp**
Egen server, uppe temporärt. Skall försöka hitta annan plats inom det snaraste ;)
Problemet är som följer. Jag har inte en aning om hur jag skall få detta att fungera när jag skall lägga in det i databasen. Dagens kodsnutt ser ut såhär:

```
If Request.QueryString("do") = "add" Then

	titel	= Request.Form("titel")
	text	= Request.Form("text")
	vecka	= Request.Form("vecka")
	dag		= Request.Form("dag")
	bild	= Request.Form("bild")
	starttid= Request.Form("tid")
	pris	= Request.Form("pris")
	
'	SQL = "Insert Into bio(titel) Values('" & titel & "')"

	SQL = "Insert Into bio(titel, [text], vecka, dag, bild, starttid, pris) Values('" & titel & "', '" & text & "',"_
		& vecka & ", " & dag & ", '" & bild & "', '" & starttid &"', '" & pris & "')"
		
	Con.Execute(SQL)
	
	Session("mess") = "Händelsen är nu inlagd i databasen"
	Con.Close
	Set Con = nothing
	
	Response.Redirect "admin.asp"
End If
```

Denna snutten är dock från tiden innan jag gjorde om så att man inte behövde skriva om allt igen. Därför ber jag er hjälpa mig rätta till den så den funkar med exemplet jag bifogade.
Tack//

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

## #2 — Guffa, 2005-06-22T14:52Z

Loopa igenom raderna och hämta ut veckan för varje med Request.Form("vecka" & rad) och dagen med Request.Form("dag" & rad).

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

## #3 — Coccozz, 2005-06-22T15:30Z

Det kommer inte att fungera att bara göra så. Jag ber om ursäkt om jag var otydlig men vad jag behöver är att sätta in allt i databas en gång per "visning". Alltså, väljer jag femton visningar (se exemplet inlägg #1) så måste jag lägga til först:
vecka1, dag1, tid1, titel, text, bild, pris
sedan:
vecka2, dag2, tid2, titel, text, bild, pris
osv till vecka 15, dag15 osv. är insatta i dbn...

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

## #4 — @nders, 2005-06-22T17:34Z

Vad är då problemet med Guffas förslag?
Precis så förstår jag det också...

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

## #5 — Coccozz, 2005-06-22T18:35Z

Problemet kallas tankefel :r
Anyhow, nu har jag loopat runt lite men har nog gjort något gravt fel. Allting fungerar toppen, får inga felmeddelanden men den lägger inte till i databasen :q. Titta i exemplet i inlägg #1.
Koden ser ut:

```
<%
valtantal = request.form("antal")

Set Con = Server.CreateObject("ADODB.Connection") 
	Con.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/bio.mdb")&";"

If Request.QueryString("do") = "add" Then
	addloop=1
	do until addloop = valtantal +1

	titel	= Request.Form("titel")
	text	= Request.Form("text")
	vecka	= Request.Form("vecka'&=intloop&'")
	dag	= Request.Form("dag'&=intloop&'")
	bild	= Request.Form("bild'&=intloop&'")
	starttid= Request.Form("tid")
	pris	= Request.Form("pris")
	
'	SQL = "Insert Into bio(titel) Values('" & titel & "')"

	SQL = "Insert Into bio(titel, [text], vecka, dag, bild, starttid, pris) Values('" & titel & "', '" & text & "',"_
		& vecka & ", " & dag & ", '" & bild & "', '" & starttid &"', '" & pris & "')"
		
	Con.Execute(SQL)

	addloop = addloop+1
	loop
	
	Con.Close
	Set Con = nothing

	Session("mess") = "Händelsen är nu inlagd i databasen"
	
	Response.Redirect "admin_copy(1).asp"
End If
%>
```

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

## #6 — @nders, 2005-06-22T18:42Z

1)

```
valtantal = Cint(request.form("antal"))
```

2) Gör testutskrifter. Till exempel, innehåller *valtantal* det du förväntar dig?
3) Skriv ut SQL-frågorna och se om de ser ok ut.
4) Blir du redirectad?
5) Fundera också på att byta till OLEDB-drivern. <http://www.connectionstrings.com/>

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

## #7 — Coccozz, 2005-06-22T21:04Z

Jaha, numera ser det ut som följer:

```
<%
valtantal = Cint(request.querystring("antal"))

' Kopplingen till databasen
	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/bio.mdb")

If Request.QueryString("do") = "add" Then
	addloop=1
	do until addloop = valtantal +1

	titel	= Request.Form("titel")
	text	= Request.Form("text")
	vecka	= Request.Form("vecka'&=intloop&'")
	dag		= Request.Form("dag'&=intloop&'")
	bild	= Request.Form("bild'&=intloop&'")
	starttid= Request.Form("tid")
	pris	= Request.Form("pris")
	
'	SQL = "Insert Into bio(titel) Values('" & titel & "')"

	SQL = "Insert Into bio(titel, [text], vecka, dag, bild, starttid, pris) Values('" & titel & "', '" & text & "',"_
		& vecka & ", " & dag & ", '" & bild & "', '" & starttid &"', '" & pris & "')"
	
	Con.Execute(SQL)
	
	Con.Close
	Set Con = nothing

	addloop = addloop+1
	loop

	Session("mess") = "Händelsen är nu inlagd i databasen"
	
	Response.Redirect "admin_copy(1).asp"
End If
%>
```

Jag redirectas precis som jag skall, SQLfrågorna ser fina ut, de innehåller den informationen som jag vill att de skall...
Drivern är bytt till OLEDB... Valtantal fixad så den ger precis rätt.
WTF är fel. Ingenting landar i databasen ju =(.

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

## #8 — SannyW, 2005-06-22T22:08Z

Som jag ser det är det ett litet skriv fel.

```
	Con.Execute(SQL)
	
	Con.Close
	Set Con = nothing
```

Skall ändra till:

```
	Conn.Execute(SQL)
	
	Conn.Close
	Set Conn = nothing
```

Blir det sedan fortsatt fel så koppla bort redirect och skriv ut sql med Respone.Write för att se där finns några fel.

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

## #9 — @nders, 2005-06-23T03:15Z

Konstigt att du inte får några felmeddelanden. Du har inte *on error resume next* i koden?
Du kan inte stänga connectionobjektet i loopen heller. Lägg utanför, tillsammans med redirect.

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

## #10 — Coccozz, 2005-06-23T21:06Z

Inget on error resume next i den här koden inte. 
Däremot får jag felmeddelande när jag lägger alla connectionobjekten utanför loopen.
Meddelandet lyder:

```
Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: 'Con'
/bio/admin_copy(1).asp, line 42
```

Line 42 ligger i den här biten:

```
	addloop = addloop+1
	loop
	
	Conn.Execute(SQL)
	
	Conn.Close
	Set Conn = nothing
```

Vad är det som är fel med det här?

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

## #11 — Guffa, 2005-06-23T22:09Z

Ändra Con till Conn, som SannyW visade.

Du har inget värde i Request.Form("antal") eller Request.Querystring("antal"). Fältet "antal" ligger inte i det formulär du postar, så det värdet får du aldrig med, och du lägger inte in någon querystring som heter antal.

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

## #12 — Coccozz, 2005-06-23T23:00Z

Missade visst SannyWs inlägg helt :r
Jo, det har jag visst. Jag skriver ut värdet \<%=valtantal%\> i koden och får beroende på valt antal i formulärfältet "antal" ett tal mellan 1-15 ;). Så den biten stämmer.
Jag ändrade som SannyW skrev och får numera:

```
Feltyp:
Microsoft JET Database Engine (0x80040E0C)
Det angavs inte någon kommandotext för kommandoobjektet.
/bio/admin_copy(1).asp, line 42
```

Kodsnutten med Line42 i ligger i mitt tidigare inlägg...

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

## #13 — @nders, 2005-06-23T23:04Z

Det tyder på att du angett fel namn på variabeln som innehåller SQL-frågan. Dubbelkolla.

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

## #14 — Coccozz, 2005-06-23T23:10Z

Variabelnamnen seems to be allright. ?do=add står det på bägge två så det känns rätt reko...
Vad sjutton har jag missat :q

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

## #15 — @nders, 2005-06-23T23:11Z

Visa koden fram till c:a rad 45.

mvh

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

## #16 — Coccozz, 2005-06-23T23:13Z

Here we go then:

```
<%
intantaltider=15
valtantal = Cint(request.querystring("antal"))

' Kopplingen till databasen
	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/bio.mdb")

If Request.QueryString("delete") <> "" Then
	SQL = "Delete From bio Where id = " & Request.QueryString("delete")
	Con.Execute(SQL)
	Response.Redirect "admin.asp"
End If

If Request.QueryString("do") = "add" Then
	addloop=1
	do until addloop = valtantal +1

	titel	= Request.Form("titel")
	text	= Request.Form("text")
	vecka	= Request.Form("vecka'&=intloop&'")
	dag		= Request.Form("dag'&=intloop&'")
	bild	= Request.Form("bild'&=intloop&'")
	starttid= Request.Form("tid")
	pris	= Request.Form("pris")
	
'	SQL = "Insert Into bio(titel) Values('" & titel & "')"

	SQL = "Insert Into bio(titel, [text], vecka, dag, bild, starttid, pris) Values('" & titel & "', '" & text & "',"_
		& vecka & ", " & dag & ", '" & bild & "', '" & starttid &"', '" & pris & "')"
	
	addloop = addloop+1
	loop
	
	Conn.Execute(SQL)
	
	Conn.Close
	Set Conn = nothing
	
	Session("mess") = "Händelsen är nu inlagd i databasen"
	
	Response.Redirect "admin_copy(1).asp"
	
	End If
	%>
```

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

## #17 — @nders, 2005-06-23T23:16Z

1) byt:

```
	vecka	= Request.Form("vecka'&=intloop&'")
	dag		= Request.Form("dag'&=intloop&'")
	bild	= Request.Form("bild'&=intloop&'")
```

till:

```
	vecka	= Request.Form("vecka" & intloop)
	dag	= Request.Form("dag" & intloop)
	bild	= Request.Form("bild" & intloop)
```

2) lägg in exekvering av SQL-frågan i loopen, annars körs ju bara den sista.

Delete-delen kommer inte heller fungera, du har fortfarande fel namn på connectionobjektet där.

Mv

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

## #18 — Coccozz, 2005-06-23T23:20Z

Kod byt och slutet på loopen ser nu ut såhär:

```
	Conn.Execute(SQL)
	
	addloop = addloop+1
	loop
```

Lik förbannat envisas det med att inte lägga till något och ändå inte visa felmeddelande... Jag fattar absolut ingenting längre.
R// Deletegrejjen fixad

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

## #19 — @nders, 2005-06-23T23:22Z

Och utskriften av alla SQL-frågor ser OK ut?

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

## #20 — Coccozz, 2005-06-23T23:26Z

Nu funkar ingenting? Har tagit bort response.redirect satsen men fortfarande redirectas jag efter att jag har skickat in formuläret? Även prövat att uppdatera med CTRL + F5.
Nu går jag och lägger mig. Orkar inte med...

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/130418-problem-med-att-lägga-till-i-datbas  
Nästa sida: https://www.webforum.nu/amne/asp/130418-problem-med-att-lägga-till-i-datbas/page2.md
