if not DataSource1.DateSet.edit then DataSource1.DateSet.edit
if not DataSource.Dateset.State in [deedit,dsinsert] then DataSource.Dateset.Edit;
insert or edit ... ...
各位大大 我使用DataSource1.DateSet.edit以后已经能够解决哪个问题了但是还是不能修改数据源.错误提示是:错误:field 'XXXX' cannot be modified 其中XXXX是我想修改的字段名 怎么办?惨~
你查看字段属性是不是ReadOnly
procedure TMainForm.ToolButton1Click(Sender: TObject); var Mc: String; Tc,SXz,Bl: integer; begin ADOStoredProc1.Parameters.Clear; ADOStoredProc1.ProcedureName:='rep_zy_DoctorTj'; with ADOStoredProc1.Parameters.AddParameter do //追加入参数 begin Name := '@BeginTime'; DataType := ftDateTime; Direction := pdInput; //in Value:=DateTimePicker1.DateTime; end; with ADOStoredProc1.Parameters.AddParameter do //追加入参数 begin Name := '@EndTime'; DataType := ftDateTime; Direction := pdInput; //in Value:=DateTimePicker2.DateTime; end; ADOStoredProc1.Prepared; ADOStoredProc1.ExecProc; ADOStoredProc1.Open; ADOQuery1.SQL.Clear; ADOQuery1.Close; ADOQuery1.SQL.Add('select * from XzBtcbl order by Tcdm'); ADOQuery1.Open; DataSource3.DataSet.Edit; if not DataSource1.DataSet.Eof then begin if not ADOQuery1.Eof then begin Mc := Trim(ADOQuery1.FieldByName('Tcmc').AsString); Bl := ADOQuery1.FieldByName('Tcbl').AsInteger; Sxz := DataSource1.DataSet.FieldByName(Mc).AsInteger; Edit1.Text := Mc; Edit2.Text := IntToStr(Sxz); Tc := SXz*Bl; Edit3.Text := IntToStr(Tc); DataSource3.DataSet.FieldByName(Mc).AsInteger := Tc; ADOQuery1.Next; end; ADOQuery1.First; DataSource1.DataSet.Next; end; DBGrid4.DataSource := DataSource3; DBGrid4.Refresh; end; 这是我的代码啦 不可能是ReadOnly的啊
你可以在出错的地方上加上
if adoQuery.active then
showmessage('1');
DataSource1.DataSet:=adoquery1;
DataSource1.DataSet.Edit;
then DataSource1.DateSet.edit
DataSource.Dateset.Edit;
我使用DataSource1.DateSet.edit以后已经能够解决哪个问题了但是还是不能修改数据源.错误提示是:错误:field 'XXXX' cannot be modified
其中XXXX是我想修改的字段名
怎么办?惨~
var Mc: String;
Tc,SXz,Bl: integer;
begin
ADOStoredProc1.Parameters.Clear;
ADOStoredProc1.ProcedureName:='rep_zy_DoctorTj';
with ADOStoredProc1.Parameters.AddParameter do //追加入参数
begin
Name := '@BeginTime';
DataType := ftDateTime;
Direction := pdInput; //in
Value:=DateTimePicker1.DateTime;
end;
with ADOStoredProc1.Parameters.AddParameter do //追加入参数
begin
Name := '@EndTime';
DataType := ftDateTime;
Direction := pdInput; //in
Value:=DateTimePicker2.DateTime;
end;
ADOStoredProc1.Prepared;
ADOStoredProc1.ExecProc;
ADOStoredProc1.Open;
ADOQuery1.SQL.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Add('select * from XzBtcbl order by Tcdm');
ADOQuery1.Open;
DataSource3.DataSet.Edit;
if not DataSource1.DataSet.Eof then
begin
if not ADOQuery1.Eof then
begin
Mc := Trim(ADOQuery1.FieldByName('Tcmc').AsString);
Bl := ADOQuery1.FieldByName('Tcbl').AsInteger;
Sxz := DataSource1.DataSet.FieldByName(Mc).AsInteger;
Edit1.Text := Mc;
Edit2.Text := IntToStr(Sxz);
Tc := SXz*Bl;
Edit3.Text := IntToStr(Tc);
DataSource3.DataSet.FieldByName(Mc).AsInteger := Tc;
ADOQuery1.Next;
end;
ADOQuery1.First;
DataSource1.DataSet.Next;
end;
DBGrid4.DataSource := DataSource3;
DBGrid4.Refresh;
end;
这是我的代码啦
不可能是ReadOnly的啊
比如:select * from (select * from XzBtcbl order by Tcdm)