/ 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
hjælp til ASP kode til acces
Fra : Patrick Henriksen


Dato : 29-04-08 18:36

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 :)

--
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

 
 
Michael Weber (29-04-2008)
Kommentar
Fra : Michael Weber


Dato : 29-04-08 23:18

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



Stig Johansen (30-04-2008)
Kommentar
Fra : Stig Johansen


Dato : 30-04-08 06:12

Michael Weber wrote:

> Den, formentlig, karakter-givende måde er at bruge database-transaktioner.

Er du sikker på at _Access_ understøtter transactions?

--
Med venlig hilsen
Stig Johansen

Michael Weber (30-04-2008)
Kommentar
Fra : Michael Weber


Dato : 30-04-08 18:14

Stig Johansen wrote:
> Michael Weber wrote:
>
>> Den, formentlig, karakter-givende måde er at bruge
>> database-transaktioner.
>
> Er du sikker på at _Access_ understøtter transactions?


Ja.


Eksempel :
----------------------------------------
<% @Language=VBScript %>
<% Option Explicit %>
<%

dim con
set con = server.createobject("ADODB.connection")
con.Provider="Microsoft.Jet.OLEDB.4.0"


' Databasen fra html.dk indeholdende tabellen personer.
' link til databasen : http://www.html.dk/tutorials/asp/tutorial.mdb
con.Open "C:/Websites/test/tutorial.mdb"

con.beginTrans

con.execute "Insert Into
personer(Fornavn,Efternavn,Telefon,Foedselsdato) values
('Fætter','GufIgen','99887766','20-04-1964')"

con.execute "Update personer set Fornavn = 'FætterUpdated' where
Efternavn ='Højben' "

con.execute "Delete from personer where Efternavn ='And' "

' ruller databasen tilbage til oprindelig tilstand.
con.RollBackTrans
con.close
set con = nothing

'kig i databasen og se at intet er blevet ændret.

%>

--
Six Degrees Of Separation



Stig Johansen (30-04-2008)
Kommentar
Fra : Stig Johansen


Dato : 30-04-08 21:36

Michael Weber wrote:

> Ja.
> Eksempel :
> con.Open "C:/Websites/test/tutorial.mdb"
>
> con.beginTrans
>
> con.execute "Insert Into
> personer(Fornavn,Efternavn,Telefon,Foedselsdato) values
> ('Fætter','GufIgen','99887766','20-04-1964')"
>
> con.execute "Update personer set Fornavn = 'FætterUpdated' where
> Efternavn ='Højben' "
>
> con.execute "Delete from personer where Efternavn ='And' "
>
> ' ruller databasen tilbage til oprindelig tilstand.
> con.RollBackTrans
> con.close
> set con = nothing
>
> 'kig i databasen og se at intet er blevet ændret.

Jo, men dit eksempel har sådan set ikke rigtig noget at gøre med
concurrency.

Måske - måske ikke - kører det med Access:
<http://databases.aspfaq.com/database/what-are-the-limitations-of-ms-access.html>


--
Med venlig hilsen
Stig Johansen

Michael Weber (01-05-2008)
Kommentar
Fra : Michael Weber


Dato : 01-05-08 21:55

Stig Johansen wrote:
> Michael Weber wrote:
>
>> Ja.
>> Eksempel :
>> con.Open "C:/Websites/test/tutorial.mdb"
>>
>> con.beginTrans
>>
>> con.execute "Insert Into
>> personer(Fornavn,Efternavn,Telefon,Foedselsdato) values
>> ('Fætter','GufIgen','99887766','20-04-1964')"
>>
>> con.execute "Update personer set Fornavn = 'FætterUpdated'
>> where Efternavn ='Højben' "
>>
>> con.execute "Delete from personer where Efternavn ='And' "
>>
>> ' ruller databasen tilbage til oprindelig tilstand.
>> con.RollBackTrans
>> con.close
>> set con = nothing
>>
>> 'kig i databasen og se at intet er blevet ændret.
>
> Jo, men dit eksempel har sådan set ikke rigtig noget at gøre med
> concurrency.


Hvad synes du der mangler ?




--
Six Degrees Of Separation



Stig Johansen (02-05-2008)
Kommentar
Fra : Stig Johansen


Dato : 02-05-08 06:14

Michael Weber wrote:

> Stig Johansen wrote:
>> Jo, men dit eksempel har sådan set ikke rigtig noget at gøre med
>> concurrency.
>
> Hvad synes du der mangler ?

Der mangler ikke noget kode i dit eksempel.
Jeg tvivler bare på at Access (altid) kan håndtere concurrency korrekt.

Jeg bruger ikke Access til kritiske ting, så det er ikke undersøgt.
Men jeg mener at huske da MS indførte ADO, at netop begintrans,commit og
rollback for nogle drivere var noget pseudo - clientside caching - 'noget'
for de databaser, der ikke understøtter transactions.

På den anden side var der vist også nogle rygter om at han ville bruge noget
fra MSSQLServer i Access, så jeg må indrømme at jeg er usikker.

Mht concurrency og eksempel skal man lave en case hvor der er mindst 2
samtidige processer, der skriver i databasen.

Eksempelvis:
Process1 Process2
begintrans
skriv i databasen
..... begintrans
..... skriv i databasen
opdater noget ....
..... opdater noget
............................
osv
og så afslutte med hhv commit eller rollback.

Hvis man kun kører et serielt forløb som i dit eksempel kan man ikke vide
med sikkerhed om der er tale om cachede transactions eller reel
transaktionshåndtering.

Men jeg kan sige med sikkerhed, at i 1997-1998 var der _intet_
transaktionshåndtering i Access.

--
Med venlig hilsen
Stig Johansen

Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste