Hallo zusammen,
ich muss gerade an einer Eventdatenbank rumbasteln und habe ein kleines Problem. Ich habe eine Tabelle namens "personen" und eine Tabelle namens "hotels". Die Personendaten sollen aktualisierbar sein das klappt auch ohne weiteres jetzt will ich aber gleichzeitig noch ein Feld der Tabelle "hotels" aktualisieren wie muss ich denn das machen? Ich bekomme jedes mal eine Fehlermeldung. Hier ist mein Code den ich bis jetzt für die aktualisierungsseite habe, dieser aktualisiert im moment nur die Personendaten:
<!-- #include file="ADOVBS.inc" -->
<%
dim rsSave
dim Person
Person=Request.Querystring("nr")
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Eventdatenbank","",""
Set rsSave = Server.CreateObject("ADODB.Recordset")
rsSave.open "personen", conn, adOpenDynamic, adLockOptimistic, adCmdTable
rsSave.find "nr=" & request.querystring("nr")
rsSave("Einladung_erhalten") = request.form("Einladung")
rsSave("Angemeldet") = request.form("Angemeldet")
rsSave("Anrede") = request.form("Anrede")
rsSave("Vorname") = request.form("Vorname")
rsSave("Nachname") = request.form("Nachname")
rsSave("Position") = request.form("Position")
rsSave.update
rsSave.close
set rsSave = Nothing
response.redirect("showdetails.asp?nr=" & Person)
%>
wenn ich jetzt hier aber rsSave.open "personen,hotels", conn, adOpenDynamic, adLockOptimistic, adCmdTable
mache wird die seite zwar geladen aber sobald ich auf aktualisieren drücke bekomme ich ne Fehlermeldung :(
Kann mir da jemand weiterhelfen?
Grüße Dirk
Hallo!
Probier mal, die beiden Updates nacheinander (aber in der selben Datei) zu machen, sprich:
Set rsSave = Server.CreateObject("ADODB.Recordset")
rsSave.open "personen", conn, adOpenDynamic, adLockOptimistic, adCmdTable
rsSave.find "nr=" & request.querystring("nr")
rsSave("Einladung_erhalten") = request.form("Einladung")
rsSave("Angemeldet") = request.form("Angemeldet")
rsSave("Anrede") = request.form("Anrede")
rsSave("Vorname") = request.form("Vorname")
rsSave("Nachname") = request.form("Nachname")
rsSave("Position") = request.form("Position")
rsSave.update
rsSave.close
Set rsSave = Server.CreateObject("ADODB.Recordset")
rsSave.open "hotels", conn, adOpenDynamic, adLockOptimistic, adCmdTable
rsSave.find ...
rsSave ....
...
rsSave.update
rsSave.close
...
So wie ich die Bezeichner der Objekte interpretiere, ist rsSave (ADODB.Recordset) eine einzelne Tabellenzeile, und die kann nun einmal schlecht aus zwei Tabellen kommen.
In wieweit ADO deine Requests in eine Transaktion packt, weiß ich nicht, vielleicht liest Du mal etwas in der Doku rum. "Parallele" Updates mehrerer Tabellen gehören eigentlich immer in eine Transaktion, die man mit ROLLBACK ungeschehen machen kann, wenn bei einem der Updates etwas schief geht. Ansonsten schließt man die Transaktion mit COMMIT ab.
Alexander