Hallo!
> Was ist die richtige Vorgehensweise, um mehrfache Inserts
duchzuf�hren,
> wobei das 2te / 3te Insert die ID des ersten Inserts braucht?
> Mit Guid will/ Kann ich in diesem Fall nicht arbeiten, weil ich sonst
zu
> viel �ndern muss.
>
> In der art wie:
>
> Insert into tabelle1 (feld1, feld2)
>
> insert into tabelle2 (feldx, feldy, refTab1) values("...","...",
> tabelle1.ID)
>
> Das ganze mit einem nachfolgenden select last() .... ist ja nicht
richtig,
> da jemand anderer zeitglich das selbe macht.
Die Stored Procedures von Access unterst�tzen keine Mehrfachoperationen,
also ben�tigst Du in jedem Fall mehrere Zugriffe.
> DB ist eine Access - DB. Ich meine da gibt es sowas wie @@idendity
> nicht!?!?!?
Richtig. Die ID bekommst Du entweder �ber ADO bei Verwendung eines
entsprechenden Cursors bzw. bestimmter Properties.
> Wichtig ist mir also, da� es in jedem Fall konsistent bleibt....
>
> Ich glaub transaktionen gibt es auch nur in ASP .... Es soll innerhalb
von
> Access gemacht werden :-(
Klar gibt es Transaktionen in Access. Das geh�rt zu einer richtigen
Datenbank einfach dazu. Diese kannst Du �ber entsprechende Methoden des
Connection-Objects steuern.
Mache also so etwas wie ...
Dim dbs: Set dbs = Server.CreateObject("ADODB.Connection")
Dim rs1: Set rs1 = Server.CreateObject("ADODB.Recordset")
Dim rs2: Set rs2 = Server.CreateObject("ADODB.Recordset")
dbs.CursorLocation = adUseClient
dbs.Open "...ConnectionString..."
rs1.Open "Select * from tabelle1 where id < 0), _
dbs, adOpenStatic, adLockOptimistic, adCmdText
rs2.Open "Select * from tabelle2 where id < 0), _
dbs, adOpenStatic, adLockOptimistic, adCmdText
dbs.BeginTrans
rs1.AddNew array("feld1", "feld2"), array(feld1, feld2)
refTab1 = rs1.Fields("id").value
rs2.AddNew array("feldx", "feldy", "refTab1"), array(feldx, feldy,
refTab1)
rs2.AddNew array("feldx", "feldy", "refTab1"), array(feldx, feldy,
refTab1)
dbs.CommitTrans
rs2.Close: Set rs2 = nothing
rs1.Close: Set rs1 = nothing
Set dbs = nothing
Durch "dbs.BeginTrans" und "dbs.CommitTrans" wird sicher gestellt, dass
entweder alle oder keine �nderung in der Datenbank erfolgt. Mit
"dbs.RollbackTrans" kannst Du auch selber alle �nderungen verwerfen.
Freundliche Gr��e
Joachim van de Bruck
| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp