Ik ben weer verder gegaan met mijn applicatie en wil nu gegevens wijzigen in mijn database via het datagrid. Het datagrid heeft een editbutton, deze veranderd in update/cancel na erop te klikken en de volgende procedure wordt aangeroepen wanneer op update geklikt wordt:
Code:
procedure TWebForm1.DataGrid1_UpdateCommand(source: System.Object; e: System.Web.UI.WebControls.DataGridCommandEventArgs);
var
EMPLOYEE: string;
LAST_NAME: string;
cmd: OleDbCommand;
rows: integer;
parm: OleDbParameter;
DA: OleDbDataAdapter;
begin
EMPLOYEE := textbox(e.Item.Cells[2].Controls[0]).text;
LAST_NAME := textbox(e.Item.Cells[3].Controls[0]).text;
str := 'SELECT * FROM EMPLOYEE';
Conn := OleDbConnection.Create(
'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=C:\Temp\DataSet2\DATA;' +
'Extended Properties=dbase III');
DA := OleDbDataAdapter.Create(str, conn);
DT := DataTable.Create('Employees');
DA.Fill(DT);
Session['datatable'] := DT;
cmd := OleDbCommand.Create('UPDATE EMPLOYEE SET LAST_NAME = @LAST_NAME WHERE EMPLOYEE = @EMPLOYEE');
cmd.Parameters.Add('@LAST_NAME', OleDbType.varChar, 30, LAST_NAME);
parm := cmd.Parameters.Add('@EMPLOYEE', OleDbType.Char, 3, EMPLOYEE);
parm.SourceVersion := DataRowVersion.Original;
DA.UpdateCommand := cmd;
conn.open;
cmd.Connection := conn;
da.UpdateCommand.ExecuteNonQuery;
DataGrid1.EditItemIndex := -1;
databind;
end;
Tot aan "DA.UpdateCommand := cmd;" kon ik de Borland Help volgen, maar wat er daarna moet gebeuren om de updatecommand ook daadwerkelijk uit te voeren kon ik nergens vinden. Wat ik nu heb gedaan is executeNonQuery uit laten voeren maar deze geeft de volgende foutmelding:
Code:
Exception Details: System.Data.OleDb.OleDbException: Parameter @LAST_NAME heeft geen standaardwaarde.
Ik kan nergens iets vinden over een standaard waarde bij de parameters.
Iemand een idee wat ik fout doe?
Bookmarks