---
title: "Hur lägga in referens till ej ännu inlagd (id)post i db?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/13257-hur-lägga-in-referens-till-ej-ännu-inlagd-id-post-i-db"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "solbulle"
published: "2001-12-18T00:27:00.000Z"
updated: "2001-12-18T23:48:00.000Z"
replies: 12
views: 362
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/13257-hur-lägga-in-referens-till-ej-ännu-inlagd-id-post-i-db"
---

# Hur lägga in referens till ej ännu inlagd (id)post i db?

## #1 — solbulle, 2001-12-18T00:27Z

Ok, formulär för filmfaktaindatning.
Min tanke är att i ett formulär lista mina befintliga personer i databasen i olika selectboxar.
Om personen man söker finns väljer man den annars skriver man in ett nytt namn i en textruta.
Så långt allt väl.
Men... på nästa sida: add.asp som tar emot formuläret hur gör jag då?

Om en ny person och film läggs till vill jag lägga in en post, fld_p_id i tbl_movie, men jag har ju inte tillgång till det id:t eftersom posten inte är skapad ännu?

Min databas:

tbl_movie_title
\---------------
\- fld_mt_id Räknare (int autonumber)
\- fld_mt_name Text(255)
\- fld_mt_desc PM

tbl_person
\----------
\- fld_p_id Räknare (int autonumber)
\- fld_p_firstname Text(255)
\- fld_p_lastname Text(255)
\- fld_p_bio PM

tbl_movie
\---------
\- fld_m_mtid Tal
\- fld_p_id Tal
\- fld_o_id Tal 

tbl_occupation
\---------
\- fld_o_id Räknare (int autonumber)
\- fld_o_title Text

1	huvudroll
2	producent
3	biroll
4	regisör

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

## #2 — emission, 2001-12-18T00:37Z

Hej!

Du måste helt enkelt lägga in posten i tbl_movie_title först, och plocka det nya id-nummer som du får.

Hur det går till beror lite på vilken DBMS du använder. I SQL Server (och sannolikt även Access 2000) kan man...

```
strSQL="INSERT INTO tbl_movie_title (fld_mt_name,fld_mt_desc) VALUES('titel','beskrivning');SELECT @@IDENTITY"

set objRS=objConn.Execute(strSQL).Nextrecordset

[b]intID=[/b]objRS(0)
```

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

## #3 — solbulle, 2001-12-18T00:39Z

Okelidoki, jag använder mig av Access, jag får pröva din kod och hålla tummarna. :)

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

## #4 — solbulle, 2001-12-18T08:26Z

Hm... nu har jag vändit och vridit på det hela, samt sökt o läst på annat håll i forumet, men inte får jag till det.
Antingen blir det:
"Current provider does not support returning multiple recordsets from a single execution"

Eller:

"...Characters found after end of SQL statement."

??? (Kod som ovan)

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

## #5 — @nders, 2001-12-18T08:31Z

Jag tror inte att access gillar att du ställer två frågor på samma gång. Du måste nog dela upp det, och ställa två frågor.

Mvh,

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

## #6 — solbulle, 2001-12-18T23:06Z

Jag löste det på detta sätt, det var det enda som fungerade för mig:

```
	Connection.Execute(SQLStmt)
SQLStmt = "SELECT Max(fld_mt_id) As LastID FROM tbl_movie_title"
Set RS = Connection.Execute(SQLStmt)
intLastID = RS("LastID")
```

Men nu har jag fler problem.
I mitt formulär kan jag ("bara" än så länge) i en selectbox välja en person ur databasen som producent, i en annan selectbox väljer jag huvudrollsinnehavare osv.

Dessa måste jag ju lägga in som flera rader i min relationstabell tbl_movie

Hur är bästa sättet att göra det? En funktion?

(Är det någon som har synpunkter på upplägget i stort så hojta gärna!)

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

## #7 — LarsG, 2001-12-18T23:11Z

Du får göra en insert per värde. Allt måste ske inom en transaktion dock.

Att använda select max frö att få fram senast inlagda id är inte helt säkert. Det är bättre att använda select @@identity i stället.

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

## #8 — solbulle, 2001-12-18T23:14Z

Ok, jag trodde det fanns någon genväg ;)
Har sprungit rakt in i väggen vad det gäller select @@identity så jag får se om jag kan ändra på det längre fram.
(Skulle jag få betalt för den tid jag sitter o försöker o pysslar med det här vore jag rik nu...)

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

## #9 — LarsG, 2001-12-18T23:19Z

Vad är det för problem med @@identity då?

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

## #10 — solbulle, 2001-12-18T23:21Z

Jag får inte till det, tycker att jag har försökt på alla möjliga sätt..
Får mest de felmeddelanden jag skrev i tidigare inlägg.

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

## #11 — LarsG, 2001-12-18T23:29Z

Men det var väl när du lade det i samma sträng som insert?

```
strSQL="INSERT INTO tbl_movie_title (fld_mt_name,fld_mt_desc) VALUES('titel','beskrivning')"
objConn.Execute strSQL,,128

set objRS = objConn.execute("SELECT @@IDENTITY")

intID=objRS(0)
```

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

## #12 — solbulle, 2001-12-18T23:43Z

Attans! Det är nära nu. Nu kan jag lägga till datan men jag får bara ut 0 (noll) i intID?

Vad gör jag för fel nu då?

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

## #13 — solbulle, 2001-12-18T23:48Z

Det fungerar! Yes!

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/13257-hur-lägga-in-referens-till-ej-ännu-inlagd-id-post-i-db
