Patrick Henriksen wrote:
> Hej derude jeg er i gang med at lave mit eksamens projekt i IT,
> jeg har følgende problem at jeg ikke kan skrive til flere
> forskellige ingange i min acces datase jeg bruge asp funktionen
> submit med tilkoblet sql kode, jeg har fulgt den asp toturial der
> er på html.dk, men hvordan skrive jeg samtidigt til fx ordretabel
> og kundetabel på samme tid?
>
> MVH en newb :)
Den simple måde er, alt efter hvad du vil i kunde- og ordrer-tabellen,
først at indsætte en kunde (insert into kunde values(....)) ,
finde kundens kundeID (select kundeID from kunde where....),
indsætte ordren inkl. kundeID (insert into ordrer values.....).
Problemet med den måde er at at man reelt laver 3 separate forespørgsler,
der er uafhængige af hinanden (mere eller mindre).
Så der er en risiko for at én af de 3 forespørgsler går galt og hvis
det sker er der en risiko for at databasen indeholder fejl.
F.eks. en anden kunde bliver tilknyttet ordren.
Den, formentlig, karakter-givende måde er at bruge database-transaktioner.
En generel beskrivelse af transaktioner :
http://en.wikipedia.org/wiki/Database_transaction
Grundlæggende er transaktioner en måde at samle flere forespørgsler på
og ændringer i databasen sker _kun_ (bliver Commited) , hvis der ikke opstår
fejl i nogen
af de enkelte forespørgsler. Ved fejl laves en tilbagerulning ( Rollback )
til databasens oprindelige tilstand og database-integriteten er bevaret.
Eksempel specifik i asp med en ADO-Connection (du kan sikkert google andre):
http://www2.psacake.com:81/web/jk.asp
Læg mærke til (nederst) con.RollBackTrans hvis der opstår fejl (Err.Number
<> 0) og
con.CommitTrans hvis der _ikke_ opstår fejl.
Selve ADO-connection-objektets metoder (f.eks. BeginTrans, Execute og
RollbackTrans)
kan du se her :
http://www.w3schools.com/ado/ado_ref_connection.asp
(p.s. Der skal skelnes mellem database-transaktioner og ASP transaktioner
(@@Transaction-erklæringen) hvis du googler på ASP og Transaction )
--
Six Degrees Of Separation