---
title: "Bör min kod byggas om?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/5850-bör-min-kod-byggas-om"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Brimba"
published: "2000-06-15T10:16:00.000Z"
updated: "2000-06-16T14:19:00.000Z"
replies: 21
views: 274
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/5850-bör-min-kod-byggas-om"
---

# Bör min kod byggas om?

_Sida 1 av 2._

## #1 — Brimba, 2000-06-15T10:16Z

Hej!

Ta en titt på min kod.

```
<%If Request.Form("HDDID") <> "" Then%>
RSObj("OrderID") = orderID
RSObj("HDDID") = Request.Form("HDDID")
RSObj("HDD") = Server.HTMLEncode(Request.Form("HDD"))
RSObj("HDDAnt") = Request.Form("HDDAnt")
TAL = Request.Form("HDDExkl")
For i = 1 To Len(TAL)
If Asc(Mid(TAL,i,1)) > 47 AND Asc(Mid(TAL,i,1)) < 58 then
var = var & Mid(TAL,i,1)
End If
Next 
RSObj("HDDExkl") = var
<%Else%>
<%End If%>
```

I en asp fil är det ca 15 sådana satser, kan man bygga om det på något sätt som gör det mindre krävande för systemet?

Tack!

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

## #2 — emission, 2000-06-15T12:29Z

Baka ihop allt till en INSERT eller UPDATE. Öppna recordset tar kraft.

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

## #3 — Brimba, 2000-06-15T12:36Z

Ser ni något fel på denna kod?

```
RSObj.Source = "tabOrder"
RSObj.Open

RSObj.AddNew
RSObj("SaljarID") = 7
RSObj.Update
orderID = RSObj("OrderID")
Session("OrderID") = orderID
RSObj.Close

RSObj.Source = "tabOrderDator"
RSObj.Open

RSObj.AddNew

If Request.Form("CPUID") <> "" Then
	If RSObj("OrderID") = orderID Then
	Else
		RSObj("OrderID") = orderID
	End If
	RSObj("CPUID") = Request.Form("CPUID")
	RSObj("CPU") = Server.HTMLEncode(Request.Form("CPU"))
	RSObj("CPUAnt") = Request.Form("CPUAnt")
	TAL = Request.Form("CPUExkl")
		For i = 1 To Len(TAL)
			If Asc(Mid(TAL,i,1)) > 47 AND Asc(Mid(TAL,i,1)) < 58 then
				var = var & Mid(TAL,i,1)
			End If
		Next 
	RSObj("CPUExkl") = var
Else
End If

If Request.Form("RAMID") <> "" Then
	If RSObj("OrderID") = orderID Then
	Else
		RSObj("OrderID") = orderID
	End If
RSObj("RAMID") = Request.Form("RAMID")
RSObj("RAM") = Server.HTMLEncode(Request.Form("RAM"))
RSObj("RAMAnt") = Request.Form("RAMAnt")
TAL = Request.Form("RAMExkl")
For i = 1 To Len(TAL)
If Asc(Mid(TAL,i,1)) > 47 AND Asc(Mid(TAL,i,1)) < 58 then
var = var & Mid(TAL,i,1)
End If
Next 
RSObj("RAMExkl") = var
Else
End If

RSObj.Update
RSObj.Close

RSObj.Source = "tabOrderArt"
RSObj.Open
RSObj.AddNew

If Request.Form("ArtID") <> "" Then
RSObj("OrderID") = orderID
RSObj("ArtID") = Request.Form("ArtID")
RSObj("Artikel") = Server.HTMLEncode(Request.Form("Artikel"))
RSObj("ArtAnt") = Request.Form("ArtAnt")
TAL = Request.Form("ArtExkl")
For i = 1 To Len(TAL)
If Asc(Mid(TAL,i,1)) > 47 AND Asc(Mid(TAL,i,1)) < 58 then
var = var & Mid(TAL,i,1)
End If
Next 
RSObj("ArtExkl") = var
Else
End If

RSObj.Update
RSObj.Close
Set RSObj = Nothing
Connection.Close
```

Det är här jag får det där felmeddelandet som jag har tidigare, det beror nämnligen på att jag inte får in orderID från tabOrder i tabOrderDator. Men jag har en liknande som ser ut så här:

```
RSObj.Source = "tabOrder"
RSObj.Open

RSObj.AddNew
RSObj("SaljarID") = 7
RSObj.Update
orderID = RSObj("OrderID")
Session("OrderID") = orderID
RSObj.Close

RSObj.Source = "tabOrderArt"
RSObj.Open

RSObj.AddNew
RSObj("OrderID") = orderID
RSObj("ArtID") = Request.Form("prodID")
RSObj("Artikel") = Server.HTMLEncode(Request.Form("ArtNamn"))
RSObj("ArtAnt") = Request.Form("Antal")

TAL = Request.Form("ArtExkl")
For i = 1 To Len(TAL)
If Asc(Mid(TAL,i,1)) > 47 AND Asc(Mid(TAL,i,1)) < 58 then
var = var & Mid(TAL,i,1)
End If
Next 
RSObj("ArtExkl") = var

RSObj.Update
RSObj.Close
Set RSObj = Nothing
Connection.Close
```

Och där fungerar allting perfekt.

Jag är förbryllad!

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

## #4 — Vide, 2000-06-15T13:18Z

Vad för du för felmeddelande?

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

## #5 — Brimba, 2000-06-15T13:19Z

Microsoft OLE DB Provider for ODBC Drivers error '80040e2f' 

\[Microsoft\]\[ODBC Microsoft Access 97 Driver\] You can't add or change a record because a related record is required in table 'tabOrder'. 

/kategori/addpaket.asp, line 548

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

