Hallo,
sorry, ich zerpflück dir mal deinen Quelltext.
Set conn = Server.CreateObject("ADODB.Connection") ' --- Instanzieren einer neuen Verbindung
conn.open "anmeldung","","" ' --- Öffnen der angegebenen Verbindung
%>
Kannst du die DB überhaupt öffnen, deine conn.open sieht etwas unvollständig aus :-(
<%
SQL = "Select * from T_Anmeldung where [TitelAbst] = '"&Request.Form("TitelAbst")&"'"
Set rs = Server.CreateObject("ADODB.Recordset") ' --- RecordSet-Objekt instanzieren
rs.Open sql, conn, 3, 3 ' --- Abfrage starten
%>
Spar dir das mit dem neuen Object "Recordset" und speichere das Objekt mittels set rs = conn.execute(SQL)
verkürzt den Quellcode dramatisch. :-)
<%
if rs.bof and rs.eof then
response.write("Datensatz wird angelegt")
if rs.supports(adupdate+adaddnew) then
rs.addnew
rs.fields("AnredeID")=request.form("AnredeID")
rs.fields("Titel")=request.form("Titel")
rs.fields("Vorname")=request.form("Vorname")
rs.fields("Nachname")=request.form("Nachname")
rs.fields("Institution")=request.form("Institution")
rs.fields("Strasse")=request.form("Strasse")
rs.fields("PLZ")=request.form("PLZ")
rs.fields("Ort")=request.form("Ort")
rs.fields("Land")=request.form("Land")
rs.fields("E-Mail")=request.form("E-Mail")
rs.fields("Telefon")=request.form("Telefon")
rs.fields("Fax")=request.form("Fax")
'rs.fields("Verteilerliste")=request.form("Verteilerliste")
rs.fields("Handy")=request.form("Handy")
rs.fields("TitelAbst")=request.form("TitelAbst")
rs.fields("Autor")=request.form("Autor")
rs.fields("Abstract")=request.form("Abstract")
else
response.write("Aktualisierung nicht möglich")
end if
else
response.write("Titel des Abstracts ist bereits vorhanden")
end if
%>
Hast du da nicht addupdate vergessen??? wenn schon denn schon. So wie du es formuliert hast, legt das Ding mittels addnew einfach nur einen Datensatz an, du gibst aber nicht den Befehl diesen Datensatz mit deinen Werten zu füllen.
also nach der letzten Zuweisung noch rs.adupdate einfügen. Dann sollte es auch nach deiner Version gehen.
Ich bevorzuge die Arbeit mit INSERT,SELECT,UPDATE,DELETE...
bei Recordsets mußt du eine öffnungsmethode angeben, sonst kannst du nur lesen.... adopendynamic. mittels INSERT umgehst du dies geschickt - ist reines SQL-Statement. die Recordsetdinger sind VB-Adaption.
<%rs.MoveFirst
do while Not rs.eof %>
Fehlerquelle: wenn die Abfrage leer ist, kein Ergebnis hat (EOF oder BOF true sind) bekommst du an dieser Stelle einen Fehler. ADODB setzt den Zeiger automatisch auf den ersten Datensatz. Hab ich zu Anfang auch gemacht um sicher zu gehen, bis mir es mal gesagt wurde. :-)
Do until ist logischer (m.E.n)... impliziert "hör auf wenns soweit ist" :-)
Wenn du alle Felder aus T_Adresse darstellen willst (m.o.ohne AnredeID) dann gibt es eine einfachere Form, vorausgesetzt du gehst diesen Weg:
set rs = conn.execute(SQL)
dann kannst du:
<% DO UNTIL rs.EOF or rs.BOF %>
<tr>
<% for each feld in rs.fields %>
<td><%=feld%></td> '<%=feld.name%> ist dann der Befehl für Spaltennamendarstellung
<% NEXT %>
</tr>
<% rs.MoveNext
Loop %>
is doch kürzer??? Oder??
Gruß, Frank
P.S: ich krisch zwar kee Geld für Bücherwerbung abor, das Buch "T.Weltner - ASP lernen und Beherrschen" - ISBN 3-86063-611-1
kannsch dir empfehln.
P.S.2: das war jetzt etwas gesächselt :-)) Ist für Newbies das beste Buch was ich kenne.