Dirk: 2 Tabellen gleichzeitig updaten

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

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