Hallo Reinold,
> Hallo Gudula,
> Erst mal sch�n, da� Du Dich jetzt auch an .NET versuchst. Da kommt eine
> harte Zeit auf Dich zu, aber es lohnt sich.
Merk ich schon :-)
Ich h�tte allerdings nicht gedacht, dass dies so ganz anders ist als classic
ASP. Bis man die n�tige Routine hat, ists bestimmt ein langer Weg.
> Ich denke, der Fehler liegt ganz woanders. Kannst du mal Dein
> UpdateStatement posten?
> Klingt eher wie ein Anf�ngerfehler. Connection nicht initialisiert, nicht
> ge�ffnet, etc..
Wobei ich am Script selbst nichts ver�ndert habe, au�er den Pfad zur
Datenbank. Die Scripte stammen alles von der CD des Buches Grundlagen und
Profiwissen von Patrik A. Lorenz. Die Connection m�sste eigentlich stimmen,
denn die Datens�tze werden ja beim Aufruf der Seite angezeigt.
Aber trotzdem hier der Quellcode
<% @Page Language="C#" Debug="true" %>
<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Data.OleDb" %>
<script language="C#" runat=server>
OleDbConnection conn;
void Page_Load(object sender, EventArgs e)
{
conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data Source=c:\inetpub\wwwroot\aspnet_ebook\books.mdb");
conn.Open();
if(!IsPostBack)
BindData();
}
void Page_Unload(object sender, EventArgs e)
{
conn.Close();
}
void BindData()
{
string SQL = "SELECT * FROM Authors";
OleDbCommand cmd = new OleDbCommand(SQL, conn);
dg.DataSource = cmd.ExecuteReader();
DataBind();
}
void dg_Edit(object sender, DataGridCommandEventArgs e)
{
dg.EditItemIndex = e.Item.ItemIndex;
BindData();
}
void dg_Cancel(object sender, DataGridCommandEventArgs e)
{
dg.EditItemIndex = -1;
BindData();
}
void dg_Update(object sender, DataGridCommandEventArgs e)
{
TextBox tb_fn = (TextBox) e.Item.Cells[0].Controls[0];
TextBox tb_ln = (TextBox) e.Item.Cells[1].Controls[0];
string SQL = "UPDATE Authors SET Firstname='"
+ tb_fn.Text + "', Lastname='" + tb_ln.Text
+ "' WHERE ID=" + dg.DataKeys[e.Item.ItemIndex] + ";";
OleDbCommand cmd = new OleDbCommand(SQL, conn);
cmd.ExecuteNonQuery();
dg.EditItemIndex = -1;
BindData();
}
</script>
<form runat="server">
<ASP:DataGrid id="dg" runat="server"
AutoGenerateColumns="false"
DataKeyField="ID"
OnEditCommand="dg_Edit"
OnCancelCommand="dg_Cancel"
OnUpdateCommand="dg_Update">
<Columns>
<ASP:BoundColumn
HeaderText="Vorname"
DataField="Firstname"/>
<ASP:BoundColumn
HeaderText="Nachname"
DataField="Lastname"/>
<ASP:EditCommandColumn
EditText="Bearbeiten"
CancelText="Abbrechen"
UpdateText="�bernehmen"/>
</Columns>
</ASP:DataGrid>
</form>
Und dies ist die ganze Fehlermeldung:
Operation muss eine aktualisierbare Abfrage verwenden.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: Operation muss eine
aktualisierbare Abfrage verwenden.
Source Error:
Line 51: + "' WHERE ID=" + dg.DataKeys[e.Item.ItemIndex] + ";";
Line 52: OleDbCommand cmd = new OleDbCommand(SQL, conn);
Line 53: cmd.ExecuteNonQuery();
Line 54:
Line 55: dg.EditItemIndex = -1;
Source File: c:\inetpub\wwwroot\aspnet_ebook\K08\09\TMP2jszlqdj8.aspx
Line: 53
Stack Trace:
[OleDbException (0x80004005): Operation muss eine aktualisierbare Abfrage
verwenden.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
+41
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS
dbParams, Object& executeResult) +174
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
+92
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior,
Object& executeResult) +65
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior
behavior, String method) +112
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
ASP.TMP2jszlqdj8_aspx.dg_Update(Object sender, DataGridCommandEventArgs
e) in c:\inetpub\wwwroot\aspnet_ebook\K08\09\TMP2jszlqdj8.aspx:53
System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs
e) +109
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs
e) +507
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source,
EventArgs e) +106
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +121
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.Rai
sePostBackEvent(String eventArgument) +115
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +138
System.Web.UI.Page.ProcessRequestMain() +1277
_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net