---
title: "Frågor om hämta, lägga till data och DSN"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/12047-frågor-om-hämta-lägga-till-data-och-dsn"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "LearningASP"
published: "2001-10-05T07:51:00.000Z"
updated: "2001-10-11T14:05:00.000Z"
replies: 16
views: 273
page: 1
pages: 1
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/12047-frågor-om-hämta-lägga-till-data-och-dsn"
---

# Frågor om hämta, lägga till data och DSN

## #1 — LearningASP, 2001-10-05T07:51Z

Hej, jag har lite frågor:

1\. jag har tittat på idg´s wedstudio och sett följande sätt att lägga till data ur databasen 

```
<!-- #include virtual="/databas/adovbs.inc" --> 

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\databas\adressbok.mdb" 

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM adressbok" 

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 

RecSet.AddNew 

RecSet("Fornamn") = Request.Form("fornamn")
RecSet("Efternamn") = Request.Form("efternamn")
RecSet("Adress") = Request.Form("adress") 

RecSet.Update
RecSet.Close
Connect.Close 

[kod]

Sen hittade jag ett annat sätt här 
[kod] Öppna databasen
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "erika"
' Skapa en SQL-sträng med namnet hämtat från formuläret
SQLStmt = "INSERT INTO guests(name) VALUES('" & Request("name") & "')"

' Exekvera SQL-strängen
Connection.Execute SQLStmt

' Stäng uppkopplingen
Connection.Close
```

Det sättet de hämtar data ur databsen på webstudio är det bra eller finns det nåt annat bättre sätt??

Och sen är min fråga om DSN på webstudio står det

> Okej. Nu vet du hur man på traditionellt sätt skapar en databaskoppling. Det sätt som nyss beskrevs är dock väldigt klumpigt och omständligt. För att inte tala om hur jobbigt det är när man först har gjort en tillämpning lokalt med Personal Webbserver och sedan skall flytta allt till ett riktigt webbhotell. 
>
> Om webbhotellet dessutom är ett gratishotell kan det vara väldigt krångligt att be administratörerna för detta webbhotell att utföra denna process på sin server som vi nyss beskrivit. 
>
> Därför finns det en annan lösning på detta som avsevärt smidigare. 
>
> "driver={Microsoft Access Driver (\*.mdb)};dbq=c:\\inetpub\\wwwroot\\databasfil.mdb" 
>
> Ovanstående rad kan du skriva på alla ställen som du skall öppna din databas istället för att använda sättet där du måste skapa system-DNS via kontrollpanelen. Visst känns det enklare?

Enklare, men är det bättre??? vad vill webhottellen ha?

Tack för att Ni besvarar mina frågor

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

## #2 — Lukaspojken, 2001-10-05T08:03Z

Webstudios sätt fungerar men det är inte optimalt. Man behöver inte köra

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 
RecSet.AddNew
etc.

Utan vill man lägga in en ny rad i tabellen så använder man sig av insert likt:

```

strSQL = "INSERT INTO adressbok(Fornamn, Efternamn, adress) VALUES " &_
		"('" & Request.Form("fornamn") & "', '" & Request.Form("efternamn" & "', '" & Request.Form("adress") & "')"
Connect.Execute(strSQL)
```

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

## #3 — LearningASP, 2001-10-05T08:27Z

```
strSQL = "INSERT INTO adressbok(Fornamn, Efternamn, adress) VALUES " &_
"('" & Request.Form("fornamn") & "', '" & Request.Form("efternamn" & "', '" & Request.Form("adress") & "')"
Connect.Execute(strSQL)
```

adressbok är tabellnamnet eller

och det inom () är kolumnanen i databasen

och Request form skall stå i den ordningen de skall in i kolumnerna jag har i databasen?

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

## #4 — LarsG, 2001-10-05T08:36Z

> adressbok är tabellnamnet eller

Ja

> och det inom () är kolumnanen i databasen

Nja, i tabellen är gängse terminologi.

> och Request form skall stå i den ordningen de skall in i kolumnerna jag har i databasen?

Nej, ordningen mellan värden i values-listan skall vara samma som listan som anges efter tabellnamnet. Det är bara om man utelämnar kolumnnamnen som man måste ange värdena i samma ordning som de är definierade i tabellen.

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

## #5 — Lukaspojken, 2001-10-05T08:39Z

Vi verkar ha lite samma signatur... :)

LarsG svarade bra på dina sista frågor. Men för att skapa lite struktur och lättförstålig kod så bör man göra lite åt mitt håll...

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

## #6 — LearningASP, 2001-10-05T08:43Z

Detta kanske framstår som en dum fråga, men det är ju trots allt fredag... ;)

1\. hur vet den i vilka kolumner den skall lägga till värdena i databasen???

2 vad menar du med
 

> Det är bara om man utelämnar kolumnnamnen som man måste ange värdena i samma ordning som de är definierade i tabellen.

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

## #7 — mikul, 2001-10-05T08:43Z

japp... det stämmer...
 du kan oxå lägga request.form i en variabel då blir det så här:

strFornamn = Request.Form("fornamn") 
strEfternamn = Request.Form("efternamn")
strAdress = Request.Form("adress")
 
strSQL = "INSERT INTO adressbok(Fornamn, Efternamn, adress) VALUES " &\_
"('" & strFornamn & "', '" & strEfternamn & "', '" & strAdress & "')"
Connect.Execute(strSQL)

sen om du skall använda dig av datum så skall du ha ## i stället för ' '...
exempel:

