/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Find Unique Id fra sidste insert i Access
Fra : Claus Marcussen


Dato : 20-02-05 18:12

Hej allesammen.

Det har sikkert været vendt før, men jeg kan altså ikke huske
det.

Efter en insert i Access, hvordan finder jeg så værdien fra et
autonummereret felt ??

På forhånd tak
Claus Marcussen
P.S. Der er ingen dyr i min email

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Casper Bang (20-02-2005)
Kommentar
Fra : Casper Bang


Dato : 20-02-05 18:58

> Efter en insert i Access, hvordan finder jeg så værdien fra et
> autonummereret felt ??

Jeg ved ikke om det gøres på samme måde i access som det gøres på SQL
Server.
Men hvis det gør, bruger du:

db.execute("INSERT INTO 'blaaa ...
Set rs = db.execute("SELECT @@IDENTITY")
response.write rs(0) 'rs(0) er dit ID



NoMoreSpam (20-02-2005)
Kommentar
Fra : NoMoreSpam


Dato : 20-02-05 22:08

"Claus Marcussen"
> Det har sikkert været vendt før, men jeg kan altså ikke huske
> det.
>
> Efter en insert i Access, hvordan finder jeg så værdien fra et
> autonummereret felt ??
>
> På forhånd tak
> Claus Marcussen
> P.S. Der er ingen dyr i min email

Hej Claus
Der er ikke nogen 100% sikker løsning i Access, du kan søge på
det insert du lige har lavet efter nogle værdier som skal være rimelig
unikke, hvis du for eksempel har indsat Fornavn, Efternavn og Postnr
i en medlemstabel, kan du skrive

Select ID from tblMedlem Where tblMedlem.Fornavn = '" & strFornavn & "' AND
tblMedlem.Efternavn = '" & strEfternavn & "' AND tblMedlem.Postnummer = '" &
strPostnummer & "';"

Hvis du har to personer der hedder det samme og bor i samme by, har du et
problem.
Du kan så i din tabel have to felter: OprettetDato og OprettetTid, hvis du
tager dem med
i søgningen, er du tæt på at være 100% sikker på at finde ID fra den post du
lige har
oprettet.

P.S. Jeg hader osse når der er bugs i emailen.
--
Med venlig hilsen
Tom Jensen

Læs mere om databaser og asp her:
http://www.FFSoft.dk



Casper Bang (20-02-2005)
Kommentar
Fra : Casper Bang


Dato : 20-02-05 22:15

> Der er ikke nogen 100% sikker løsning i Access

Hvis man ikke kan bruge @@IDENTITY, kan man jo stadig bruge et recordsæt til
at insætte med - dér er du 100% sikker på at få fat i det rigtige ID.
Du kan se eksempler her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adoce31/html/adoguide_14.asp
det du mere specifikt skal bruge er noget i retning af:

'This statement creates a new record.
rs.AddNew
'These two statements use the fields collection
'to add data to the recordset.
rs.Fields("firstfield") = "Active Data Objects"
rs.Fields("secondfield") = 1.8
'This statement modifies the database
'based on the recordset.
rs.Update
response.write rs("id") 'udskriver det nye ID



NoMoreSpam (20-02-2005)
Kommentar
Fra : NoMoreSpam


Dato : 20-02-05 22:40

> > Der er ikke nogen 100% sikker løsning i Access

"Casper Bang"
> Hvis man ikke kan bruge @@IDENTITY, kan man jo stadig bruge et recordsæt
til
> at insætte med - dér er du 100% sikker på at få fat i det rigtige ID.
> Du kan se eksempler her:
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adoce31/html/adoguide_14.asp
> det du mere specifikt skal bruge er noget i retning af:
>
> 'This statement creates a new record.
> rs.AddNew
> 'These two statements use the fields collection
> 'to add data to the recordset.
> rs.Fields("firstfield") = "Active Data Objects"
> rs.Fields("secondfield") = 1.8
> 'This statement modifies the database
> 'based on the recordset.
> rs.Update
> response.write rs("id") 'udskriver det nye ID

Hej Casper
Dokumentationen går på Win CE, jeg er da ikke sikker på at det virker
under alle omstændigheder, hvis der er mange brugere der tilføjer i den
samme
tabel, kan det godt være usikkert om den post man lige har tilføjet, er lig
med det ID man finder. Jeg kan ingen steder i dokumentationen se at det er
anderledes. Den globale variabel @@IDENTITY findes i MSSQL, men
desværre ikke i MSACCESS.

--
Med venlig hilsen
Tom Jensen

Læs mere om databaser og asp her:
http://www.FFSoft.dk



Lars Hoffmann (20-02-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 20-02-05 23:16

NoMoreSpam wrote:
>>>Der er ikke nogen 100% sikker løsning i Access
>
>
> "Casper Bang"
>
>>Hvis man ikke kan bruge @@IDENTITY, kan man jo stadig bruge et recordsæt
>
> til
>
>>at insætte med - dér er du 100% sikker på at få fat i det rigtige ID.
>>Du kan se eksempler her:
>>
>
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adoce31/html/adoguide_14.asp
>
>>det du mere specifikt skal bruge er noget i retning af:
>>
>> 'This statement creates a new record.
>>rs.AddNew
>>'These two statements use the fields collection
>>'to add data to the recordset.
>>rs.Fields("firstfield") = "Active Data Objects"
>>rs.Fields("secondfield") = 1.8
>>'This statement modifies the database
>>'based on the recordset.
>>rs.Update
>>response.write rs("id") 'udskriver det nye ID
>
>
> Hej Casper
> Dokumentationen går på Win CE, jeg er da ikke sikker på at det virker
> under alle omstændigheder,

Jamen det skal jeg så garantere at det gør

> hvis der er mange brugere der tilføjer i den
> samme
> tabel, kan det godt være usikkert om den post man lige har tilføjet, er lig
> med det ID man finder.

Hvis man bruger den metode som Casper Bang foreslår, holder man netop fat i
det samme recordset ved indsætning og efterfølgende aflæsning af ID. Problemet
opstår kun hvis man først bruger en INSERT og derefter en SELECT, men addnew
er skudsikker.

Med venlig hilsen
Lars Hoffmann

NoMoreSpam (21-02-2005)
Kommentar
Fra : NoMoreSpam


Dato : 21-02-05 16:51

> Hvis man bruger den metode som Casper Bang foreslår, holder man netop fat
i
> det samme recordset ved indsætning og efterfølgende aflæsning af ID.
Problemet
> opstår kun hvis man først bruger en INSERT og derefter en SELECT, men
addnew
> er skudsikker.
>
> Med venlig hilsen
> Lars Hoffmann

Hej Lars

Det lyder da nemt, jeg vil prøve den metode næste gang
jeg har brug for at kende ID på den post jeg lige har oprettet

--
Med venlig hilsen
Tom Jensen

Læs mere om databaser og asp her:
http://www.FFSoft.dk



Peter [5260] (21-02-2005)
Kommentar
Fra : Peter [5260]


Dato : 21-02-05 00:24

"Claus Marcussen" <claus.zebra.marcussen@mail.tiger.dk> skrev i en
meddelelse news:4218c4c2$0$29282$14726298@news.sunsite.dk...
> Hej allesammen.
>
> Det har sikkert været vendt før, men jeg kan altså ikke huske
> det.
>

http://www.aspfaq.com/show.asp?id=2174

Er også diskuteret i ms-access gruppen!

Mvh
Peter



lars@intercambiodvd.~ (23-02-2005)
Kommentar
Fra : lars@intercambiodvd.~


Dato : 23-02-05 11:09

NoMoreSpam wrote:

> Det lyder da nemt, jeg vil prøve den metode næste gang
> jeg har brug for at kende ID på den post jeg lige har oprettet

En anden skudsikker måde er at tilføje ID'et på den nuværrende
session til tabellen hvori der indsættes, således at SQL sætning ser
ud noget i stil med:

SQL ="INSERT INTO minTabel (felt1, felt2, feltN, feltSession) " _
& "VALUES (vaerdi1,vaerdi2,vaerdiN,'" & session.SessionID & "')"

og derefter kan det autonumeriske felt trækkes ud med:

SQL ="SELECT max(id) as maxID FROM minTabel " _
& "WHERE feltSession ='" & session.SessionID & "'"

Da to brugere ikke kan have samme sessionID, vil dette også virke.

Med venlig hilsen
Lars Hoffmann


Casper Bang (23-02-2005)
Kommentar
Fra : Casper Bang


Dato : 23-02-05 11:58

> En anden skudsikker måde er at tilføje ID'et på den nuværrende
> session til tabellen hvori der indsættes, således at SQL sætning ser
> ud noget i stil med:

Det er rigtigt - det vil virke.
Jeg tror dog bare ikke det vil blive betragtet som "godt database-design".
Det vil i hvert fald ikke leve op til Boyce-Codd's normalform.



lars@intercambiodvd.~ (23-02-2005)
Kommentar
Fra : lars@intercambiodvd.~


Dato : 23-02-05 12:04

Casper Bang wrote:

> Det vil i hvert fald ikke leve op til Boyce-Codd's normalform.

Jeg må indrømme jeg ikke kan gennemskue hvorfor det ikke skulle kunne
det, måske du kunne uddybe lidt?
Med venlig hilsen
Lars Hoffmann


Casper Bang (23-02-2005)
Kommentar
Fra : Casper Bang


Dato : 23-02-05 13:41

>> Det vil i hvert fald ikke leve op til Boyce-Codd's normalform.
> Jeg må indrømme jeg ikke kan gennemskue hvorfor det ikke skulle kunne
> det, måske du kunne uddybe lidt?

Jeg kan da prøve :)
Boyce-Codds normalform siger at: (det første A står på hovedet)
A FD : X -> A: X er superkey
eller på dansk:
For alle funktionelle afhængigheder hvor X bestemmer A, gælder at X er en
supernøgle.

Problemet her er at X ikke bestemmer A; din primary key (eller andre
supernøgler) kan ikke siges at være bestemmende for hvilket session-ID en
bruger/række har.

For at bringe databasen på BNCF bør man derfor oprette en anden tabel, som
indeholder session-IDet, samt en foreign key til tabellen vi prøver at holde
styr på.

Hvis du er uenig med min konklussion må du meget gerne sige til :) Det ville
ikke være første gang et godt argument overbeviste mig om at jeg tog fejl
:-Þ

MVH
~Casper



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste