我提个问题,各位高手帮我看看为什么会出现“数据集不是新建或编辑状态”这个错误。“新建”按钮放在窗体中,数据集组件放在TDataMoudal,TDataMoudal的名字是:DMMain。我把“字段赋值”的代码放在主、从表的DMMain里主、从表数据集的BeforePost事件里。procedure TfmHiddenRecord.fmHRBtnNew26Click(Sender: TObject);
begin
DMMain.dsHiddenMaster.DataSet.Append;
fmHRedCode0.Text := '0000'+ IntToStr(DMMain.dsHiddenMaster.DataSet.RecordCount + 1);
end;procedure TDMMain.DMADOtbHiddenMasterBeforePost(DataSet: TDataSet);
begin
IF DMMain.dsHiddenMaster.DataSet.State = dsInsert Then
begin
隐患编号 := ……;
检查日期 := ……;
被检单位 := ……;
负责人 := ……;
检查人 := ……;
检查单位意见 := ……;
整改期限 := ……;
end;
end;procedure TDMMain.DMADOtbHiddenDetailsBeforePost(DataSet: TDataSet);
var
HiddenLines, MeasureLines: Integer;
begin
IF DMMain.dsHiddenDetails.DataSet.State = dsInsert Then
begin
For HiddenLines := 0 to RichEdit1.Lines.Count - 1 Do
begin
DMMain.dsHiddenDetails.DataSet.Append;
父编号 := ……;
编号 := ……;
隐患内容 := RichEdit1.Lines.Strings[MeasureLines];
For MeasureLines := 0 to RichEdit2.Lines.Count - 1 Do
begin
整改措施 := RichEdit2.Lines.Strings[MeasureLines];
end;
end;
end;procedure TfmHiddenRecord.fmHRBtnSave30Click(Sender: TObject);
begin
IF (主表 = dsInsert) And (从表 = dsInsert) Then
begin
主表.Post;
从表.Post;
end;
end;每当点击“保存”,就会出现“从表数据集不是新建或编辑状态”,为什么?应该怎么改?
begin
DMMain.dsHiddenMaster.DataSet.Append;
fmHRedCode0.Text := '0000'+ IntToStr(DMMain.dsHiddenMaster.DataSet.RecordCount + 1);
end;procedure TDMMain.DMADOtbHiddenMasterBeforePost(DataSet: TDataSet);
begin
IF DMMain.dsHiddenMaster.DataSet.State = dsInsert Then
begin
隐患编号 := ……;
检查日期 := ……;
被检单位 := ……;
负责人 := ……;
检查人 := ……;
检查单位意见 := ……;
整改期限 := ……;
end;
end;procedure TDMMain.DMADOtbHiddenDetailsBeforePost(DataSet: TDataSet);
var
HiddenLines, MeasureLines: Integer;
begin
IF DMMain.dsHiddenDetails.DataSet.State = dsInsert Then
begin
For HiddenLines := 0 to RichEdit1.Lines.Count - 1 Do
begin
DMMain.dsHiddenDetails.DataSet.Append;
父编号 := ……;
编号 := ……;
隐患内容 := RichEdit1.Lines.Strings[MeasureLines];
For MeasureLines := 0 to RichEdit2.Lines.Count - 1 Do
begin
整改措施 := RichEdit2.Lines.Strings[MeasureLines];
end;
end;
end;procedure TfmHiddenRecord.fmHRBtnSave30Click(Sender: TObject);
begin
IF (主表 = dsInsert) And (从表 = dsInsert) Then
begin
主表.Post;
从表.Post;
end;
end;每当点击“保存”,就会出现“从表数据集不是新建或编辑状态”,为什么?应该怎么改?
赋值
post/cancel;post/cancel前可以判断是否是在编辑状态,可以这样
if dataset.state in [dsInsert,dsEdit] then
所以建议不要在BeforePost里使用循环插入,建议在按保存按钮时使用循环插入数据表的方式比较好!
begin
IF (主表 = dsInsert) And (从表 = dsInsert) Then
begin
主表.Post;
从表.Post;
end;
end;——————————————————————————————
问题在这里,从表要先保存,两条语句交换顺序试试:
从表.Post;
主表.Post;
或是在编辑前用TDataSet.Edit方法.