strFornamn = Request.Form("fornamn") 
strEfternamn = Request.Form("efternamn")
strAdress = Request.Form("adress")
 
strSQL = "INSERT INTO adressbok(Fornamn, Efternamn, Adress, Datum) VALUES " &\_
"('" & strFornamn & "', '" & strEfternamn & "', '" & strAdress & "',#" & Date() & "#)"
Connect.Execute(strSQL)

och om du bara skall ha en förbestämd text så gör du så här:
strFornamn = Request.Form("fornamn") 
strEfternamn = Request.Form("efternamn")
strAdress = Request.Form("adress")
 
strSQL = "INSERT INTO adressbok(Fornamn, Efternamn, Adress, Datum, \[text\]) VALUES " &\_
"('" & strFornamn & "', '" & strEfternamn & "', '" & strAdress & "',#" & Date() & "#, 'din text')"
Connect.Execute(strSQL)

Nu kanske du såg att jag skrev \[text\]...det är för att text är ett reserverat ord och då skall ma sätta det innom \[ \]. hade det stått DinText så hade du inte behövt \[ \].

hoppas det hjälpte dig nåt...
/ Mikul

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

## #8 — mikul, 2001-10-05T08:51Z

ok det menas att du kan skriva tabellnamnen i vilken ordning du vill när du skriver INSERT INTO(tabell, tabell2, tabell1,tabell5)
men sen så måste du skriva samma ordning på Request.formarna eller vad du nu har i din VALUES() sats
exempel:
INSERT INTO(tabell, tabell2, tabell1,tabell5) VALUES('värdet i tabell', 'värdet i tabell2', 'värdet i tabell1', 'värdet i tabell5')

/ Mikul

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

## #9 — mikul, 2001-10-05T08:52Z

Välkommen LearningASP till Wf föresten.
hoppas du kommer ha en trevlig tid här på Wf...

/ Mikul

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

## #10 — LarsG, 2001-10-05T08:55Z

> 1\. hur vet den i vilka kolumner den skall lägga till värdena i databasen???

Om du skriver

```
insert into t(c1,c2) values('A','B')
```

så skapas en ny post där kolumnen c1 får värdet A och c2 värdet B. Om det finns fler kolumner i tabellen t så får dessa ett default-värde. När man skapar tabellen så kan man ange default-värden för varje kolumn. Om man inte har ett default-värde så blir kolumnen null, dvs odefinierad.

2)

Det går att skriva

```
sql = "insert into t values('A','B')"
```

dvs att man utelämnar listan med kolumner. I det fallet så måste det finnas lika många värden i values-listan som det finns kolumner i tabellen och värdena anges i samma ordning som i tabelldefinitionen.

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

## #11 — jorgen, 2001-10-05T09:21Z

> sen om du skall använda dig av datum så skall du ha ## i stället för ' '...
> exempel:

Detta är en väldigt stor sanning med modifikation. Använder man access ska # # omge datumet men använder man tex SQL server eller MySQL så ska ' ' omge datumet.

mvh Jörgen :)

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

## #12 — mikul, 2001-10-05T09:40Z

tack jörgen...jag glömde av att skriva det...
;-)

/ Mikul

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

## #13 — LearningASP, 2001-10-05T09:42Z

Är det från fall till fall och göra på det ena eller andra sättet? eller finns det klara nackdelar med nåt av dom?

Men nu har jag fått klarhet ;)

jag vill bara ha svar på en sista fråga den om DSN i mitt första inlägg

Tack..

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

## #14 — mikul, 2001-10-05T10:09Z

jag tycker att det finns klara fördelar med  INSERT INTO för att då slipper du använda dig av tex Adovbs.inc och du slipper skap ett recordset som kanske inte alltid funkar utan att använda adovbs.inc
det blir inte heller lika mycket onödig kod...

/ Mikul

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

## #15 — LearningASP, 2001-10-11T13:40Z

jag har lite nya frågor ;)

Vad använder man detta till?

```
Set objConn = Nothing
```

och när skall man använda det?

Vad använder man detta till?

```
Set rs = Server.CreateObject "ADODB.Recordset")
```

och när skall man använda det?

Vad vill webbhotellen ha
DSN eller DSN-löst

Tack på förhand

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

## #16 — LarsG, 2001-10-11T14:05Z

```
Set objConn = Nothing
```

Det använder man när inte behöver ett objekt mer. Alla resurser som objektet använt frigörs. Detta görs implicit i alla fall då sidan är färdigbehandlad så det är inte absolut nödvändigt.

```
Set rs = Server.CreateObject "ADODB.Recordset")
```

används för att skapa ett recordset. Normalt så skriver man

```
set rs = connect.execute(sql)
```

för att få ett recordset. Då skapas det implicit. Om man skapar recordsetet explicit så har man möjlighet att sätta olika options. Du kan ju läsa lite här
 <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthrstopen.asp> 

Den enda anledningen till att själv skapa ett recordset är att man vill ha ett frikopplat recordset. (Allt data lagras på klienten.)

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

## #17 — jorgen, 2001-10-11T14:05Z

Hej!

1) Du städar bort objectet

2) Du skapar ett RecSet som heter rs

Övriga)

Det bästa är om du städar så fort du är klar med ett objekt.

```
rs.close()
SET rs = Nothing
```

Ett recset skapar du bara vid en SELECT i SQL där du "lägger" hämtad data.

Det kan bara ditt webhotell svara på ;)

r: grrr, LarsG hinner alltid före :e

mvh Jörgen :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/12047-frågor-om-hämta-lägga-till-data-och-dsn