## #6 — Brimba, 2000-06-15T13:20Z

Line 548 är:
If Request.Form("RAMID") \<\> "" Then
If RSObj("OrderID") = orderID Then
Else
RSObj("OrderID") = orderID
End If
RSObj("RAMID") = Request.Form("RAMID")
RSObj("RAM") = Server.HTMLEncode(Request.Form("RAM"))
RSObj("RAMAnt") = Request.Form("RAMAnt")
TAL = Request.Form("RAMExkl")
For i = 1 To Len(TAL)
If Asc(Mid(TAL,i,1)) \> 47 AND Asc(Mid(TAL,i,1)) \< 58 then
var = var & Mid(TAL,i,1)
End If
Next 
RSObj("RAMExkl") = var
Else
End If

RSObj.Update (Detta är rad 548)
RSObj.Close

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

## #7 — Brimba, 2000-06-15T13:36Z

Hej!

Jag har löst problemet.

Tack ändå!

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

## #8 — Brimba, 2000-06-15T13:37Z

> Baka ihop allt till en INSERT eller UPDATE. Öppna recordset tar kraft.

Jag kör ju bara en Update/Insert. Det är väl så ihopbakat det kan bli?

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

## #9 — emission, 2000-06-15T14:03Z

Nu ser jag att du kör med ett öppet recordset för att kunna plocka ut "senaste id". Men, om du prompt vill optimera sidan, så kan du i alla fall göra en vanlig SQL-INSERT/UPDATE i nästa steg. Det blir ingen jätteskillnad, men liiite...

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

## #10 — nanne, 2000-06-16T07:47Z

För att optimera det ännu mer så gör en funktion utav det som du använder om och om igen så slipper du t.ex. ändra i massa kod om du vill ändra nåt.

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

## #11 — Brimba, 2000-06-16T07:59Z

Man skulle typ kunna göra så här?

```
Function InsertDB(id,namn,ant,exkl)
	If Request.Form(id) <> "" Then
		If RSObj("OrderID") = orderID Then
		Else
			RSObj("OrderID") = orderID
		End If
		RSObj(id) = Request.Form(id)
		RSObj(namn) = Server.HTMLEncode(Request.Form(namn))
		RSObj(ant) = Request.Form(ant)
		TAL = Request.Form(exkl)
			For i = 1 To Len(TAL)
				If Asc(Mid(TAL,i,1)) > 47 AND Asc(Mid(TAL,i,1)) < 58 then
				var = var & Mid(TAL,i,1)
				End If
			Next 
		RSObj(exkl) = var
	Else
End If
End Function
```

Och sedan anropa med tex

InsertDB(RAMID,RAM,RAMAnt,RAMExkl)

Är det så du menar?

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

## #12 — emission, 2000-06-16T08:17Z

...fast en Sub, inte en Function

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

## #13 — Brimba, 2000-06-16T08:19Z

Exempel på en Sub?

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

## #14 — emission, 2000-06-16T09:28Z

Byt bara ordet Function till Sub, så blir det en sub.

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

## #15 — Brimba, 2000-06-16T10:28Z

Beskriv skillnaden mellan Sub och Funktion och vad man använder de olika till, så skulle jag bli glad.

Tack!

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

## #16 — Vide, 2000-06-16T10:51Z

En "function" skickar tillbaks information, medans en "Sub" bara utför det angivna (alltså skickas den inte någon info tillbaks)...

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

## #17 — Brimba, 2000-06-16T11:13Z

Hej!

Det bör alltså fungera att göra så här:

```
Sub InsertDB(id,namn,ant,exkl)
	If Request.Form(id) <> "" Then
		If RSObj("OrderID") = orderID Then
		Else
			RSObj("OrderID") = orderID
		End If
		RSObj(id) = Request.Form(id)
		RSObj(namn) = Server.HTMLEncode(Request.Form(namn))
		RSObj(ant) = Request.Form(ant)
		TAL = Request.Form(exkl)
			For i = 1 To Len(TAL)
				If Asc(Mid(TAL,i,1)) > 47 AND Asc(Mid(TAL,i,1)) < 58 then
				var = var & Mid(TAL,i,1)
				End If
			Next 
		RSObj(exkl) = var
	Else
	End If
End Sub
```

```
InsertDB(CPUID,CPU,CPUAnt,CPUExkl)
InsertDB(RAMID,RAM,RAMAnt,RAMExkl)
InsertDB(HDDID,HDD,HDDAnt,HDDExkl)
```

osv...

Och få samma resultat?

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

## #18 — Vide, 2000-06-16T11:19Z

Japp! Men problemet är väl att du inte kan få ut variabeln RSObj(exkl) utanför subben... då är det nog bättre att köra en funktion... och byt ut RSObj(exkl) mot InsertDB, eller nått...

Detta såklart om du skall ha tillbaks något... annars använder du din kod ovan...

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

## #19 — emission, 2000-06-16T11:42Z

...men utan parenteser

InsertDB CPUID,CPU,CPUAnt,CPUExkl
InsertDB RAMID,RAM,RAMAnt,RAMExkl 
InsertDB HDDID,HDD,HDDAnt,HDDExkl

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

## #20 — Brimba, 2000-06-16T11:53Z

Men, eftersom detta är sidan där allting läggs in i databasen så skall ju ingenting mer skrivas ut. Utan efter att kommandot är utfört så är det en redirect längst ner på sidan, så jag behöver aldrig få ut något.

Så då fungerar det perfekt säkert.

Tack!

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/5850-bör-min-kod-byggas-om  
Nästa sida: https://www.webforum.nu/amne/asp/5850-bör-min-kod-byggas-om/page2.md
